サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
d.hatena.ne.jp/egggarden
Win32 | 14:25 | いろいろ参考に、ごく基本的な機能を実装した(apihook.cab)。この実装から、不特定多数のプロセスに対してのAPIフックを行うための適性、という観点からメモのまとめ。不特定多数の、というのがポイントで、要するにできるだけ副作用が起こらないことを重視する。扱うのは、IATの書き換え、JMP命令への書き換え、SSDTの書き換えあたりがメイン。JMPの書き換えは、シンプルな実装と、Detours利用の2種類を検討。全プロセスに適用する方法そのものについては、検討しない。ちなみに、もっと面白そうなことはkenjiさんのブログ*1を読むと幸せになります。また、英語を厭わなければ rootkit.com あたりをチェックしていると飽きないです。 IATImport Address TableというPE構造を書き換える方法。日本語では インポートアドレステーブルと
Win32 | 18:00 | #1の続き。 単純なJMP関数の先頭5バイトを JMP NN NN NN NN という命令に書き換え、JMP先に代替関数を用意する方法。TRAMPOLINE(トランポリン)と呼ばれているらしい。最近知った。日本語では、過去に香り屋というサイトで紹介されていたが今はページが見当たらない。技法としては特徴的なものではないためか、あまり注目されていないような印象がある。IAT方式と比較して、実装上の複雑さが少ない。フックはモジュール単位ではなくプロセス単位で有効なのでLoadLibrary系をフックする必要は無く、GetProcAddressでも本来の関数アドレスをそのまま返してしまって問題が無い(そのアドレスの先頭5バイトが既に改竄済みであるため)。フックに失敗することが殆どなく、フック処理そのものは信頼性がある。一方で、IATにはない課題もいくつか。5Byte
このページを最初にブックマークしてみませんか?
『d.hatena.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く