2012-01-06 49 views
3

我们的开发团队只是(大部分)完成了在Visual Studio中使用MonoDroid的Android应用程序。因为它与银行有关,所以我们试图对其进行混淆,以便为试图对其进行反编译的任何人增加一些安全性。最初,我想我可以使用ProGuard,但似乎没有可以在Visual Studio中编辑的project.properties文件。任何人都可以在这个主题上闪耀一些光辉的曙光,并告诉我是否可以用Mono来使用ProGuard,而我的新生只是让我的视觉模糊不清?有没有办法在MonoDroid上使用ProGuard?

(另一名开发者试图使用Dotfuscator的 - 由于我们无法立即找到一种方法,使用ProGuard-但它与众多的错误而导致失败;单声道运行时似乎给它的问题。)

+0

我认为monodroid团队可以回答这个最好的? – Peterdk 2012-01-06 21:41:18

+0

几天前我实际上发了一封支持邮件,但没有回复。以为我会在这里问一个最后的尝试。 – Luke 2012-01-06 22:04:23

+0

混淆不会真的做任何事情来显着捍卫你的代码库。首先,运行时必须重新构建cil才能运行它。如果保护依赖于代码的一部分,那么您的应用程序模型就是错误的。这说我可以看到你想隐藏你的知识产权 – IanNorton 2012-01-07 07:41:32

回答

5

Mono的Android版工具链目前没有任何运行proguard的支持。

但是,除了一个很大的例外,缺乏proguard支持在很大程度上是没有意义的。 Proguard只能运行在Java字节码上。 Mono for Android architecture的Mono运行时正在运行; .NET CIL没有被“编译”成Java字节码,CIL被Mono JIT。唯一运行的Java代码是Android Callable Wrappers,它允许Java/Android调用托管代码。

因此,在单机版Android应用程序中唯一保护的是proguard生成的Android Callable Wrappers,主要由一堆native方法声明组成。 Android Callable Wrappers中不会有任何反编译的业务逻辑。

相反,CIL程序集未压缩存储在.apk文件中。这些程序集可以被反编译以获得您的所有业务逻辑。这里的解决方案是在将组件嵌入.apk之前对其进行模糊处理。有Xenocode的Postbuild 2010可以使用的reports,但我不知道有关如何挂钩的细节。

上述异常涉及build proces中通过AndroidJavaSourceAndroidJavaLibrary构建操作包含的任何自定义Java代码,这些代码将用于包含诸如AdMob库之类的内容。对于这种情况,我们应该为构建过程添加proguard支持,尽管在添加proguard支持时没有ETA。

+0

这真的清除了事情。谢谢! – Luke 2012-01-09 14:46:14