依存関係用の dll ファイルを必要とする実行可能ファイルがあります。メモリ内またはリソース内にあるポインタからエントリ ポイントを読み取る dll を必要とする PE ファイルに実際にパッチを適用することは可能でしょうか。これが可能である場合、どうすればそれを行うことができますか?
ご協力いただきありがとうございます :)
依存関係用の dll ファイルを必要とする実行可能ファイルがあります。メモリ内またはリソース内にあるポインタからエントリ ポイントを読み取る dll を必要とする PE ファイルに実際にパッチを適用することは可能でしょうか。これが可能である場合、どうすればそれを行うことができますか?
ご協力いただきありがとうございます :)
依存する実行可能ファイルが必要とするのは、単に DLL 内のエントリ ポイントではありません。これDllMain
は、DLL がロードされるときにシステム (PE ローダー) によって呼び出されるだけです。動的ローダーは、インポート アドレス テーブルのような構造でインポートされたアドレスを解決し、実行時に、アプリケーションは を介してアドレスを動的に解決することさえできますGetProcAddress
。
理論的には、DLL をメモリの未使用部分に再配置/ベース化し、その関数へのすべての参照を再配置されたコードにパッチすることは可能ですが、これは非常に難しく、OS の詳細な理解が必要になります。あなたが探している答えの種類がわかりません。これを達成するために必要な手順は? それは非常に重要であり、以前に行われたことを認識していません (私が見た中で最も近いのは、.NET アセンブリ用の ILMerge です)。基本的に、DLL がコンパイル時に静的にリンクされていた場合と同等のコードに変換しています。