2012-03-12 12 views
10

アプリケーションをリバースエンジニアリングから保護するためにDotfuscatorを使用しましたが、Windowsアプリケーションでdllファイルを暗号化しましたが、OSX/MonoTouchでどのようにすることができますか?MonoTouch:アプリケーションを保護する方法

ipaからdllを抽出し、dllをWindowsで混乱させ、暗号化されたdllをIPAに再パックしてappstoreに公開しますか?

簡単な解決法はありますか?

答えて

16

まず、iOSではJIT(ちょうど時間内)のコンパイルができないことを覚えておく必要があります。これは、すべてがAOT(前倒し)コンパイラを通過する必要があることを意味します。

は、これはあなたのアセンブリからすべてのILコードをネイティブARM(V6、V7および/または親指)命令とILははもうを必要とされていないに変換されていることの結果。

これは、Release|iPhoneのビルド時にILコードがアセンブリから削除されることを意味します。ストリップされているので、公開するアプリケーションには(デコンパイルするために)存在しません。

NOTES

  • アセンブリは依然として(例えばSystem.Reflectionそれを必要とする)メタデータが依然として必要とされているため、アプリケーション内部あろう。したがって、シンボル名やリソースファイルは、難読化ツールのようにマングル/暗号化されません。

  • あなたは、ARMアセンブリを分解することができます(それはあなたがAOTコンパイルの前にアセンブリを難読化しても真なります)が、それはILがあるよりも理解(とバックC#に取得)するずっと難しくなります。

  • IPAからアセンブリを抽出して処理すると、アプリケーションの署名が(再署名可能)以上になると、が破損します。 は、(コードは変更されている可能性のある名前/構造を参照するため)他の多くのものを壊す可能性があります。私はこれがうまくいくとは思わない(しかし、それは難読化ツールから使用するオプションに依存する)。

+1

ありがとう。リフレクター – BlueSky

+3

ありがとうございます。はい、私はモノトゥーでAOTコンパイラだと理解しています。私はそれを間違えた、昨日私はリフレクターツールでdllを(ipaパッケージから)置くので、私は多くのC#コードを見た。今私はそれを見直します。それは単なるメソッドスタブであり、ビジネスロジックコードはありません。そのような良い製品を持っているxamarinチームに感謝します。 – BlueSky

関連する問題