问题标签 [intel-pin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
394 浏览

c++ - 使用带有 Intel Pin 的 boost 库

我正在尝试将 Boost 1.60.0 库与 Intel Pin 2.14-71313-msvc12-windows 一起使用。以下代码是我尝试的简单实现:

当我构建上述代码时,Visual Studio 找不到 boost_network::boost::asio::ip 并不断给出错误说 asio::ip 不存在。我之前自己发布过这个问题: Sending data from a boost asio client and after using the provided solution in the same workspace,代码运行良好,我能够通过网络进行通信。我不确定这里出了什么问题。由于某种原因,使用不同的命名空间似乎行不通,因为它说 boost 必须在默认命名空间中。但是,如果我不添加命名空间,在这种情况下,该行, KNOB<BOOL> KnobPrintArgs(KNOB_MODE_WRITEONCE, "pintool", "a", "0", "print call arguments "); 抛出一个错误,说 BOOL 不明确。请建议在这种情况下应该是一个可行的解决方案。我正在使用 Visual Studio 2013。只有 Pin 的同一段代码也可以在没有网络部分的情况下工作,我可以将 Pin 生成的数据写入平面文件。

0 投票
1 回答
984 浏览

assembly - 了解 Qword ptr 表示的地址位置?

我遇到了以下汇编指令and rax, qword ptr [0xff5ff098]

我想知道将在以下指令中访问的内存地址是什么。内存地址0xff5ff098是零扩展还是最高有效位扩展?

Intel Pin工具中,apiIARG_MEMORYREAD_EA将其扩展为 1,即它给出了以下地址0xffffffffff5ff098。这个地址是一个可能的地址吗?

我正在使用 64 位机器。

0 投票
1 回答
231 浏览

x86-64 - 英特尔 PIN 二进制检测工具中的 16 个通用寄存器如何表示

我知道第一个 8 个通用寄存器如何在 PIN 中表示,例如 REG_GAX、REG_GBX 等。但是我似乎无法在用户手册中找到寄存器 r8 到 r15 是如何表示的。

0 投票
1 回答
712 浏览

intel-pin - 如何识别来自主可执行文件的 malloc 调用

我有一个调用 malloc 的简单程序,我正在尝试开发一个 pintool 来捕获从主可执行文件对 malloc 的直接调用。

使用 SimpleExamples 中的 malloctrace.cpp(随 SDK 提供):

我正在捕获许多 malloc 调用,无论是面向我自己的代码还是面向它使用的库。

使用 objdump,我看到了对 malloc 的调用:

以 malloc@plt 开头。浏览我的主要可执行文件中的例程,我确实看到了一个 .plt 例程,但我无法判断它是否属于 malloc 或任何其他外部函数。

感谢您的帮助。

0 投票
1 回答
260 浏览

elf - 部分地址超出图像区域 - Intel Pin

我开发了一个简单的 pintool 来列出程序主要可执行映像的所有部分(迭代其所有部分),以及使用IMG_HighAddressand的上下限IMG_LowAddress;根据 Pin 的说法,这些返回了图像的明确限制。

令我惊讶的是,这些部分超出了这些函数报告的上下限。我做错了什么,还是这些功能不准确?

我的图像加载功能:

在 /bin/ls 上运行它的结果:

0 投票
1 回答
1189 浏览

intel-pin - 外部存储器跟踪 PIN 工具

我尝试使用 PIN 工具来捕获内存跟踪。但是,PIN 网站表示地址包括所有内存读取和写入。

我想捕获程序生成的外部存储器地址。这些地址是在高速缓存访​​问后生成的,因此对应于 DRAM 中的物理地址。

你能告诉我是否可以捕获外部存储器地址跟踪吗?我想知道这是否已经可用,如果是,请指出来源。

我看到了这个问题:Getting physical address in pin tool

它说关于从虚拟到物理的转换。但是,我想在访问缓存后获取地址跟踪。

0 投票
1 回答
756 浏览

c++ - 拦截 COM dllhost.exe 调用

我正在尝试使用Intel Pin检测 COM DLL 。不幸的是,英特尔 Pin 设计用于检测独立进程,而不是 DLL。

所以我的问题是 - 是否可以影响 COM 用于启动 inproc 服务器主机 (dllhost.exe) 的命令行,以便我可以使用 dllhost.exe 作为参数调用 pin.exe?还是将 dllhost.exe 的调用硬编码到 Windows 中,这意味着我的想法是徒劳的?

0 投票
1 回答
244 浏览

memory - 使用 DBI 工具对程序中所有变量的内存跟踪

我使用 intel pin 作为我的主要 DBI 工具。我很想知道如何跟踪程序中分配的所有变量。

假设,我们在 C 中有以下代码段:

我想知道如何在我的程序中跟踪特定变量/内存引用。例如在上面的代码中,我喜欢用 Intel Pin 在我的程序中跟踪变量“g”,它是如何做到的?

对于动态分配的变量,我正在监视 malloc/free 调用并跟踪它们的地址,但对于静态变量我不知道。

另一件事是,对于动态分配的变量,我喜欢在整个程序中跟踪它们,假设在上面的代码中,我想监视(ptr_two)变量在我的程序中从开始到结束的变化和修改。

如果有人对此有一些想法,可以在这里分享它,英特尔 Pin 中的示例代码很受欢迎。

谢谢你们 。

0 投票
1 回答
95 浏览

intel-pin - Intel Pin PIN_GetPid 得到错误的值

我编写了一个 pintool 来转储带有 pid、线程 id 和地址的每条指令。它存储在Github gist

但是,在我运行一个示例之后,第一条指令的 pid 与 main 函数中的 pid 相同,与第二条或以下指令不同。输出如下:

cerr Pid 7292========= cout 7292-0-b777c0d0-mov eax, esp 1c7c-0-b777c0d2-call 0xb777f790 1c7c-0-b777f790-push ebp 1c7c-0-b777f791-mov ebp, esp ......

我不知道为什么会发生。也许我以错误的方式使用了 PIN_GetPid API。有人可以给我一些建议吗?

0 投票
1 回答
2197 浏览

ubuntu - Ubuntu 17.04 的 Pin 工具分段错误

我已经使用它自己的一个用于 ubuntu 12.04 的示例工具 inscount 成功运行了 pin。但是对于 ubuntu 17.04 版本,我面临不同的情况。这里显示了什么:

任何猜测可能是什么原因?