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