温馨提示×

CentOS反汇编指令如何调

小樊
46
2026-07-09 02:17:34
栏目: 智能运维

CentOS 上做“反汇编”通常依赖 binutils / gdb / objdump / radare2 / IDA 等工具。下面按常见场景给你一套实用指南。


一、CentOS 常用反汇编工具

✅ 1. objdump(最常用,系统自带)

适合:ELF 可执行文件、.o 文件、库文件

安装(一般已安装):

yum install -y binutils

基本反汇编

objdump -d test

反汇编指定函数

objdump -d test | grep -A 20 main

显示源码 + 汇编(需要 -g 编译)

objdump -S test

显示符号表

objdump -t test

✅ 2. gdb(调试 + 反汇编)

适合:动态调试、单步反汇编

安装:

yum install -y gdb

启动程序

gdb ./test

常用反汇编命令

disassemble main
disassemble 0x4005f6

显示当前执行位置汇编

disas

设断点并反汇编

b main
run
disas

✅ 3. ndisasm(适合裸二进制)

适合:shellcode、无格式 bin

安装:

yum install -y nasm

使用:

ndisasm -b 64 test.bin

✅ 4. radare2(专业逆向)

适合:逆向工程、CTF

安装:

yum install -y radare2

使用:

r2 ./test

常用命令:

aaa        # 分析
pdf @ main # 反汇编 main
pd 20      # 反汇编 20 条

二、编译时注意事项(非常重要)

✅ 生成调试信息

gcc -g -o test test.c

✅ 关闭优化(否则汇编很难看)

gcc -O0 -g -o test test.c

✅ 查看架构

file test

三、常见反汇编示例

示例 1:反汇编 ELF 程序

objdump -M intel -d test

-M intel 使用 Intel 语法(默认是 AT&T)


示例 2:反汇编 + 源码对照

objdump -S -M intel test

示例 3:GDB 中查看函数汇编

gdb ./test
(gdb) disassemble main

四、系统位数 & 指令集

查看系统:

uname -m
系统 指令
x86 32 位
x86_64 64 位
aarch64 ARM64

反汇编时自动识别,无需额外参数。


五、常见问题

❓ 为什么看不到 main?

  • 被优化掉了
  • 被 strip 了
  • C++ 名字被修饰(用 nm 查看)
nm test | grep main

❓ 反汇编出来全是 <+0> <+1>

说明没有调试信息,建议:

gcc -O0 -g

六、推荐组合(实战)

gcc -O0 -g -o test test.c
objdump -M intel -S test

或:

gdb ./test
disassemble main

如果你有具体场景(比如:

  • 反汇编内核模块
  • 分析 shellcode
  • 逆向 CTF 题目
  • ARM / x86 区别
  • 反汇编 so 文件)

可以直接说,我可以给你针对性命令和解释

0