使用ptrace进行系统调用跟踪

我编写了一个程序来列出命令执行的所有系统调用(比如/ bin / ls)。 现在我要做的是找到所有系统调用参数,环境变量,可以传递给它的命令行参数

示例:如果我打开文件。 系统调用sys_access会打开文件吗? 但是如何获得这些价值呢?
想要打开,读取,写入,关闭等系统调用。

根据我的研究,这些必须在寄存器中(ebx – edx)如果是这样,这些寄存器值表示什么? 我有这个链接 。
但我真的无法从那里得到太多。 此外,任何进一步的参考将是非常有帮助的。

(上面的修改后的评论forms(所以你可以接受)):

可以在Linux内核头文件syscalls.h中查找详细的系统调用参数。 在上面的例子中,sys_access(x86上的#33)只有两个参数:

  • 第一个是指向filename的指针,因此您的文件名存储在地址0x4c4d8e
  • 第二个参数是文件模式(参见模式标志定义)
  • 由于此系统调用没有第三个参数,因此edx不相关且包含一些未定义的值

此系统调用的返回值为-2(ENOENT,在errno-base.h中定义),表示错误(没有此类文件或目录)。

另请注意(请参阅上面的Basile的评论)您正在复制strace实用程序的function。