linux – 如何反汇编系统调用?
发布时间:2020-12-14 00:51:08 所属栏目:Linux 来源:网络整理
导读:我怎么能反汇编系统调用,以便我可以获得其中涉及的汇编指令 解决方法 好吧,你可以做这样的事情.说我想得到一个“dup”的汇编转储: 写这个: #include stdio.h#include sys/file.hint main() { return dup(0)} 编译它: gcc -o systest -g3 -O0 systest.c 转
我怎么能反汇编系统调用,以便我可以获得其中涉及的汇编指令
解决方法
好吧,你可以做这样的事情.说我想得到一个“dup”的汇编转储:
写这个: #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> 所以它正在调用一个“全局偏移表”,我假设它具有所有的系统调用向量.就像其他帖子所说,请参阅内核源代码(或标准库源代码?)以获取相关详细信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |