アセンブラ… (0w0)ウェーイ

このエントリーをはてなブックマークに追加
591461
>>529の考えてることはおそらく、CreateRemoteThread(LoadLibrary())みたいなもので起動済みプロセスに何かのDLLをこっそり注入すること。だがLoadLibrary()すると簡単にモジュール列挙されてしまうので、別の方法をとりたい。

もしそうなら・・・

リンカで設定して、DLLの側をうまく作っておきさえすれば、手抜きのPEローダーで構わない。
1. セクションのファイルアラインとメモリアラインを一致させること。ヘッダのサイズが1000hにできれば完璧。
2. 固定アドレスロードにする。
3. バウンドインポートにする。
まあ、3は大いに問題ありなので、インポートテーブルだけは解決するように作ればよい。後はDLLプロセスアタッチをシミュレートする。

逆に言えば、ちゃんとしたローダーを作るには1/2/3を解決すればよい。完全なのはもう少し処理が必要だが。
作りたかったらwinnt.hに載っている構造体とdbghelp.hに載っている関数をよく調べること。

それから、DLLは作らずに、VirtualAllocEx()で確保した領域に、EXEが自らのコードを部分的にコピーして動作させる、という方法もある。
そっちの方法は「アセンブリ言語の教科書」の著者のページに書いてあり、ソースコードも置いてある。多分Advanced Windowsにも載っているのだと思われるが。