
ACE .qvm0で保護されたPEイメージ向けの静的解析および構造復元ツールキット
これらは、READMEおよびケースノートで引用されている測定値を生成するために使用された分析ドライバです。これらは引数駆動で再利用可能です。それぞれがコマンドラインでPEパス(および出力パス)を受け取ります。
リポジトリのルートから実行します。例:
python scripts/extended_census.py <pe> <dynamic_edges.tsv>
| スクリプト | 目的 |
|---|---|
verify_target_decodability.py | 対照母集団に対するネイティブ→VMターゲットのデコード密度検証 |
verify_dynamic_coverage.py | 実行されたコードが分岐サイトと重複するかどうかを証明するページレベルの集合積 |
verify_dynamic_edges.py | 動的エッジ集合と静的エッジ集合の相互参照および境界検証 |
opaque_coverage.py | 動的パスが到達した、静的に不透明なサイト集合の割合 |
extended_census.py | 完全な間接分岐センサスを観測サイトと照合 |
external_decryptor_scan.py | ページ保護/マッピング/書き込み機能について兄弟モジュールをスキャン |
task1_slice_all.py | 完全な静的スライス:イディオム解決後に後方スライス、エッジ出力付き |
task1b_dynamic_codelike.py | コードライクなVMエントリに限定した動的エッジ回復 |
task2_realctx.py | 実際の呼び出しコンテキストからエミュレート;スタックフレームスロットレイアウトを回復 |
task4_patch.py | 長さを保持する難読化解除パッチと封じ込め検証 |
いくつかは主張を反証するために存在しており、それが保持されている理由です:
verify_target_decodability.py — デコード密度メトリックを対照母集団と比較します。3つのターゲットのスポットチェックが代表的でないことを示したスクリプトです。verify_dynamic_coverage.py — トレーサーが300万命令にわたって間接分岐をゼロと報告したとき、アーキテクチャ上の事実ではなくトレーサーのバグを証明したページレベルの集合積。extended_census.py — 元の間接分岐センサスが、レジスタ形式のみにマッチしていたため、実際の母集団の35%しか列挙していなかったことを示しました。external_decryptor_scan.py — 兄弟モジュール間の機能スキャン。それが構築された仮説は、その後の動的な書き込みなしの観察によって反証され、その否定はそれとともに記録されています。正直に保ちましょう:確認するだけのドライバは保持する価値がありません。