1

私は現在 DLL インジェクションを扱っており、実行可能ファイルと DLL の両方として機能する単一のハイブリッド バイナリが必要です。DllMain および WinMain 関数を作成してから、実行可能ファイルとしてコンパイルすることを考えましたが、それを実行するとどうなるかわかりません。thinstall のようなものを使用するか、一時的な場所に dll を抽出してそこから移動することで、dll と exe を組み合わせることが可能であることは知っていますが、そのようなことを台無しにしたくありません。基本的に、WinMain と Dll Main を定義して、結果の実行可能ファイルを両方として使用することは可能ですか? 前もって感謝します!

4

4 に答える 4

3

いいえ。

DLL と EXE の両方に、PE (Portable Executable) ヘッダーがあります。そのヘッダーにはフィールドがありますIMAGE_FILE_HEADER::Characteristics。そのフィールドのビット 14 は、0 (EXE の場合) または 1 (DLL の場合) です。

于 2010-01-19T11:18:31.533 に答える
1

すべての共通コードをスタティック ライブラリ (.lib) に入れ、DLL プロジェクトと EXE プロジェクトの両方をスタティック ライブラリの非常に薄いラッパーとして持たないのはなぜですか?

于 2010-01-19T02:26:15.157 に答える
1

実行可能ファイルの一時的なコピーを作成し、PE ヘッダーにパッチを適用して、このコピーを挿入することができます。もう 1 つの方法は、DLL をバイナリ リソースとして実行可能ファイルに配置することです。実行時に、このバイナリ リソースを一時ファイルに書き込み、これをインジェクションに使用できます。

于 2011-01-23T15:12:29.570 に答える
0

exeから関数をエクスポートすることも可能です。したがって、LoadLibrary("foo.exe") に続いて GetProcAddress(hFoo,"bar") を実行できるはずです。

于 2012-03-15T11:33:12.383 に答える