ネイティブdllをexeにマージ


1

複数のネイティブdllをexeにマージすることは可能ですか?

はい、彼が.NET / Mono / Managed dllで簡単にできることを知っていますが、ネイティブDLLでも同じことができますか?私はUPXを見つけましたが、ファイルをパックすることしかできず、マージすることはできないようです。

回答:


1

ダイナミックリンクライブラリは、外部で使用するように設計されています。理論的には、含まれている関数を再パッケージ化することが現実的に可能ですが、実行可能なファイルとそのDLLを一時フォルダーに抽出する自己解凍型アーカイブにすべてを確実にパックしてから、実行可能ファイルを実行するのが現実的です。

ソースコードを入手できる場合は、外部のDLLではなく、DLLを必要とするプログラムとリンクできる静的ライブラリ(.lib)を最小限の変更でコンパイルできます。


2

DLLから静的にインポートする実行可能ファイルがある場合、「-impinj」コマンドラインオプションを使用してpefrmdllembedツールを使用できます。インポートを解決しながら、ネイティブDLLファイルを(同じアーキテクチャの)ネイティブEXEファイルにマージできます。

例: pefrmdllembed.exe -impinj myapp.exe ogg.dll myapp_injected.exe

ほとんどのDLLで動作します。静的TLSなどの特別なNTローダー機能には注意してください。64ビットではサポートされておらず、32ビットでは良好な結果が得られない場合があります。


お申し込みありがとうございます。それは私のプロジェクトに最適です。残念ながら、UPXとの互換性はありません。ファイルを単一の実行可能ファイルにパックする前の圧縮も圧縮後の圧縮もありません。
Julo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.