温馨提示×

centos如何反汇编指令

小樊
40
2026-09-06 07:21:41
栏目: 智能运维

在 CentOS 上“反汇编指令”通常指把二进制程序(可执行文件、目标文件、库)反汇编成汇编代码,或者查看某条机器指令对应的汇编。下面按常见场景给你说明。


一、常用反汇编工具(CentOS 安装)

1. objdump(最常用,binutils 自带)

sudo yum install -y binutils

基本用法:

objdump -d ./test

反汇编某一段:

objdump -d -M intel ./test

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

只看 main 函数:

objdump -d -M intel ./test | grep -A 30 "<main>:"

2. gdb(调试 + 反汇编)

sudo yum install -y gdb

进入 GDB:

gdb ./test

反汇编当前函数:

disassemble

反汇编指定函数:

disassemble main

使用 Intel 语法:

set disassembly-flavor intel
disassemble main

反汇编指定地址:

disassemble 0x400526, 0x400540

3. ndisasm(针对裸机器码)

sudo yum install -y nasm

反汇编一段机器码:

echo -n "\x55\x48\x89\xe5" | ndisasm -b 64 -

4. objdump 反汇编单个指令(从机器码)

例如机器码:

55 48 89 e5

写入文件:

printf '\x55\x48\x89\xe5' > code.bin
objdump -D -b binary -m i386:x86-64 -M intel code.bin

二、反汇编运行中程序(实战)

查看当前执行位置汇编

gdb ./test
(gdb) break main
(gdb) run
(gdb) disassemble

查看某地址的指令

(gdb) x/10i $pc

三、CentOS 常见注意点

1. 64 位 vs 32 位

  • -m i386:x86-64:64 位
  • -m i386:32 位

2. 静态 / 动态符号

  • strip 过的程序:函数名可能丢失
  • 可用:
objdump -d -M intel ./a.out

3. 内核模块反汇编

objdump -d -M intel mydriver.ko

四、简单示例

// test.c
int main() {
    return 0;
}
gcc test.c -o test
objdump -d -M intel ./test

你会看到类似:

<main>:
    push    rbp
    mov     rbp, rsp
    mov     eax, 0
    pop     rbp
    ret

如果你是想:

  • ✅ 反汇编 某一条 CPU 指令
  • ✅ 反汇编 内核 / 驱动
  • ✅ 反汇编 shellcode
  • ✅ 分析 漏洞 / 逆向

可以告诉我具体场景,我可以给你更针对性的命令。

0