3

Ollydbg には、特定の値を持つデバッグ中のプログラムの命令アドレスがあります。その値は、多数のループで渡されます。各ループを手動でステップ実行したり、値が転送される場所を追跡したりせずに、その値を「追跡」できる方法はありますか? 15000以上の命令ループに対して手動でそれを行うことはできません。

私は最終的にそれを暗号化関数まで追跡しようとしています。その時点でそれは消え、このプログラムの暗号化に到達したことがわかります. それを「自動追跡」して、プログラムが完全に消えたときにプログラムを一時停止できる方法があれば、暗号化機能につながるはずです。

このようなことが可能であることに頭の中で疑問を抱いていますが、尋ねても害はないと思います。

必要に応じて、オペレーティング システムは Windows 7 x86 です。

4

2 に答える 2

3

私が使用したり聞いたりしたデバッガーでは、そのような「トレース」はできません。

唯一のオプションは、何らかのデバッガー プラグイン (デバッガーでサポートされている場合) または特別なプログラムを記述して、デバッガーで命令ごとに実行し、値がどこに、どのレジスターに、どのレジスターに移動するかを確認することです。また、メモリやレジスタから完全に「消える」わけではありません。そして、実用的であるには遅すぎるかもしれません。

ソース コードが利用可能である場合は (おそらくそうではないと思います)、コードをレビューしたほうがよいでしょう。

于 2013-03-19T07:36:30.477 に答える
1

あなたのタスクは、静的分析によってより適切に処理されます。

一方、コード追跡とデータフロー分析モジュールを備えたPaiMeiがあります。

これは、何千ものブレークポイント (マインスイーパの例では 50k) を設定し、それらがヒットしたときと、設定されている場合はコンテキストを記録することによって機能します。各実行中にトレースしている値 (入力ですか?) を変更できる場合に最適です。はい、これは非常に総当たり的なアプローチであり、大きなファイルの場合は非常に遅くなる可能性があります.

于 2013-03-19T08:03:12.830 に答える