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

Log.i53

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

AntiDebug技術:Disabling Breakpoints

Unpack Anti-Debug

 ブレークポイントを強制的に解除することによってデバッガを攻撃する方法があります。ハードウェアブレークポイントを無効化するために、パッカーはCONTEXT構造体を介してデバッグレジスタを編集します。

 この例では、例外ハンドラに渡されるCONTEXTレコードを介してデバッグレジスタがクリアされています:
f:id:i53:20150609050221p:plain

 その他にも、ソフトウェアブレークポイントを妨害するために、パッカーはINT3命令(0xCC)を単に検索して任意またはランダムのオペコードで置き換えることもできます。これにより、ブレークポイントは無効化され、オリジナルの命令は破壊されます。

解決策

 ハードウェアブレークポイントが検出される場合にはソフトウェアブレークポイントを使用すればよいですし、その逆もまた然りです。両方とも検出されてしまう場合には、OllyDbgのon-memory access/writeブレークポイントを試してみてください。