我们的开发团队刚刚(大部分)在 Visual Studio 中使用 MonoDroid 完成了一个 Android 应用程序。因为它与银行业务有关,所以我们想尝试对其进行混淆,以增加一些安全性,防止任何人试图反编译它。最初,我认为我可以只使用 ProGuard,但似乎没有可以在 Visual Studio 中编辑的 project.properties 文件。谁能在这个问题上提供一些光辉的帮助,并告诉我是否可以将 ProGuard 与 Mono 一起使用,而我的新鲜感只是蒙蔽了我的视野?
(另一位开发人员尝试使用 Dotfuscator - 因为我们无法立即找到使用 ProGuard 的方法 - 但它失败并出现许多错误;Mono 运行时似乎给它带来了问题。)
Mono for Android 工具链目前不支持运行 proguard。
然而,除了一个广泛的例外,缺乏 proguard 支持在很大程度上是没有意义的。 Proguard 仅在 Java 字节码上运行。这Android 架构的 Mono http://docs.xamarin.com/android/advanced_topics/architecture进程中有Mono运行时运行; .NET CIL 没有“编译”成 Java 字节码,CIL 是由 Mono 进行 JIT 处理的。唯一运行的 Java 代码是Android 可调用包装器 http://docs.xamarin.com/android/advanced_topics/architecture/android_callable_wrappers,允许 Java/Android 调用托管代码。
因此,proguard 在 Mono for Android 应用程序中唯一要保护的是生成的 Android Callable Wrappers,它主要由一堆组成native
方法声明。 Android Callable Wrappers 中不会有任何需要反编译的业务逻辑。
相反,CIL 程序集未压缩地存储在.apk
文件。依次可以对程序集进行反编译以获得所有业务逻辑。这里的解决方案是在将程序集嵌入到.apk
。有reports http://lists.ximian.com/pipermail/monodroid/2011-December/007586.html可以使用 Xenocode 的 Postbuild 2010,尽管我不知道如何连接它的任何细节。
上面提到的异常与包含在构建过程 http://docs.xamarin.com/android/advanced_topics/build_process#Java_Interop_Support通过AndroidJavaSource
and AndroidJavaLibrary
构建操作,用于包含 AdMob 库等内容。对于这种情况,我们应该在构建过程中添加混淆器支持,尽管我没有关于何时添加混淆器支持的预计时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)