【发布时间】:2014-09-29 13:36:08
【问题描述】:
我使用objdump -S 为/lib/x86_64-linux-gnu/libc.so.6 获取源代码和反汇编二进制行的混合。
深入研究生成的输出表明,相当多的 GNU C 库已被写入 .S 格式的汇编文件中。
谁能告诉我这些 .S 文件是否用于系统调用?如果是这样,这些程序集还涵盖了哪些内容?
【问题讨论】:
我使用objdump -S 为/lib/x86_64-linux-gnu/libc.so.6 获取源代码和反汇编二进制行的混合。
深入研究生成的输出表明,相当多的 GNU C 库已被写入 .S 格式的汇编文件中。
谁能告诉我这些 .S 文件是否用于系统调用?如果是这样,这些程序集还涵盖了哪些内容?
【问题讨论】:
谁能告诉我这些 .S 文件是否用于系统调用?
glibc 系统调用是在汇编文件中实现的,是的。
如果是这样,这些程序集还包括什么?
很多其他东西。在我的脑海中,x86_64:
IFUNCsPLT 存根PLT 分辨率的部分,strcpy、strstr、memcpy、memmove,一些三角函数。某些平台没有(某些)上述手动优化的汇编例程,并且具有较少的.S 文件。 PLT 解析不能在纯C 中完成,因此在所有平台上都以汇编方式实现。
【讨论】:
与其对它们进行逆向工程,为什么不简单地查看源代码呢? glibc 是开源的:https://www.gnu.org/software/libc/download.html
另外,this question 指的是网络上可以浏览源代码的地方。
【讨论】: