5

Google 推荐并打包 ProGuard 用于代码混淆。但是,它附带的默认配置似乎很少,并且可以在一定程度上进行逆向工程。大多数寻求逆向工程的人并不是真的在寻找详细的代码,而是可能会提取逻辑。是否有任何指导方针可以更有效地配置 ProGuard?(在某种程度上 Javascript 被最小化会很好。)

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

4

2 回答 2

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 的帖子在这里),所以你可以想象跟随它们是多么容易。

于 2011-04-14T16:48:02.880 回答
1

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

https://github.com/MichaelRocks/paranoid

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

https://github.com/shwenzhang/AndResGuard

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

于 2018-06-05T06:47:25.367 回答