ご存知のように、Xamarinプロジェクトはdot net dll Assemblyにコンパイルされ、apkファイルにパックされ、DotPeekなどのリフレクターによって簡単に反映されます。
私の最初の質問は:どうすればコードを保護できますか?
私の2番目の質問は: SmartAssemblyのような難読化ツールはXamarinプロジェクトで使用できますか、それともXamarinプロジェクトはそれらをサポートしませんか?
APKの.NETコード(.DLLS)を保護する最善の方法は、 Ahead Of Time (AOT)コンパイルを有効にすることです。
AOTコンパイルは、アプリケーションのILコード(.dll)をネイティブ命令にコンパイルします。 APKにパッケージ化される最終的なコードは、マネージドILコードではなく、X86、armなどの命令です。
AOTコンパイルは、Enterprise以上のライセンスでのみ使用できます。
AOTはリバースエンジニアリングの難しさを増しますが、それでも100%絶対確実というわけではありません。最終的なバイナリは、ルート化されたデバイスからプルして、IDAproなどのソフトウェアを使用してリバースエンジニアリングすることができます。 DotPeekを使用するよりもはるかに困難ですが、それでも可能です。
AOTコンパイルを有効にすることの欠点に注意することも重要です。アプリが参照するすべてのアセンブリをコンパイルする必要があるため、アプリケーションのビルド時間は大幅に増加します。私の経験では、AOTを有効にすると、ビルド時間が200%〜300%増加すると予想されます。
さらに、AOTコンパイルにより、最終的なAPKサイズが増加します。
DotfuscatorはXamarinをサポートしており、統合方法についてはオンライン( Dotfuscator Professional または無料 Community Edition )の手順を参照してください。本質的に、プロセスは次のとおりです。
完全開示:私はPreEmptiveSolutionsで働いています。
最初の質問では、Xamarinコードを難読化するためのいくつかのツールを使用することができます。たとえば、 Crypto Obfuscator 、 Babel Obfuscator 、および Dotfuscator
2番目の質問では、SmartAssemblyの難読化が可能であるようです。 Windows Phoneの部分 here を確認してください。
コードが逆コンパイルされて調べられるのを完全に100%保護する方法はありません。
すべてのメソッドと変数をハッシュするのに多くの時間を費やしてから、難読化されたコードを理解するある種のアプリケーションインタープリターを作成するのにさらに多くの時間を費やすことができますが、それでも調査され、調査され、最終的にはクラックされます。