问题标签 [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.
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 生成的数据写入平面文件。
assembly - 了解 Qword ptr 表示的地址位置?
我遇到了以下汇编指令and rax, qword ptr [0xff5ff098]
我想知道将在以下指令中访问的内存地址是什么。内存地址0xff5ff098
是零扩展还是最高有效位扩展?
在Intel Pin
工具中,apiIARG_MEMORYREAD_EA
将其扩展为 1,即它给出了以下地址0xffffffffff5ff098
。这个地址是一个可能的地址吗?
我正在使用 64 位机器。
x86-64 - 英特尔 PIN 二进制检测工具中的 16 个通用寄存器如何表示
我知道第一个 8 个通用寄存器如何在 PIN 中表示,例如 REG_GAX、REG_GBX 等。但是我似乎无法在用户手册中找到寄存器 r8 到 r15 是如何表示的。
intel-pin - 如何识别来自主可执行文件的 malloc 调用
我有一个调用 malloc 的简单程序,我正在尝试开发一个 pintool 来捕获从主可执行文件对 malloc 的直接调用。
使用 SimpleExamples 中的 malloctrace.cpp(随 SDK 提供):
我正在捕获许多 malloc 调用,无论是面向我自己的代码还是面向它使用的库。
使用 objdump,我看到了对 malloc 的调用:
以 malloc@plt 开头。浏览我的主要可执行文件中的例程,我确实看到了一个 .plt 例程,但我无法判断它是否属于 malloc 或任何其他外部函数。
感谢您的帮助。
elf - 部分地址超出图像区域 - Intel Pin
我开发了一个简单的 pintool 来列出程序主要可执行映像的所有部分(迭代其所有部分),以及使用IMG_HighAddress
and的上下限IMG_LowAddress
;根据 Pin 的说法,这些返回了图像的明确限制。
令我惊讶的是,这些部分超出了这些函数报告的上下限。我做错了什么,还是这些功能不准确?
我的图像加载功能:
在 /bin/ls 上运行它的结果:
intel-pin - 外部存储器跟踪 PIN 工具
我尝试使用 PIN 工具来捕获内存跟踪。但是,PIN 网站表示地址包括所有内存读取和写入。
我想捕获程序生成的外部存储器地址。这些地址是在高速缓存访问后生成的,因此对应于 DRAM 中的物理地址。
你能告诉我是否可以捕获外部存储器地址跟踪吗?我想知道这是否已经可用,如果是,请指出来源。
我看到了这个问题:Getting physical address in pin tool
它说关于从虚拟到物理的转换。但是,我想在访问缓存后获取地址跟踪。
memory - 使用 DBI 工具对程序中所有变量的内存跟踪
我使用 intel pin 作为我的主要 DBI 工具。我很想知道如何跟踪程序中分配的所有变量。
假设,我们在 C 中有以下代码段:
我想知道如何在我的程序中跟踪特定变量/内存引用。例如在上面的代码中,我喜欢用 Intel Pin 在我的程序中跟踪变量“g”,它是如何做到的?
对于动态分配的变量,我正在监视 malloc/free 调用并跟踪它们的地址,但对于静态变量我不知道。
另一件事是,对于动态分配的变量,我喜欢在整个程序中跟踪它们,假设在上面的代码中,我想监视(ptr_two)变量在我的程序中从开始到结束的变化和修改。
如果有人对此有一些想法,可以在这里分享它,英特尔 Pin 中的示例代码很受欢迎。
谢谢你们 。
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。有人可以给我一些建议吗?
ubuntu - Ubuntu 17.04 的 Pin 工具分段错误
我已经使用它自己的一个用于 ubuntu 12.04 的示例工具 inscount 成功运行了 pin。但是对于 ubuntu 17.04 版本,我面临不同的情况。这里显示了什么:
任何猜测可能是什么原因?