Ubuntu 反汇编指令学习资源与路径
入门与工具清单
sudo apt update && sudo apt install binutils gdb。这些工具覆盖了静态反汇编与动态调试的主流场景,是入门与进阶的必备组合。系统学习路径
objdump -d <binary> 查看可执行段反汇编;用 objdump -S -d <binary> 将源码与汇编交错显示(编译需带 -g);用 objdump -x 查看全头信息;用 readelf -h 查看 ELF 头。配合 nm 与 strings 快速定位符号与可读内容。gcc -g3 -O0 -o app app.c 编译;在 GDB 中 b main 下断点,disassemble 查看函数汇编,disassemble /m 同时看源码;结合 layout asm、stepi、info registers、x/10gx $rsp 等观察执行流与栈变化。gcc -S -o main.s main.c 生成 AT&T 风格汇编;对比不同优化级别(如 -O0/-O2)下寄存器分配、函数内联与栈帧差异,理解编译器对反汇编阅读的影响。进阶工具与逆向平台
示例命令速查表
| 目标 | 命令示例 | 说明 |
|---|---|---|
| 静态反汇编 | objdump -d /bin/ls |
反汇编可执行段 |
| 源码+汇编 | gcc -g -O0 -o app app.c && objdump -S -d app |
需编译时带 -g |
| 全头信息 | objdump -x app |
段、符号、重定位等概要 |
| ELF 头 | readelf -h app |
查看 ELF 标识与机器信息 |
| 符号表 | nm -C app |
列出符号,C++ 名还原 |
| 提取字符串 | strings app |
快速定位可疑文本 |
| 动态反汇编 | gdb app → b main → disassemble /m |
断点后查看函数汇编与源码 |
| 任意二进制 | objdump -D -b binary -m i386 a.bin |
指定架构反汇编裸二进制 |
| 以上命令覆盖日常静态与动态反汇编的高频用法,适合作为“随身速查”。 |
学习建议与合规