写这个:
#include <stdio.h>#include <sys/file.h>int main() { return dup(0)}
编译它:
gcc -o systest -g3 -O0 systest.c
转储它:
objdump -d systest
看着“主要”我看到:
400478: 55 push %rbp 400479: 48 89 e5 mov %rsp,%rbp 40047c: bf 00 00 00 00 mov00000000004003a8 <dup@plt>: 4003a8: ff 25 7a 04 20 00 jmpq *2098298(%rip) # 600828 <_GLOBAL_OFFSET_table_+0x20> 4003ae: 68 01 00 00 00 pushq x1 4003b3: e9 d0 ff ff ff jmpq 400388 <_init+0x18>x0,%edi 400481: b8 00 00 00 00 mov x0,%eax 400486: e8 1d ff ff ff callq 4003a8 <dup@plt> 40048b: c9 leaveq 40048c: c3 retq 40048d: 90 nop 40048e: 90 nop 40048f: 90 nop
所以看看“dup @ plt”,我看到:
所以它正在调用一个“全局偏移表”,我假设它具有所有的系统调用向量.就像其他帖子所说,请参阅内核源代码(或标准库源代码?)以获取相关详细信息.
总结以上是内存溢出为你收集整理的linux – 如何反汇编系统调用?全部内容,希望文章能够帮你解决linux – 如何反汇编系统调用?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)