大佬教程收集整理的这篇文章主要介绍了linux – 如何反汇编系统调用?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
写这个:
#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 mov $0x0,%edi 400481: b8 00 00 00 00 mov $0x0,%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”,我看到:
00000000004003a8 <dup@plt>: 4003a8: ff 25 7a 04 20 00 jmpq *2098298(%rip) # 600828 <_GLOBAL_OFFSET_TABLE_+0x20> 4003ae: 68 01 00 00 00 pushq $0x1 4003b3: e9 d0 ff ff ff jmpq 400388 <_init+0x18>
所以它正在调用一个“全局偏移表”,我假设它具有所有的系统调用向量.就像其他帖子所说,请参阅内核源代码(或标准库源代码?)以@L_607_16@相关详细信息.
以上是大佬教程为你收集整理的linux – 如何反汇编系统调用?全部内容,希望文章能够帮你解决linux – 如何反汇编系统调用?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。