2012-02-24 8 views
1

http://www.red-gate.com/products/dotnet-development/smartassembly/smartassemblyのようなプログラムですがC++のプログラムですか?

C++されているリンク先のDLLの(サイズを小さくする)からすべての不要なコードを削除し、単一のEXEにそれらをパックし、それを難読化し、それを圧縮することについてsmartassemblyようなプログラムはありますか? 1つの素敵な小さなセキュアEXEを作るには?

私はsmartprogramを愛用しています。私が作ったネットプログラムは、C++用に何かがあるのだろうかと思います。

感謝!

+0

C++でNETプログラムを書くことはできますか?これは、ソースコードではなくCILコードをパックします。 – littleadv

+0

さて、私はそれを知っていますが、私のC++プログラムをC++のようなオペレーティングシステム上で動作させたいのです。 –

答えて

5

はい、このようなツールは、リンカーと呼ばれています。ほとんどの統合開発環境では、これは "build"のような巧妙な名前を持つ単一のステップとして表示されますが、アプリケーションをコンパイルした後は一般に実行します。言い換えれば

、あなたが不要なコードを削除し、C#のなどのマネージ言語はC++のために絶対に必要でないためにそれを「難読化」してジャンプする必要がありフープ。リンカーは、コードが使用する関数内でのみリンクし、すべてがバイナリにコンパイルされているので、すでに得られるほど難読化されています。

DLLの内容は何もリンクされません。 DLLの全体的なポイントは、動的にが実行可能ファイルによって参照されるということです。そのため、「動的リンクライブラリ」と呼ばれています。コンパイル時に静的にリンクされるコードライブラリが必要な場合は、DLLの代わりにスタティックライブラリを使用する必要があります。

+2

最終的な実行ファイルを圧縮する場合は、[UPX](http://upx.sourceforge.net/)のようなものを使用できます。 – jjlin

+0

さて、私はライブラリ(DLLをビルドする前に)を使いたいのですが、DLL内のすべてのコードを使用することはありません。なぜなら、私はexeファイルに使用するDLLからコードをパックしたいのです。 –

+0

@user:そのライブラリのソースコードを入手する必要があります。これは一般的にC++開発の仕組みです。 EXEの内部に埋め込みリソースとしてDLLをバンドルし、実行時にそれを抽出し、それを依存関係として利用し、それを削除するという、完全にハックするしかありません。狂気は[ここ](http://drdobbs.com/windows/184416443)に記載されていますが、私はそれを絶対に勧めません。これは、ウィルス対策プログラムを実行し、本当に目的を果たさないための良い方法です。より良いアイデアは、あなたのアプリケーションのすべての依存関係を自動的にインストールするセットアッププログラムを使うことです。 –

関連する問題