温馨提示×

centos反汇编指令如何输出

小樊
38
2026-09-03 03:15:27
栏目: 智能运维

在 CentOS(及其他 Linux 发行版)下,“反汇编”通常指把可执行文件 / 目标文件 / 内存中的机器码转成汇编指令。常用工具和输出方式如下。


一、使用 objdump(最常用)

1. 反汇编整个可执行文件

objdump -d test

2. 反汇编并显示源码(需编译时带 -g

objdump -S test

3. 反汇编指定函数

objdump -d test | grep -A 30 '<main>:'

或(ELF 更可靠):

objdump -d --start-address=0x400520 --stop-address=0x400560 test

4. 指定架构(如 ARM)

objdump -d -m arm test

二、使用 gdb(调试时反汇编)

1. 进入 gdb

gdb ./test

2. 反汇编当前函数

disassemble

3. 反汇编指定函数

disassemble main

4. 反汇编指定地址范围

disassemble 0x400520, 0x400560

5. 显示汇编 + 源码

layout asm

disassemble /m main

三、使用 objcopy + ndisasm(裸二进制)

适合 Bootloader、Shellcode:

objcopy -O binary test test.bin
ndisasm -b 64 test.bin

四、反汇编内存(运行中的进程)

gdb -p <pid>
(gdb) disassemble 0x7fxxxxxx

或用 /proc

cat /proc/<pid>/maps

五、Intel 语法(更直观)

objdump

objdump -d -M intel test

gdb

set disassembly-flavor intel
disassemble main

六、常见输出示例

0000000000400520 <main>:
  400520:   55                      push   %rbp
  400521:   48 89 e5                mov    %rsp,%rbp
  400524:   b8 00 00 00 00          mov    $0x0,%eax
  400529:   5d                      pop    %rbp
  40052a:   c3                      ret

如果你愿意,可以告诉我:

  • ELF / 二进制 / 内核模块 / Shellcode
  • 需要 x86 / x64 / ARM
  • 是否用于 CTF / 逆向 / 调试

我可以给你更精确的反汇编命令。

0