web-dev-qa-db-ja.com

Xamarinプロジェクトでの難読化

ご存知のように、Xamarinプロジェクトはdot net dll Assemblyにコンパイルされ、apkファイルにパックされ、DotPeekなどのリフレクターによって簡単に反映されます。

私の最初の質問は:どうすればコードを保護できますか?

私の2番目の質問は: SmartAssemblyのような難読化ツールはXamarinプロジェクトで使用できますか、それともXamarinプロジェクトはそれらをサポートしませんか?

15
Ali Bahrami

APKの.NETコード(.DLLS)を保護する最善の方法は、 Ahead Of Time (AOT)コンパイルを有効にすることです。

enter image description here

AOTコンパイルは、アプリケーションのILコード(.dll)をネイティブ命令にコンパイルします。 APKにパッケージ化される最終的なコードは、マネージドILコードではなく、X86、armなどの命令です。

AOTコンパイルは、Enterprise以上のライセンスでのみ使用できます。

AOTはリバースエンジニアリングの難しさを増しますが、それでも100%絶対確実というわけではありません。最終的なバイナリは、ルート化されたデバイスからプルして、IDAproなどのソフトウェアを使用してリバースエンジニアリングすることができます。 DotPeekを使用するよりもはるかに困難ですが、それでも可能です。

AOTコンパイルを有効にすることの欠点に注意することも重要です。アプリが参照するすべてのアセンブリをコンパイルする必要があるため、アプリケーションのビルド時間は大幅に増加します。私の経験では、AOTを有効にすると、ビルド時間が200%〜300%増加すると予想されます。

さらに、AOTコンパイルにより、最終的なAPKサイズが増加します。

6
matthewrdev

DotfuscatorはXamarinをサポートしており、統合方法についてはオンライン( Dotfuscator Professional または無料 Community Edition )の手順を参照してください。本質的に、プロセスは次のとおりです。

  1. AfterBuildターゲットを介してDotfuscatorを実行するようにビルドを構成します
  2. Dotfuscatorの構成:
    1. 入力を指定します
    2. 通常どおり、必要に応じて、名前の変更から対象を除外します
    3. モノラル互換の変換のみを使用する(Proのみ)
  3. 難読化されたバイナリを元の場所にコピーして戻すように、コピータスクまたはビルド後のイベントを構成します
  4. 構築、難読化の検証、テスト

完全開示:私はPreEmptiveSolutionsで働いています。

4
Nathan Arthur

最初の質問では、Xamarinコードを難読化するためのいくつかのツールを使用することができます。たとえば、 Crypto ObfuscatorBabel Obfuscator 、および Dotfuscator

2番目の質問では、SmartAssemblyの難読化が可能であるようです。 Windows Phoneの部分 here を確認してください。

4
Luis Beltran

コードが逆コンパイルされて調べられるのを完全に100%保護する方法はありません。

すべてのメソッドと変数をハッシュするのに多くの時間を費やしてから、難読化されたコードを理解するある種のアプリケーションインタープリターを作成するのにさらに多くの時間を費やすことができますが、それでも調査され、調査され、最終的にはクラックされます。

参照: 。NETアセンブリを逆コンパイルから保護するにはどうすればよいですか?

。NETコードをリバースエンジニアリングから保護しますか?

1
peter kover