Phase 0: コンピュータの土台
この章は言語構文より先に、CPUを観察するための最低土台を固めるフェーズです。ここが弱いと、以降のGDB/ABI/逆アセンブルで詰まります。
この章は言語構文より先に、CPUを観察するための最低土台を固めるフェーズです。ここが弱いと、以降のGDB/ABI/逆アセンブルで詰まります。
1. Cコードを最小でコンパイルして逆アセンブルを確認
gcc -O0 -g main.c -o main
objdump -d main | less
2. GDBでレジスタとメモリを追う
gdb ./main
(gdb) b main
(gdb) run
(gdb) info registers
(gdb) x/16xb $rsp
3. 1命令ずつ実行してフラグ変化を観察
(gdb) stepi
(gdb) stepi
(gdb) info registers eflags
ZF は「前回の比較が等しい」時に1になるRSP は関数呼び出しで増減するcall は戻りアドレスをpushしてから分岐する