簡単にcheap2elで遊べるサンプルを紹介。 - リソースに埋め込んだDLLを展開し、DllMainなど実行 -- http://code.google.com/p/cheap2el/source/browse/#svn/trunk/samples/dllres --- DLLをリソースに埋め込むことも出来るんだな~という実験です。 - DLLを外部プロセスのメモリ空間に展開し、エキスポート関数をスレッドとして実行 -- http://code.google.com/p/cheap2el/source/browse/#svn/trunk/samples/dllcopy --- 「コードインジェクション」を意識してます。といっても、外部プロセスのメモリ空間に書き込む際には総合セキュリティソフトで検知される可能性があります(ウィルスバスター2010では検知された)し、Vista以降でASLRが有効な場合はDLLのロードアドレスが異なり、IATを調節出来ずDLLイメージを実行可能にできません。あくまでもcheap2elを使ったサンプルで、WinXPで動作確認しただけです。 --- コンセプトとしては、DLLを実行可能な状態のメモリイメージに展開(IATの調整と再配置の書き換え)、VirtualAllocEx()で外部プロセスメモリ空間上に仮想ページを確保、WriteProcessMemory()で書き込み、CreateRemoteThread()でエキスポート関数をスレッドとして外部からkick、という流れです。 バイナリ解析の記事でよく見かけるインポート関数のHookについても、近日中にcheap2elを使った作例をUPしたいと思います。