読者です 読者をやめる 読者になる 読者になる

Log.i53

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

デバッグ検出技術:Code Checksum Calculation

Unpack Anti-Debug

 パッチ検出ではパッカーコードの改変を検出します。コードの改変(パッチ)はアンチデバッグ処理の無効化を示唆しています。また、ソフトウェアブレークポイントがセットされているかどうかを検出する上でも利用することができます。パッチ検出はコードチェックサムによって実装されており、このチェックサム計算は簡単なチェックサムで済むものから複雑なハッシュアルゴリズムまで存在します。

 以下は非常にシンプルなチェックサム計算のサンプルコードです:
f:id:i53:20150609042145p:plain

解決策

 ソフトウェアブレークポイントはコードチェックサム処理によって検出されてしまいますが、代わりにハードウェアブレークポイントを使用することができます。コードパッチングはチェックサムルーチンによって検出されてしまいますが、分析者がパッチアドレス上にアクセスブレークポイントを設置することでチェックサムルーチンの場所を特定することができ、一度チェックサムルーチンが見つかってしまえば、チェックサム値を想定されている値に改ざんするか、あるいはチェックサムの比較が行われた後で適切な成功フラグに変更するだけです。