[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

hookに関するlizyのブックマーク (4)

  • React Hooks for Data Fetching – SWR

    import useSWR from 'swr' function Profile() { const { data, error, isLoading } = useSWR('/api/user', fetcher) if (error) return <div>failed to load</div> if (isLoading) return <div>loading...</div> return <div>hello {data.name}!</div> } In this example, the useSWR hook accepts a key string and a fetcher function. key is a unique identifier of the data (normally the API URL) and will be passed to f

    React Hooks for Data Fetching – SWR
  • APIフックメモのまとめ #1 - やや温め納豆

    Win32 | 14:25 | いろいろ参考に、ごく基的な機能を実装した(apihook.cab)。この実装から、不特定多数のプロセスに対してのAPIフックを行うための適性、という観点からメモのまとめ。不特定多数の、というのがポイントで、要するにできるだけ副作用が起こらないことを重視する。扱うのは、IATの書き換え、JMP命令への書き換え、SSDTの書き換えあたりがメイン。JMPの書き換えは、シンプルな実装と、Detours利用の2種類を検討。全プロセスに適用する方法そのものについては、検討しない。ちなみに、もっと面白そうなことはkenjiさんのブログ*1を読むと幸せになります。また、英語を厭わなければ rootkit.com あたりをチェックしていると飽きないです。 IATImport Address TableというPE構造を書き換える方法。日語では インポートアドレステーブルと

  • 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が復元なしで元関数を呼び出す仕組み - やや温め納豆
  • APIフックメモのまとめ #2 - やや温め納豆

    Win32 | 18:00 | #1の続き。 単純なJMP関数の先頭5バイトを JMP NN NN NN NN という命令に書き換え、JMP先に代替関数を用意する方法。TRAMPOLINE(トランポリン)と呼ばれているらしい。最近知った。日語では、過去に香り屋というサイトで紹介されていたが今はページが見当たらない。技法としては特徴的なものではないためか、あまり注目されていないような印象がある。IAT方式と比較して、実装上の複雑さが少ない。フックはモジュール単位ではなくプロセス単位で有効なのでLoadLibrary系をフックする必要は無く、GetProcAddressでも来の関数アドレスをそのまま返してしまって問題が無い(そのアドレスの先頭5バイトが既に改竄済みであるため)。フックに失敗することが殆どなく、フック処理そのものは信頼性がある。一方で、IATにはない課題もいくつか。5Byte

  • 1