9

C# .NET アプリケーションを Android に移植することを検討しており、Xamarin.Android と Mono フレームワークについて読み始めました。私はAndroid開発を始めたばかりです。

メインのhttp://xamarin.com/androidページに次のように記載されていることに気付きました。

ネイティブ コード すべてのネイティブ API に完全にアクセスできる、高性能のコンパイル済みコード。

これは、生成されたコードがリバース エンジニアリングがより困難なネイティブ コードになることを意味しますか? とりわけ、重要なアルゴリズムを含むクラス ライブラリを作成したいと考えています。これをネイティブ コードにコンパイルして、リバース エンジニアリングを阻止できれば、移植に対する不安は軽減されます。

Androidコードが難読化された.netアセンブリよりも逆コンパイルするのがそれほど難しくないという他のいくつかの投稿を読みました(ProGuardを使用した後)。ネイティブ コードのコンパイルは、これらの投稿の後に追加された最近の機能ですか? アドバイスをありがとう!

4

2 に答える 2

11

現在、Android の Xamarin はネイティブ プロセッサ コードにコンパイルされません。Xamarin でコンパイルされた各アプリが残りのアプリケーション ファイルと共にインストールする Mono 仮想マシンで実行される .NET p-code を作成します。私の知る限り、Android 用のネイティブ コードを作成する唯一の合理的な方法は、Android NDK ( http://developer.android.com/tools/sdk/ndk/index.html ) を使用し、C または C++ でコードを記述することです。 .

Xamarin と Dot42 でコンパイルされた C# の Java コードと類似コード、および実際のアプリ (テキスト処理) のネイティブ コードを比較して、いくつかの非公式なベンチマークを行いました。基本的に、Xamarin の C# は、その特定のアプリで Java や Dot42 よりも約 10 ~ 20% 高速でしたが、ネイティブ コードは約 5 ~ 6 倍高速でした。続きを読む:

Xamarin C# と Java で記述された Android アプリのパフォーマンスを比較するベンチマーク (コードと結果) を持っている人はいますか?

また、私の Android Java コードをハッキングから保護するために、DexGuard 難読化ツール ( http://www.saikoa.com/dexguard ) を使用しています。しかし、善良なハッカーがそのような難読化されたコードを逆コンパイルして改ざんすることがどれほど難しいかは、私にはわかりません。もちろん、DexGuard は .NET Xamarin コードを保護せず、Java コードまたは JVM 用にコンパイルされたその他のコードのみを保護します。Dalvik VM p-code に直接コンパイルされる Dot42 コードも保護されません (すべての通常の Android アプリが実行される仮想マシンであり、Java コードも "dexed" され、Android で実行する前に Dalvik コードに変換されます)。

グレッグ

于 2013-09-29T07:29:03.000 に答える
4

Xamarin.Android は JIT されているため、C# に直接逆コンパイルできます。APK を解凍し、assembly/*.dll で ILSpy を使用するだけです。これは、Xamarin.iOS では実行できません。これは、Apple によって課された実行時の制限により、AOT でコンパイルされるためです。

Rdio.Android

于 2014-12-09T23:03:28.010 に答える