0

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(リストの下)。英語のアナログが存在するかどうかはわかりません。

4

1 に答える 1

0

Kris Kaspersky は、このプログラムをよりよく理解するために、トレーサーのプロトコルをコンパイラー・オプティマイザーに渡すことをお勧めすると書いています。しかし、どのコンパイラをどのように使用すればよいかわかりません。

コンパイラが何であるかは知っていますが、あなたが何について話しているのかまだわかりません。読んでいるドキュメントへのリンクを提供すると、より良い回答が得られる可能性があります。

不要な行を取り除くにはどうすればよいですか: "?? ()" ?

grepそれらを除外するために使用します。

grep -v '\?' trace.txt > clean-trace.txt

また

grep '^0x' trace.txt > clean-trace.txt

そして、GDBをファイルにリダイレクトするにはどうすればよいですか?

(gdb) set logging on  # output will now be copied to gdb.txt
于 2012-04-10T03:16:03.323 に答える