问题标签 [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 投票
1 回答
619 浏览

c++ - Pin Like Tool 用于在编译时注入检测代码

您可能知道,PIN是一种动态二进制检测工具。例如,通过使用 Pin,我可以检测应用程序中的每个加载和存储。我想知道是否有类似的工具在编译时注入代码(使用更高级别的信息,不需要我们编写 LLVM 通道),而不是像 Pin 那样在运行时注入代码。我对这种用于 LLVM 的工具特别感兴趣。

0 投票
1 回答
2741 浏览

c++ - Intel pin:检测运行过程

我创建了一个简单的 pin 工具,可以转储任何 win32 CreateFileW 调用。它工作正常,但是当我尝试将其附加到已经运行的进程时,该进程只是终止。尝试了几个应用程序(记事本、写字板、Internet Explorer),结果相同。这是我使用的命令:

我有一个提示可以尝试像这样关闭多线程:

但它没有帮助。还尝试了另一个开箱即用的 pintool,但也没有用,所以问题不在我的 pintool 上。有任何想法吗?

提前致谢!

0 投票
2 回答
2138 浏览

c++ - 用于跟踪 CreateFile 调用的 Pin 工具

我制作了一个 pin 工具来转储 CreatFile win32 调用(在我的情况下为 CreateFileW)及其返回值。它看起来像这样:

它给出了有趣的结果。例如,在一个只打开一个现有文件并且什么都不做的小程序上,它给出:

异常多。1.) 为什么有两个实际调用?2.)如果我没记错的话,CreateFile 永远不应该返回 0。 3.)第二次调用后,它返回两次(?)

我还尝试检测一个简单的 C++ 程序,它直接调用 CreateFileW一次,结果:

我试图打开的文件不存在,所以返回值(-1 == INVALID_HANDLE_VALUE)至少是正确的。

有任何想法吗?提前致谢!

0 投票
1 回答
561 浏览

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

我正在开发一个多处理器架构模拟器,该模拟器使用 Intel Pin 来检测 C++ 可执行二进制文件并报告有趣的事件(例如,一些函数调用、线程创建/完成等)。基本上,我在加载图像时构建所有指令的指令解码缓存,然后分析指令执行。因此,图像加载时的指令地址与运行时的指令地址相同(或至少同步更新)是很重要的。

英特尔 Pin API(例如 IMG_AddInstrumentFunction)使我能够获取有关已加载图像(可执行文件和共享库)的信息,例如入口点、低/高地址等。

但是,我注意到插桩程序在不属于任何加载图像的地址处执行指令。通过检查,我怀疑动态加载程序(64 位 Centos 6.3上的图像 /lib64/ld-linux-x86-64.so.2 )正在通过调用例程_dl_relocate_object重新定位内存中的主要可执行文件。

我理解对可重定位代码和所有这些东西的需求。我只需要关于这些重定位如何/何时发生(在加载时和运行时)的良好文档(或只是简短描述/建议)的指针,以便我可以在我的架构模拟器中考虑它们。换句话说,用于实现它的机制(我需要检测的库函数、条件或随机化(如果有的话)、可用于抑制重定位的 g++ 编译器开关等)。PS:我只针对 x86/x86_64 架构

0 投票
1 回答
976 浏览

debugging - 为什么 Intel Pin 无法识别某些已执行指令的映像/例程?

我正在创建一个大型 pintool,我有两个问题:


该工具(以下仅删减到相关部分)有时无法识别特定执行指令的图像/例程。有人知道什么时候/为什么会发生吗?


该工具(在检测 Barnes-Hut 基准测试时)在运行一段时间后总是以内存不足 (OOM) 错误终止(尽管基准测试在独立运行时成功完成)。使用哪些工具来调试/跟踪 Pin-instrumented 应用程序的 OOM 错误?

0 投票
1 回答
327 浏览

c++ - 什么是 PC 物化?

我正在使用一种名为Intel Pin的二进制检测工具。然而,当我检查 Pin 附带的部分示例时,我遇到了这个奇怪的术语。以下是相关部分:

此方法确定指令实际执行的操作(直接调用、间接调用、尾调用、返回和未知的 Pc Materialization)。

这是完整的代码

那么这到底是什么意思呢?我试过谷歌搜索 - 没有相关结果。

0 投票
2 回答
3056 浏览

linux - 如何使用 intel pin 工具计算在 linux 上执行的指令?

大家,我是这里的新手,也是 linux 的新手
cd source/tools/SimpleExamples make obj-ia32/opcodemix.so 系统告诉我 make: * No rule to make target `obi-ia32/opcodemix.so'。停止。我也尝试了 obj-intel64,没有任何改变。谁能告诉我这里发生了什么,我真的对这个别针的东西感到困惑。

0 投票
1 回答
528 浏览

c++ - Pin Binary Instrumentation:如何精确识别函数名称。

有人用过 PIN 吗?您将如何准确识别函数(在方法重载的情况下)?我可以看到 PIN 提供了 RTN_Name() 函数,它会返回函数名,但肯定还不够……那你还用什么?将 RTN_Address() 与 RT_Name() 结合使用就足够了吗?

非常感谢您的帮助。

0 投票
1 回答
554 浏览

c++ - PIN - 获取正在检测的二进制文件的进程 ID?

嗨,有谁知道如何获取由 PIN 检测的二进制文件的进程 ID?例如,如果我有类似的东西:

如何在我尝试编写的 PINTool 中获取“somebinary”的进程 ID。我检查了文档,但似乎没有任何我可以使用的东西,或者我忽略了一些东西?谢谢。

0 投票
2 回答
2626 浏览

c++ - 在 Pin 工具中调用函数时出现分段错误

我目前正在构建一个 Pin 工具,该工具根据此博客文章检测来自 Linux 应用程序的未初始化读取。
也可以从博客中看到作者的代码。

因为这个是针对 Windows 的,所以我尝试创建一个与 Linux 兼容的。但是当我使用应用程序执行我的 Pin 工具时,会发生分段错误。奇怪的是,当调用函数时发生故障(当 pin 工具调用函数taint_get中的taint_define函数时发生故障),而不是因为未初始化的堆指针的访问或一般分段故障的此类点。

分段错误的点如下所示:

回调函数如下所示:

输出如下所示:

日志在这里。

我目前正在研究 Fedora 核心 17 x86-64、gcc 4.7.2 和 Pin 2.12-58423。
而且,我的 pin 工具代码附在这里