Dotfuscatorを使用してアプリケーションをリバースエンジニアリングから保護しました。Windowsアプリケーションでdllファイルを暗号化しましたが、OSX / MonoTouchでどのように暗号化できますか?
ipaからdllを抽出し、Windowsでdllを混乱させ、暗号化されたdllをIPAに再パックしてから、appstoreに公開しますか?
簡単な解決策はありますか?
Dotfuscatorを使用してアプリケーションをリバースエンジニアリングから保護しました。Windowsアプリケーションでdllファイルを暗号化しましたが、OSX / MonoTouchでどのように暗号化できますか?
ipaからdllを抽出し、Windowsでdllを混乱させ、暗号化されたdllをIPAに再パックしてから、appstoreに公開しますか?
簡単な解決策はありますか?
何よりもまず、iOSではJIT(ジャストインタイム)コンパイルが許可されていないことを覚えておく必要があります。これは、すべてがAOT(事前)コンパイラを通過する必要があることを意味します。
これにより、アセンブリからのすべてのILコードがネイティブARM(v6、v7、thumb)命令に変換され、ILは不要になります。
これは、のビルド時にRelease|iPhone
、ILコードがアセンブリから削除されることを意味します。削除されているため、公開するアプリケーションには存在しません(逆コンパイルされます)。
ノート
メタデータは引き続き必要であるため(たとえば、必要な場合) 、アセンブリは引き続きアプリケーション内にありますSystem.Reflection
。したがって、シンボル名とリソースファイルは、難読化ツールのようにマングル/暗号化されることはありません。
ARMアセンブリを分解することはできますが(AOTコンパイルの前にアセンブリを難読化した場合でもそうです)、ILよりも理解する(そしてC#に戻る)のははるかに困難です。
IPAからアセンブリを抽出して処理すると、少なくともアプリケーションの署名が壊れます(再署名できます)。また、他の多くのものを壊す可能性があります(コードは変更された可能性のある名前/構造を参照するため)。私はこれがうまくいくとは思いません(しかし、それはあなたがあなたの難読化器から使うであろうオプションに依存します)。