備忘録

備忘録

ハードウェアブレークポイント(HWBP)とVEHを利用してデバッガを作成する方法

Ⅰ. はじめに

タイトルの通り「ハードウェアブレークポイント(HWBP)とVEHを利用してデバッガを作成する方法」です。

Ⅱ. サンプルプログラム

https://github.com/kagasu/VEHTest

HWBPのメリット/デメリット

メリット
  • メモリを変更する必要がない為メモリ改ざんチェックを回避できる
  • ページガードを利用した方法よりもHWBPの方が高速に処理できる
デメリット
  • GetThreadContext等で簡単に検知可能
  • ブレークポイントの数に制限がある(スレッドごとに最大4個)
  • 新規スレッドが生成された時に新規スレッドに対して自動的にHWBPを設定する処理を実装する必要がある(新規スレッドに対してHWBPを設定する必要がなければ実装しなくてOK)

ページガードBPのメリット/デメリット

メリット
デメリット
  • VirtualQuery等で検知可能
  • 処理速度が低速