2

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

struct {
  unsigned int pid;
  char data [16];
}test;

void foo(){
  printf("In Foo!\n");
  char *p = "hello world";
  test.pid = getpid();
  strcpy(test.data,p);  
}

int main()
{
  printf("Hello World!\n");
  foo();
  return 0;
}

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

4

0 回答 0