所以我最近测试了我的一个Android应用程序的解组,我惊恐地发现代码很可读。更糟糕的是,我所有的变量名称都完好无损!我认为那些会在编译时压缩到不可读的东西。该应用程序会在一段时间后触发到期。但是,现在我找到名为checkIfExpired()的函数并找到变量“expired”对我来说是微不足道的。是否有任何好方法可以让潜在的黑客更难搞乱我的应用程序?
在有人说明显之前:是的,通过默默无闻是安全。但显然这是我唯一的选择,因为用户总是可以访问我的所有代码。这对所有应用都是一样的。我失去活动的细节并不重要,重点是我不想让反汇编程序理解我所做的一些事情。
方面问题:为什么变量名称没有被压缩?如果我停止使用非常长的变量名,我的程序会运行得更快,这是我的习惯吗?
答案 0 :(得分:3)
混淆器是最好的解决方案。
这是我实际上没有尝试但看起来很有希望的一个: http://proguard.sourceforge.net/FAQ.html#android
ProGuard是一个免费的Java类文件 收缩器,优化器,混淆器和 预校验。它检测并删除 未使用的类,字段,方法和 属性。它优化字节码和 删除未使用的指令它 重命名剩余的类,字段, 和使用短暂无意义的方法 名。最后,它预先验证了 已处理的Java 6或Java代码 微版。
答案 1 :(得分:0)
Proguard 几乎是您需要的一切 我正在将它用于我的所有应用程序并且效果很好,将应用程序大小减少约30%作为副作用 问题是,我不得不编写一个自定义bash构建脚本,因为你无法将Proguard插入现有的Android ant构建过程。可能应该得到一个博客并写一下。 :)