
: リバースエンジニアリングにおける心理戦
github.com/xoreaxeaxeax/repsych // domas // @xoreaxeaxeax
REpsych ツールセットは、プログラムの制御フローグラフ(CFG)を通じて画像を生成することを示す概念実証です。
| 典型的な関数のCFG | REpsychが生成したCFG |
|---|---|
![]() | ![]() |
このプロジェクトに特定の目的はありません(できることを示す以外には)が、可能性のある(真面目ではない)応用例はDEF CON プレゼンテーションで概説されています。
このプログラムは、テストされたすべてのバージョンの IDA Pro リバースエンジニアリングツールで確実に動作し、他の CFG ビューア(Hopper、BinNavi、radare2 など)では半ば確実に動作します。
このツールセットは、ソース画像を機能するプログラムに変換し、プログラムの制御フローグラフがソース画像を生成するようにします。
画像から新しいプログラムを生成するには:
2つの機能するプログラム、repsych_v1 と repsych_v2 が作成されます。それぞれが、CFG レンダラーが CFG ノードを正しく配置することを保証するための異なる戦略を使用します。
このツールは、ソース画像の各ピクセルに対して基本ブロック(CFGノード)を作成します。そのため、小さなソース画像(100x100 以下)を使用するようにし、CFG ビューアで許可されるノード数を増やす必要があるかもしれません。
テキストの画像を入力として使用する場合は、まず画像を 2 BPP の白黒ビットマップに変換し、次に 24 BPP ビットマップに変換します。これにより、白黒以外の色が除去され、制御フローグラフで最良の結果が得られます。





この手法の詳細は、DEF CON プレゼンテーションで説明されています。
プレゼンテーションのスライドはこちらから入手できます。
REpsych は、Christopher Domas(@xoreaxeaxeax)による概念実証です。