デルファイアプリを逆コンパイルから保護するにはどうすればよいですか?私はそれを行うと思うthemidaのようないくつかのソフトウェアがあることを知っていますが、保護されたexeファイルがアンチウイルスをトリガーします。
8 に答える
それはあなたの目標が何であるかによって異なります。
本当にソースを保護するだけなら、もう完了です! デバッグ情報とシンボル情報を含めず、重いインライン展開を追加しなければ、exe を逆アセンブルして使用可能な Pascal コードを再構築できます。
人々がそれがどのように機能するかを見てハッキングするのを妨げている場合は、何らかの逆アセンブル保護を含める必要があります. 難しいですが、実行可能です。多くの場合、著作権侵害対策の保護の担保として行われます。
CPUが読み取ることができるものはすべて「逆コンパイル」することもできるため、究極のセキュリティはありません。しかし、通常、コンパイルされたDelphiコードを逆コンパイルすることは非常に困難であり、もちろん、ほとんどすべての識別子とすべてのコメントが失われます。
クラスの公開された部分、DFMファイル情報、および定数(文字列定数を含む)は、読みやすい方法でexeファイルに存在します。文字列を暗号化し、公開されたファイルやDFMファイルを使用しないことで、この問題を減らすことができます。ただし、すべての情報は引き続きexeファイルに存在するため、多くの場合、これは実際のセキュリティを提供しない大変な作業になります。
ソースコードの一部を読みにくくしたいだけの場合は、アルゴリズムを難しくします...
結局、すべてがハッキングされる可能性があります。アプリが逆コンパイルされないようにする唯一の実際の方法は、exeファイルを、顧客のサーバーではなく自分のサーバーにデプロイする場合のように、実行できるファイルから遠ざけることです。
Delphi Prismを使用している場合、多くの.Net逆コンパイルツールの1つを使用すると、ソースコードの(フォーム)にアクセスするのは簡単な作業になります。
唯一の解決策は、多数の.Net難読化ツールの1つを使用することです。残念ながら、これまで使用する必要がなかったため、推奨することはできませんが、Googleがその方法を示してくれるはずです...
ネイティブのWin32にコンパイルしている場合は、あらゆる形式の難読化、またはアンチデバッグメカニズムでさえ、かなり時間の無駄です。あなたや私が母国語を読むのと同じくらい簡単にアセンブリを読むことができる人々がそこにいます。これらのことは、リバースエンジニアリングプロセスをいくらか遅くするだけです(そしてそれはほとんどありません)。
数年前、私はアプリケーションを書き直さなければなりませんでしたが、それは開発者によって放棄されました。
DFM、フォーム (コンポーネントを含む)、TxyzQueries に格納されたクエリ文字列、イメージ リストからのビットマップ、逆コンパイラを使用した一部の文字列からすべてのものを復元できますが、アプリケーション ロジックは復元できず、asm ソースが内部に含まれるメソッド名のみが復元されます。
ローダー (UPX http://upx.sourceforge.netなど) があります。これは、暗号化され圧縮されたアプリケーションをメモリに抽出し、起動時にロードしますが、AV はそのようなアプリケーションを感染しているとマークすることがよくあります。:(
そのような小さなアプリを作成できます。いくつかのヒント:
www.codeproject.com/KB/cs/LoadExeIntoAssembly.aspx (.net) www.joachim-bauch.de/tutorials/load_dll_memory.html (dll-s 用)
ネイティブのWinプラットフォームでは、完全な分解は実現されないと思います。コンパイル時にデバッグシンボルなどを含めない場合、またはツールを使用してこれらを非表示にする場合、exeがデコードされる可能性はほとんどありません。.NETのことについてはわかりません。
一般に、逆コンパイルからコードを保護することはできません。ただし、 Code Virtualizerなどのツールを使用すると、インストール コード デコーダーなどの重要な領域を保護できます。仮想化されたコードははるかに遅く、特定の制限がありますが、カジュアルなハッカーのトラブルに適切なハードルを追加します. これは、ビルド スクリプトで行うのが最適です。これにより、リリース用に一貫して追加されます。これにより、毎回適切な保護が保証されます。
既存のユーザーを気にせずにいつでも保護を切り替えることができるように、インストール コードを保護 BTW から分離することをお勧めします。
最後に、Delphi フォームは簡単にアクセスできますが、通常は変更しても役に立ちません。
盗まれた Themida キーで保護されたアプリケーションのみがウイルス対策をトリガーする必要があります (たとえば、Kaspersky によって検出された Win32.Black)。