8

.NET DLL とアプリケーションがあります。DLL は C++/CLI で記述されており、「混在」しています。つまり、部分的に管理されたコードと部分的にネイティブなコードです。

1. すべてのマネージ
コードを難読化して、逆アセンブルできないようにする
2. 混合 DLL のパブリック メソッド/クラスを難読化して、誰も自分のアプリケーションで DLL を使用できないようにする (つまり、パブリック名をごちゃまぜにする)。

はい、難読化が完璧ではないことは理解しています。この 2 つの目標は、管理要件です。これを処理できる唯一のアプリは、Dotfuscator Professional Edition のようです。残念ながら、それは、セールスマンに価格を教えてもらうよう頼まなければならない、信じられないほど迷惑なアプリの 1 つです。別の解決策を知っている人、または安価で合法的なコピーを購入するのに適した場所を知っている人はいますか?

マネージ コードで DLL を書き直すように言わないでください。それには 1 か月の作業が必要であり、承認を得ることができません。:-)

難読化がどれほど優れているかについて、私は特に偏執的ではないことに注意してください。アプリ内のすべてのメソッドとクラスの名前をごちゃまぜにするものであれば、おそらく十分です。

私が試した他の難読化ツールは次のとおりです。

  • Dotfuscator Community Edition には Visual Studio 2008 が付属していますが、混合アセンブリはサポートされていません。

  • Eazfuscator .NET はシンプルで無料ですが、混合アセンブリをサポートしていません。

  • {smartassembly} は、1 つのライセンスで 500 ドルです。興味深い機能がいくつかありますが、混合アセンブリはサポートされていません。

  • サラマンダーは800ドル。混合アセンブリを完全にサポートすると主張しているが、難読化された dll を使用しようとすると、アプリケーションがクラッシュする

  • .NET Reactor は、1 つの開発者ライセンスで 180 ドルです。混合 DLL の「部分的な」難読化をサポートします。残念ながら、DLL のパブリックタイプを難読化しても機能しません。.exe はクラスを見つけることができません。DLL を .exe にマージ/パックする機能がありますが、混合 DLL を使用すると機能しません (.exe の一部であっても、exe は DLL のアセンブリを見つけることができません)。

  • スケーターは、単一のライセンスで 300 ドルです。彼らのウェブサイトには、混合アセンブリをサポートしていると主張するものは何もありません。アプリを試してがっかりするのにうんざりしているので、そうではないと思います。

また、Microsoft の ILMerge を試して、DLL を .exe とマージしてから難読化できるかどうかを確認しましたが、混合 DLL でチョークするようです。

Dotfuscator に代わるものや、正規のコピーを購入するのに適した場所について何か提案はありますか? 安価に販売していると主張する名前のないサイトをいくつか見つけましたが、それらはロシアの海賊版だと思います.

4

2 に答える 2

0

同じ問題に対していくつかの解決策を試しました。この問題に対する優れた解決策はありません。 LibZは、ILMerge の適切な代替手段です。アセンブリをプログラムのリソースにパックし、消費されたアセンブリに関してメモリからロードするだけで、かわいらしくなる可能性があります。少なくとも実行可能ファイルを難読化すると、さらに別のレベルの間接性が追加されます。

于 2014-01-05T01:47:39.497 に答える
-1

{smartassembly} を使用して、SlimDX と DirectShow.Net を .net プログラムと一緒にマージしました。どちらも C++/CLI を使用して書かれています。彼らは私の側でうまく合併しました。混合アセンブリをサポートしていないという指示はどこで得ましたか?

編集: 私自身は以前に C++\CLI を使用したことがないため、100% 確信はありませんが、以前に純粋な C++ アプリを作成したことがあります。これは私が収集したものです。SlimDX の AssemblyInfo.cpp ファイルには、次のようなアセンブリを構成する行があります。

[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)];

したがって、アンマネージ コードが含まれていると想定します。または、管理されていないコードが含まれていることを示すために、どのような兆候を探す必要があるか教えてください。

ところで、{smartassembly} のバージョン 3.0.3063 を使用しています

于 2008-12-16T04:03:04.550 に答える