2016-07-03 21 views
-4

ifstreamを使って、私のdllファイルの内容をリモートプロセスに注入しようとしました。 char*バッファを使用してdllの内容を格納した後、WriteProcessMemoryを使用して、dllファイルのバイナリをプロセスに挿入しました。 CheatEngineを使ってVirtualAllocExという結果が指すメモリ領域を調べました。私が作った関数の1つのテキストパラメータが表示されているため、データが書き込まれたことがわかりました。私はちょうどそれがLoadLibraryは、プロセスにdllの生のバイナリを読み込むとは異なっていることは何か不思議です。要するにLoadLibraryとバイナリdllをプロセスにロードしていますか?

+0

地図画像などのバイナリが、線形ではなく、再配置及び(追加のDLLをロードすることができる)の輸入を解決マニフェストが存在する場合、活性化コンテキストを作成するエントリポイントを呼び出す.. – RbMm

+1

はこれはよく知られています。メモリモジュールローダには多くのライブラリが実装されています。出典を読んでください。明らかに、それは大規模なハックです。 –

+0

LoadLibraryをなぜ呼び出さないのですか?または、より多くのコントロールが必要な場合は、LoadLibraryExを使用します。私はリバースエンジニアリングのための単一の正当な理由を考えることはできませんので、手動で行うことができます。 –

答えて

4

LoadLibraryは、以下のことを行います。

  1. マップとは、メモリ内にセクションを再配置します。

  2. インポートディスクリプタテーブルを処理し、必要に応じて依存関係をロードし、インポートアドレステーブル(IAT)を入力します。

  3. モジュールリストでモジュールを見つけるために必要な情報をプロセス環境ブロック(PEB)に書き込みます。

  4. 呼び出しモジュールのロードは(通常カーネル内で)通知します。

  5. 新しいモジュールコンテキストのクリーンアップ。

  6. (マニフェストがある場合)アクティベーションコンテキストを作成します。

  7. エントリポイント(DllMain)(存在する場合)を呼び出します。

関連する問題