Log.i53

Themidaのアンパックを目指すブログ改め使い物になるえんじにゃを目指すブログ

AntiDebug技術:Virtual Machines

 仮想マシン利用のコンセプトはシンプルです。
 
 分析者はアンチデバッグ技術や分析妨害技術を回避/解決する方法を最終的には把握することになり、保護された実行ファイルは最終的には復号されメモリ内に展開した状態で実行される必要があるので、静的解析をする上での脆弱さを残すことに繋がります。

 しかし、仮想マシン利用においては、コードの保護された部分がp-codeと呼ばれるコードに変換され、実行時にマシンコードに変換されます。これによりオリジナルの機械命令が置き換えられ、コード理解の複雑さが指数関数的に増大します。

 以下にそのコンセプトを簡単な図で示します:
f:id:i53:20150608194950p:plain

 Oreans technologies' CodeVirtualizerやStarForceのような最近のパッカーは実行ファイルの保護のためにこの仮想マシンのコンセプトを適用しています。

 この手法への対応策は簡単ではなく、p-codeがどのような構造をしているのか、仮想マシンによってどのように変換されるのかを分析する必要があります。また、取得した情報によってp-codeをマシンコードまたは理解可能な命令に変換する逆アセンブラを開発する必要があります。

 p-code逆アセンブラの開発例と仮想マシンの実装についての詳細な情報を以下のリンクで参照することができます:
OpenRCE:Defeating HyperUnpackMe2 With an IDA Processor Module, Rolf Rolles