问题标签 [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 回答
231 浏览

debugging - GDB 不会在对 PIN 捕获的地址进行读取访问时中断

我已经捕获了由英特尔 PIN 运行的程序的读取内存跟踪(即所有读取访问的地址),ASLR已关闭。我可以捕捉它几次,痕迹仍然完全一样。

然后我从跟踪中获取一个地址(我感兴趣的特定地址),在 GDB 中设置一个观察点,rwatch *0x7fffe309e643但 GDB 没有注意到访问。我在进行跟踪的同一终端中执行此操作,因此它应该访问相同的地址;当我再次捕获它时,痕迹仍然非常相同。

你有什么想法或提示为什么 GDB 没有抓住它?

我必须注意,访问很可能发生在从 Boost 序列化加载的(C++)结构中,并且代码已经用-g3 -O1标志编译(-O1由于其他原因确实很重要,但一个最小的例子向我展示了 GDB 正确地中断了-O1) .

更新:

正如建议的那样,我尝试了 PIN 调试器(它实际上利用了 GDB),但观察点存在一些问题。为了提出这个问题,我做了一个最小的例子。

我使用 PIN 获得了读取内存跟踪,并选择0x7fffffffd89f(或类似)作为感兴趣的地址。然后我在并行终端中启动了 PIN 调试器和 GDB,并将 GDB 连接到 PIN((gdb) target remote :57946如 PIN 所建议的那样)。在 GDB 中,我设置了观察点(gdb) rwatch *0x7fffffffd89f并开始执行,但我得到了

即使我只插入了一个观察点。我还尝试显式禁用硬件断点,set can-use-hw-watchpoints 0但它运行了一个小时,没有结果,也没有处理器负载,所以我把它杀了。

当 GDB 连接到 PIN 调试器时,还有其他方法如何在特定地址设置功能观察点吗?请注意,独立 GDB 没有这样的问题。

我使用 GDB 7.7.1、PIN 2.14-71313 和 GCC 4.4.7,运行 Ubuntu 14.04。

原来的问题可能会在那时得到解决。

0 投票
1 回答
255 浏览

c++ - 带有 PinPlay RTN_InsertCall 回调的 Intel Pin 在重放时未执行

我将 Intel 的 Pin API 与 Pinplay 重放框架一起使用,并且在执行重放时无法执行以下操作:

这在功能上类似于 Pin 的 SimpleExamples/malloctrace.cpp 示例程序。

正在重播的弹球是通过以下方式创建的:

并使用以下方式重播:

调试表明Routine()正在适当地调用它,但从未执行插入的调用。

我的操作系统是 RHEL。

0 投票
0 回答
482 浏览

assembly - Intel Xed:抑制反汇编输出

我目前正在使用英特尔 XED(英特尔的编码器/解码器)在英特尔的 Pin 工具(二进制重写器)中解码和编码应用程序的指令。当我在语法模式设置为 XED 的 Pin 中输出反汇编时,我得到的输出超出了我的需要。

例子:

TEST DISP_WIDTH:8, EASZ:2, EOSZ:2, HAS_MODRM:1, HSW, IMM_WIDTH:8, IMM0SIGNED, IMM0:0X1

我真的很想要 XED 格式的操作数后跟操作码,以便 XED 编码器可以读取反汇编并对其进行编码。有什么办法可以抑制输出吗?还是以相对无痛的方式分别获取操作码和操作数?

任何帮助将不胜感激。

干杯,

丹尼

0 投票
0 回答
434 浏览

android - 适用于 Android 5 的固定工具

Intel 的 Pin 工具是否支持 Android 版本 5 或 6?文档介绍了如何为 Android 安装 PIN 工具。我尝试在 android 版本 5 和 6 上安装 Pin 工具。

在这两个版本中,当我尝试执行 pin 工具时,都会出现以下错误:

0 投票
2 回答
662 浏览

linux - 在 linux 中分析反调试检查

我的主要要求是对提到的反调试检查程序进行两次分析(一次在存在调试器的情况下,另一个在没有调试器的情况下)以收集一些信息以在运行时进行分析(假设只有二进制文件可用)

目前,我为此编写了一个英特尔 PIN 工具,但由于 PIN 的工作方式并且总是执行“一切顺利!没有调试!'。

所以,我的问题:

我可以做些什么(附加调试器并运行 pin 工具或其他东西)来使用我的 PIN 工具分析两种类型的运行,或者在这种情况下任何其他类型的分析(例如二进制翻译等)对我有帮助吗?

我想收集有关指令的特定信息,而不仅仅是调用图等,因此想要一些类似于 PIN 的 C++ 程序员接口的功能。

一个详细的答案会很棒,谢谢。

0 投票
3 回答
2427 浏览

c - 使用 INTEL PIN 在 64 位系统上配置 32 位应用程序

我使用-m32 gcc选项编译了一个 C 程序。我想使用 Pin 工具来分析这个程序。我的内核是 64 位的。

我努力了 :-

1)pin -t64 <64-bit toolname> -t <32-bit toolname> -- <application>

