这次只做一件事:理解程序从磁盘到内存后,第一段代码如何被执行。
最小实验
gcc -o hello hello.c
readelf -h hello | grep Entry
objdump -d hello | head -n 60
gdb ./hello
核心观察点
Entry point address对应的是_start,不是main。PT_LOAD决定了段如何映射到内存。- 跟到
__libc_start_main才会进入main。
结论
逆向时先找真实执行入口,再找业务逻辑入口,这能减少误判。