タグ

ブックマーク / egggarden.hatenadiary.org (1)

  • detoursが復元なしで元関数を呼び出す仕組み - やや温め納豆

    以前、単純なJMP方式のフックとして紹介したやり方は、元関数を呼び出すために一時アンフックするという実装だった。 図解するとこう。 1.初期状態 2.ExitProcessフック実施後。関数の先頭5バイトがNewExitProcessへのJMPに改竄される。 3.ExitProcessが呼び出された。即座にNewExitProcessにJMPする。 4.NewExitProcessでフックを解除する。これによりExitProcessの先頭5バイトは復元される。 5.NewExitProcessでExitProcessを呼び出す。ExitProcessは実行を完了しNewExitProcessに制御を返す*1 6.NewExitProcessでフックを実施する。 でも問題があって、アンフックしている最中に別スレッドがExitProcessを呼び出すと、当然ながらNewExitProcessを

    detoursが復元なしで元関数を呼び出す仕組み - やや温め納豆
  • 1