在 Linux 下进行反汇编并定位函数,常见方法和工具如下,按“从易到难 / 从高级到底层”给你一个清晰路径。
nm ./a.out
T / t:代码段中的函数(T 为全局,t 为局部)U:未定义(外部函数)nm -C ./a.out # C++ 符号反修饰
objdump -T ./a.out
objdump -d ./a.out
objdump -d -j .text ./a.out
objdump -d ./a.out | grep -A 30 '<main>:'
gdb ./a.out
(gdb) info functions
(gdb) disassemble main
(gdb) break main
(gdb) run
(gdb) disassemble
main 一般在 _start 之后call 指令目标地址objdump -d ./a.out | less
常见函数开头:
push rbp
mov rbp, rsp
sub rsp, 0x10
readelf -S ./a.out
readelf -s ./a.out
file ./a.outnm / readelf -s 看有没有符号objdump -d 或 gdb如果你愿意,可以告诉我:
我可以直接给你具体命令或反汇编示例。