0

コードプロテクター(難読化とネイティブコンパイル)を使用しようとしています。ORMはリフレクションに少し依存すると思いますが、難読化とネイティブコンパイルの保護技術によって問題が発生するのではないかと心配しています。

誰かが良いデスクトップアプリケーションのために成功したORMとコード保護を試しましたか?WPFデスクトップアプリケーションがあります。

開発の主要言語はC#で、カスタムORMを使用していますが、商用ORMやADO.NETEFなども評価したいと思います。

質問は、コード保護とは何か、どのコード保護を使用すべきかについてではなく、ORMに対する保護の効果について質問しようとしています。

4

3 に答える 3

0

Redgate は少し前にSmart Assemblyを買収しました。これは、私がこれを行う必要がある場合に検討するものです。

少し前に、コードの難読化/暗号化を検討するために CodeViel を試し、ある程度の成功を収めました。これを行うことに真剣に取り組んでいる場合、アセンブリを一方の端にドロップして、保護されたアセンブリを飛び出すほど簡単ではないと思います。内部でのみ使用するコードの部分 (名前空間、クラス、メソッド、フィールド、プロパティ、構造体、イベント、およびリソース) と、他のリソースやライブラリに公開する必要がある部分を考慮する必要があります。私が見ていたケースでは、暗号化 (またはネイティブ コンパイルを使用) していくつかのメソッドの実装を非表示にすることができましたが、クラス定義 (名前、メソッド、プロパティはそのまま) を残しました。場合によっては、他のライブラリが必要とする単純な POCO オブジェクトしか含まれていないため、名前空間全体をそのままにしておきました。

どの戦略をどこで使用するか、逆コンパイル/リバースエンジニアリングを困難にするために難読化できる内部構造については、ケースバイケースで注意が必要なようです。それで十分です。他のケースでは、暗号化/ネイティブ コンパイルを使用して、メソッドの実装を単純に非表示にすることができます。また、アセンブリの一部がまったく触れられないように除外している場合もあります。これらのプログラムのほとんどは、開始できるいくつかの推奨されるデフォルトとオプションを提供しますが、コア IP を保護しながらエンド ユーザーを制限しない結果が得られるまで、これらを微調整および変更する必要があります。

于 2009-09-23T00:27:27.223 に答える
0

コードがリフレクションを使用している場合、おそらく難読化されたアセンブリは機能しません。元の名前で参照されているエンティティを難読化から除外する必要があります。難読化中にコードを分析し、破壊する可能性のあるメソッド ( Reflection など) が呼び出されたすべてのメソッドと行番号を表示するCrypto Obfuscatorを見てください。これは、正確な場所を特定し、名前変更から除外する必要があるプロパティ/クラスを決定するのに役立つため、時間を大幅に節約できます。

于 2009-11-24T06:59:00.780 に答える
0

.Net Reactor を試してください。http://www.eziriz.com/で入手可能

他のいくつかの製品よりもはるかに安価であり、さらに多くのことができます。また、特定のオプション (リフレクションの使用を維持するための難読化など) を無効にして、コードを引き続き保護する ILDASM 抑制などの特定のオプションのみを有効にすることもできます。

乾杯

于 2009-09-22T23:25:12.160 に答える