英特尔 PIN 工具:获取 EFLAGS 值的踪迹

Posted

技术标签:

【中文标题】英特尔 PIN 工具:获取 EFLAGS 值的踪迹【英文标题】:Intel PIN tool: Get a trace of EFLAGS values 【发布时间】:2019-03-03 15:28:30 【问题描述】:

我正在尝试使用英特尔 PIN 工具获取程序的完整动态跟踪。我的跟踪将有:指令地址、指令、操作数、EFLAGS、OPCODES。

我已经设法使用套件中提供的 xed-interface.H 获得前三个。现在,我想在每条指令中获取 EFLAGS 状态。另外,我想在同一个文件中获取操作码。

我应该使用哪个 API 来实现这一点?

【问题讨论】:

好的,我在手册中找到了一些内容:在 LEVEL_CORE 命名空间参考页面中,提到了枚举类型 LEVEL_CORE::FLAGS。虽然我不知道如何在我的 pintool 中使用它。 【参考方案1】:

将 IARG_CONST_CONTEXT 添加到检测例程中 INS_InsertCall() 调用的参数列表中。 然后可以调用 PIN_GetContextRegval(ctx, REG_EFLAGS, &pin_register) 来获取 pin_register 中 eflags 的值。

【讨论】:

如果这会影响您的表现,请查看可用于获得相同效果的部分上下文。

以上是关于英特尔 PIN 工具:获取 EFLAGS 值的踪迹的主要内容,如果未能解决你的问题,请参考以下文章

英特尔RFLAGS和POPFQ PUSHFQ?

在英特尔 PIN 中跟踪本机指令 [重复]

如何使用 Intel Pin 工具生成分支列表?

英特尔 PIN 例程地址检索:Linux 与 Windows

在为gdb打开套接字之前,Pin进程崩溃

目标代码重定位和 Intel Pin 交互