我编写了一个程序来列出命令执行的所有系统调用(比如/ bin / ls)。现在我要做的是找到所有系统调用参数,环境变量,可以传递给它的命令行参数
示例:如果我打开文件。系统调用sys_access会打开文件吗?但是如何获得这些价值呢?
想要对打开,读取,写入,关闭等系统调用执行此操作。
根据我的研究,这些必须在寄存器中(ebx - edx)如果是这样,这些寄存器值是什么意思?
我得到了这个link。
但我真的无法从那里得到多少。此外,对此的任何进一步参考将是非常有帮助的。
答案 0 :(得分:0)
(上面的修改后的评论形式(所以你可以接受)):
可以在Linux内核头syscalls.h中查找详细的系统调用参数。 在上面的例子中,sys_access(x86上的#33)只有两个参数:
此系统调用的返回值为-2(ENOENT,在errno-base.h中定义),表示错误(没有此类文件或目录)。
另请注意(请参阅上面的Basile评论)您正在复制strace实用程序的功能。