GDBスクリプトの助けを借りて:
file ./program
b *0x12345
run
while 1
x/i $pc
ni
end
quit
難読化されたプログラムのトレースプロトコルを取得しました。
...
0x484e0: bx lr
?? ()
0x43d88: b 0x43db8
?? ()
0x43db8: ldr r3, [r11, #-16]
?? ()
0x43dbc: mov r0, r3
?? ()
0x43dc0: sub sp, r11, #12
?? ()
0x43dc4: pop {r4, r5, r11, pc}
?? ()
0x3fb94: ldr r3, [r11, #-8]
?? ()
0x3fb98: mov r0, r3
?? ()
0x3fb9c: sub sp, r11, #4
?? ()
0x3fba0: pop {r11, pc}
?? ()
0x3da68: ldr r3, [r11, #-8]
...
Kris Kasperskyは、このプログラムをよりよく理解するために、トレーサーのプロトコルをコンパイラーオプティマイザーに渡すことをお勧めします。しかし、どのコンパイラをどのように使用すればよいのかわかりません。
PS不要な行を取り除くにはどうすればよいですか: "??()"?そして、GDBをファイルにリダイレクトするにはどうすればよいですか?
編集:
本:クリス・カスペルスキー「Искусстводизассемблирования」、ロシア語の本(翻訳-「分解の芸術」)。チャプター№39、ページ822(リストの下)。英語のアナログが存在するかどうかはわかりません。