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

security - 在污点传播程序中识别污点源

在污点分析中,污点源是可能产生不可信或外部输入的程序位置或语句。

我的目标:使用动态分析(最好)识别程序的所有外部用户输入,例如 cmdline-input 、文件读取、环境和网络变量并传播污点。

我阅读了本教程-http ://shell-storm.org/blog/Taint-analysis-and-pattern-matching-with-Pin/,它使用英特尔 PIN 拦截读取系统调用并传播污点。我想扩展它以包括上面提到的各种外部输入。(首先,对于 C-scanf,gets,fopen 等)

是否有任何动态分析工具可以帮助我识别通用外部输入?任何其他具有特定目标的方法也值得赞赏。谢谢

0 投票
1 回答
158 浏览

intel-pin - 异常处理中的引脚内存访问类型

我正在使用 Pin 实现异常处理功能。在我的异常处理代码中,我特别搜索内存访问错误,比如内存读取错误和内存写入错误。我在下面写了一些代码:

真正让我困惑的是,即使是下面的典型内存读取访问错误:

我上面的FAULTY_ACCESS_TYPE代码仍然是UNKNOWN. 请注意,根据它的定义,我想访问类型应该是FAULTY_ACCESS_READ.

我在这里做错了吗?

0 投票
0 回答
283 浏览

intel-pin - 使用 Pin 在客户端进程的堆上分配内存

我是 Pin 的新手,基本上,我想使用 Pintool 来初始化一个内存区域,该区域可以在运行时稍后由用户进程读/写。

我想在堆上制作内存区域,因为我要初始化的数据结构比较大。阅读 Pin 手册后,我知道 Pinsafecopy可以用于内存复制。

但是,我不知道如何在堆上分配内存,附加的客户端进程应该可以访问这些内存。

我够清楚吗?谁能给我一些帮助?谢谢!

0 投票
1 回答
175 浏览

intel-pin - 在 PinTool 中检测死循环

我正在编写一个 PinTool,它可以操纵某些寄存器/内存值。然而,在操纵之后,我现在面临的一个挑战是deadloop.

deadloop特别是,由于某些寄存器值的频繁操作,在执行跟踪中创建确实很常见。我正在考虑检测这种情况,并终止执行。

deadloop所以这是我的问题,在 PinTool中检测 a 的好习惯是什么?我可以想出一些幼稚的解决方案,比如记录执行的指令,如果某条指令已经执行了很多次,就终止执行。

有人可以帮我解决这个问题吗?谢谢你。

0 投票
1 回答
153 浏览

intel-pin - 在回调函数内的任意位置恢复执行

我正在使用Pin动态分析。

在我对 64 位 x86 二进制代码的动态分析任务中,我想在修复信号处理回调中的某些内存访问错误后,在任意程序位置(例如,当前执行函数的第二条指令)恢复执行。

它会是这样的:

但是,我得到了这个异常:E: PIN_ExecuteAt() 不能从回调中调用。

我知道我可以通过在信号处理函数结束时返回 false来恢复“当前指令”的执行,但基本上我可以在任意位置恢复吗?

我清楚了吗?感谢您的帮助!

0 投票
0 回答
136 浏览

c++ - PIN 未捕获 getpid() 系统调用

在二进制文件上使用 PIN API 中提供的名为strace.cpp的代码示例应该提供一个输出文件,其中包含使用的所有系统调用以及一些其他信息。我用作测试的二进制文件是一个简单的 C 二进制文件,其中包含一个getpid()系统调用,这是第 20 个系统调用。源代码如下所示:

PIN 工具完成后,工作目录中有一个名为strace.out的输出文件,其中包含所有系统调用信息。该文件包含大约 28 个不同的系统调用,但没有一个被标记为 20 或getpid()系统调用。系统调用号是每行冒号后面的第一个数字。

0 投票
2 回答
1284 浏览

c++ - 使用依赖项编译 PIN 工具

正如标题所述,我正在寻找一种方法来编译我的 PIN 工具并附带一些依赖项。因此,例如,如果我#include "somefile.h"在我的 PIN 工具中生成一些目标文件g++ -c somefile.cpp,我如何链接我的目标文件以使用我的 PIN 工具进行编译,以便我可以在我的 PIN 工具中使用它的功能?

0 投票
3 回答
208 浏览

c++ - 判断指令是否有间接内存操作数

查看 PIN 的检查 API 页面INS_IsLea(),如果当前指令是非指令,则调用该方法返回 true LEA。这很有用,但我需要确定指令操作数之一是否是间接引用。例如:

我希望能够确定第二个操作数实际上是间接引用,但似乎没有可用的方法。

0 投票
1 回答
932 浏览

intel-pin - intel pin工具中图片的含义

我是 Intel pin tool 的新手,最近开始研究 pin tool。在教程中,它描述了 pin 工具的模式:

但是,有时查看与跟踪不同的粒度会很有用。为此,Pin 提供了两种附加模式:图像和常规检测。这些模式是通过“缓存”检测请求来实现的,因此会产生空间开销,这些模式也称为提前检测。

我想知道“图像”是什么意思。

谢谢你。

0 投票
1 回答
406 浏览

gdb - 找不到 pintool 的调试符号

我已按照此处的指南进行操作:debugging pintool guide,但我无法让 GDB 找到我的 pintool 的调试符号。首先我用调试信息编译了我的 pintool

在两个不同的终端窗口中,我执行了以下操作:

在第一个窗口中:

在第二个窗口中:

问题是在第二个窗口的最后一行,它说没有找到调试符号。