gpt4 book ai didi

c - 使用 ptrace 跟踪系统调用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:39:17 24 4
gpt4 key购买 nike

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

Example: If I open a file. The system call sys_access will open the file right ? But how to get these values?
Want to do this for system calls like open, read, write, close.

根据我的研究,这些必须在寄存器中 (ebx - edx) 如果是这样,这些寄存器值表示什么?我得到这个link .
但我真的不能从那里得到太多。此外,对此的任何进一步引用都会很有帮助。

最佳答案

(修改了上面的评论形式(所以你可以接受)):

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

  • 首先是指向文件名的指针,所以你的文件名存储在地址0x4c4d8e
  • 第二个参数是文件模式(见模式标志定义)
  • 因为这个系统调用没有第三个参数,edx 不相关并且包含一些未定义的值

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

另请注意(参见上面 Basile 的评论)您正在复制 strace 的功能效用。

关于c - 使用 ptrace 跟踪系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9769350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com