Xamarin.Android - does building native code do sophisticated reverse engineering?

We are considering porting our C # .NET application to Android, and I started reading about Xamarin.Android and the Mono framework. I am just starting out with Android development.

I note on the main page http://xamarin.com/android that it states:

Native code High-performance compiled code with full access to all native APIs.

Does this mean that the generated code will be native code, which is more difficult to rebuild? We would like, among other things, to create a class library that contains our key algorithms, and if we could compile it with our own code to prevent reverse engineering, this would make us less dangerous to port.

I read several other posts about Android code that are no more difficult to decompile than obfuscated .net assemblies (after using ProGuard). Is the inline compilation of the code the last function to appear after these messages? Thanks for any advice!

+7
android c # mono xamarin xamarin.android
source share
2 answers

Currently, Xamarin for Android does not compile its own processor code. It creates .NET code that runs on the Mono virtual machine, which each compiled Xamarin application installs along with the rest of the application files. As far as I know, the only way a reasonable way to create native code for Android is to use the Android NDK ( http://developer.android.com/tools/sdk/ndk/index.html ) and write the code in C or C ++.

I did some unofficial tests, comparing Java code and analogs in C # compiled with Xamarin and Dot42, and native code for a real application (text processing). Basically, Xamarin's C # was 10-20% faster than Java or Dot42 in this particular application, while native code was about 5-6 times faster. Read more at:

Does anyone have tests (code and results) comparing the performance of Android applications written in Xamarin C # and Java?

Also, to protect my Java Java code from hacking, I use obfuscator DexGuard ( http://www.saikoa.com/dexguard ). However, I really don't know how much harder it is for good hackers to decompile and manipulate such confusing code. DexGuard will not protect .NET Xamarin code, of course, only Java code or other code compiled for the JVM. It will not even protect the Dot42 code, which compiles directly to the Dalvik VM p-code (all regular Android applications are launched on the virtual machine, the Java code is also β€œdecoded” and converted to Dalvik code before it can run on Android).

Greg

+9
source share

Since Xamarin.Android is JIT'ed, it can be decompiled directly in C #. Just unzip the APK and use ILSpy with the / * builds. Dll. This cannot be done on Xamarin.iOS, as it is an AOT compiled due to the runtime restrictions imposed by Apple.

Rdio.Android

+4
source share

All Articles