加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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>

所以它正在调用一个“全局偏移表”,我假设它具有所有的系统调用向量.就像其他帖子所说,请参阅内核源代码(或标准库源代码?)以获取相关详细信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读