首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获得Linux系统调用的列表和它们自动采用的参数数量?

如何获得Linux系统调用的列表和它们自动采用的参数数量?
EN

Stack Overflow用户
提问于 2011-07-07 06:53:11
回答 6查看 37K关注 0票数 19

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

然而,在linux上,我们没有这种奢侈。从内核头文件中获取syscall数很容易,但是如何获取args数呢?我唯一的想法是:

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

2)解析手册页。

3)编写一个脚本,尝试使用0,1,2来调用每个系统调用...参数,直到程序生成。不适用于varargs,但是syscall支持它吗?

一定有更好的方法。请帮帮我!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-07-07 07:18:05

strace (home page)提供了包含所有这些内容的表(请参阅linux/<platform>/syscallent.h)。源代码可以在GitHub/straceGitLab/strace中找到。例如,x86_64架构中的系统调用列表是this link格式的。

票数 22
EN

Stack Overflow用户

发布于 2011-07-07 07:05:06

我所知道的唯一列表是include/linux/syscalls.h中的内核源代码。但这只是名称,而不是数字;我认为您需要使用特定平台的syscall.h头来获取数字。该文件中有几个#ifdefs ...

票数 5
EN

Stack Overflow用户

发布于 2018-03-05 02:53:02

This的帖子值得一读。希望这能有所帮助:)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6604007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档