从反汇编程序中保护我的应用程序安全性

时间:2010-05-21 12:21:59

标签: android security reverse-engineering

所以我最近测试了我的一个Android应用程序的解组,我惊恐地发现代码很可读。更糟糕的是,我所有的变量名称都完好无损!我认为那些会在编译时压缩到不可读的东西。该应用程序会在一段时间后触发到期。但是,现在我找到名为checkIfExpired()的函数并找到变量“expired”对我来说是微不足道的。是否有任何好方法可以让潜在的黑客更难搞乱我的应用程序?

在有人说明显之前:是的,通过默默无闻是安全。但显然这是我唯一的选择,因为用户总是可以访问我的所有代码。这对所有应用都是一样的。我失去活动的细节并不重要,重点是我不想让反汇编程序理解我所做的一些事情。

方面问题:为什么变量名称没有被压缩?如果我停止使用非常长的变量名,我的程序会运行得更快,这是我的习惯吗?

2 个答案:

答案 0 :(得分:3)

混淆器是最好的解决方案。

这是我实际上没有尝试但看起来很有希望的一个: http://proguard.sourceforge.net/FAQ.html#android

  

ProGuard是一个免费的Java类文件   收缩器,优化器,混淆器和   预校验。它检测并删除   未使用的类,字段,方法和   属性。它优化字节码和   删除未使用的指令它   重命名剩余的类,字段,   和使用短暂无意义的方法   名。最后,它预先验证了   已处理的Java 6或Java代码   微版。

答案 1 :(得分:0)

Proguard 几乎是您需要的一切 我正在将它用于我的所有应用程序并且效果很好,将应用程序大小减少约30%作为副作用 问题是,我不得不编写一个自定义bash构建脚本,因为你无法将Proguard插入现有的Android ant构建过程。可能应该得到一个博客并写一下。 :)