针对代码和资源的Android混淆

时间:2011-04-14 16:08:00

标签: android obfuscation android-manifest decompiling resource-files

Google建议并使用ProGuard打包进行代码混淆。但是,它附带的默认配置似乎很小,可以在一定程度上进行逆向工程。大多数希望进行逆向工程的人并不是在寻找细节代码,但可能会提取逻辑。是否有任何指导方针可以更有效地配置ProGuard?(Javascript最小化的程度会很好。)

其次,有像apktool这样的工具可以提取Manifest以及资源文件。并且它们没有任何混淆程度。这些当然可以揭示一些事情。有没有办法避免这种情况发生?

2 个答案:

答案 0 :(得分:7)

对于第一部分,我建议您查看这个问题:Android Game Keeps Getting Hacked。它没有直接解决ProGuard问题,但它确实为您提供了如何减少盗版的一些想法。

对于第二部分,我担心不,这不可能,因为那些是纯xml文件。你可以做的是减少资源的使用并直接在java中创建逻辑。这将以三种方式减少代码的暴露:

(1)显而易见的是,它显示了不太容易阅读的xml代码

(2)它创建了更长的smali文件,这些文件一开始并不容易理解:考虑到smali文件中的变量没有名称,但是数字,并且重复使用了几次,从而使它们变得更难了解。 V1可以先是TextView,然后是int,然后是私有静态方法。

(3)它减少了使用public.xml中的表格在smali文件上非常容易搜索的十六进制ID的使用。

当我将TouchWiz框架移植到一些自定义ROM时,我甚至制作了一个小型Java应用程序来自动识别ID(xda-developers帖子为here),因此您可以想象如何轻松地关注它们。

答案 1 :(得分:-1)

您现在可以使用新的gradle插件+库来有效地混淆类中的字符串,请在此处查看

https://github.com/MichaelRocks/paranoid

现在还有一个新的插件可以混淆资源,请在下面查看

https://github.com/shwenzhang/AndResGuard

并帮助分享这些重要信息,因此更多开发人员可以使用它,因此越来越多的开发人员将为这些插件的进一步开发做出贡献,因此我们可以共同改进这些插件。