これは簡単なプログラムです。x86_64 用に生成されたアセンブリと C ソース コードを貼り付けました。
int main()
{
4004b4: 55 push %rbp
4004b5: 48 89 e5 mov %rsp,%rbp
int array[10];
array[0] = 5;
4004b8: c7 45 d0 05 00 00 00 movl $0x5,-0x30(%rbp)
return 0;
4004bf: b8 00 00 00 00 mov $0x0,%eax
}
IDA-pro や dcc などのプログラム逆コンパイル ツールについては知っていますが、それらのプログラムが配列境界などの詳細をどのように把握できるかはわかりません。より一般的には、アセンブリだけを見て、
movl $0x5,-0x30(%rbp)
実際に操作int array[10]
ですか?-g
プログラムがデバッグ情報でコンパイルされている場合、objdump
ソースコードが表示され、それを理解できることがわかります。バイナリにデバッグの詳細がない場合、商用の逆コンパイラはどのようにこれを把握しますか?