gpt4 book ai didi

c - 我怎样才能获得 Linux 系统调用的列表和它们自动采用的参数数量?

转载 作者:太空狗 更新时间:2023-10-29 16:29:33 59 4
gpt4 key购买 nike

我正在为 radare2 调试器编写 Linux 系统调用映射。这意味着提供一个巨大的静态数组映射系统调用编号到一个系统调用名称名称和它需要的参数数量。这对于 OpenBSD 来说很容易,因为系统调用编号在 sys/syscall.h 中定义,并且在上面的注释中每个都是参数的数量。只需编写一个脚本来解析它并抛出数组的 C 代码。

然而,在 Linux 上,我们没有这种奢侈。从内核头文件中获取系统调用号很容易,但是我应该如何获取 args 的数量呢?我唯一的想法是:

1) 手动输入。对于每个拱门(它们在 Linux 中的拱门之间有所不同)。所有 300 多该死的东西。不行!

2) 解析手册页。

3) 编写一个脚本,尝试用 0, 1, 2... args 调用每个系统调用,直到程序构建。不适用于可变参数,但系统调用支持吗?

必须有更好的方法。请帮忙!

最佳答案

strace ( home page ) 有包含所有这些东西的表格(参见 linux/<platform>/syscallent.h )。源代码可在 GitHub/strace 中找到和 GitLab/strace .例如,x86_64 架构中的系统调用列表在 this link 中。 .

关于c - 我怎样才能获得 Linux 系统调用的列表和它们自动采用的参数数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604007/

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