2)pin -t <32-bit toolname> -- <application>

3)pin -t <64-bit toolname> -- <application>

对于 32 位和 64 位架构编译不同的工具,我有相同的 .cpp 工具文件。

案例 3 调用错误“无法加载..检查架构类型”。情况 1 和 2,命令成功但产生了一些意外的输出,例如写入文件的图像名称在这种情况下为空,但在使用 64 位应用程序执行时包含正确的结果。为这种情况设置 pin 工具的正确方法是什么?

0 投票
1 回答
720 浏览

ubuntu-14.04 - Intel Pin Tool 权限错误

以下工作正常,我从我的 ubuntu 14.04 系统上的 'ls' 程序中获取了 edgecnt ..

但是在我的节点应用程序上使用它时,我收到了权限被拒绝错误:

我在网上搜索了所有关于此的内容,但没有找到任何解决方案。我尝试以 root 身份运行节点应用程序和 pin 工具,但它没有解决问题。还使用pid运行:

我试图更改 /proc/ 文件夹的权限,但即使是 root 也不允许该操作。

任何想法?

0 投票
1 回答
56 浏览

intel - 从内存读取大小推断类型信息

我正在使用 PIN 来检测我的应用程序二进制文件并生成应用程序生成的地址列表(更具体地说是内存读取)。我有一个检测例程,它将 IARG_MEMORYREAD_SIZE、IARG_MEMORYREAD_EA 作为参数传递。但是,我想根据正在读取的内存大小来推断应用程序变量的类型信息。

例如,如果 PIN 观察到 4 个字节的内存读取,我如何判断正在访问什么类型的数据。它是 int/float 吗?同样,对于 8 字节数据,我怎么知道数据是双变量还是指针类型变量。

0 投票
1 回答
761 浏览

c++ - 在 Intel Pin 中使用 IARG_MEMORYWRITE_SIZE 和 IARG_MEMORYREAD_SIZE 参数

我正在尝试使用 Intel Pin 来调查可执行文件的内存活动。我想修改 Pin 套件中的 pinatrace 示例。我尝试使用 IARG_MEMORYWRITE_SIZE/IARG_MEMORYREAD_SIZE 参数。这是源代码。

编译后我尝试运行它,但收到此错误。如果我删除此参数并编辑 RecordMemWrite/RecordMemRead 函数 - 一切正常。

有人知道我做错了什么吗?

0 投票
1 回答
1904 浏览

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

我对使用 Intel Pin 工具进行代码检测比较陌生,我正在尝试研究分支预测。具体来说,我想生成所有分支、它们的分支目标以及它们是否被采用的列表。我知道 SimpleExamples 中有用于生成内存地址跟踪的 pintools,例如“pinatrace.cpp”工具,但我没有看到任何适合我列出分支的需要。

我可以使用示例中的某处现有的 pintool,还是需要编写一个新的 pintool?

我在 Linux 计算机上使用 pin-2.14。

谢谢!