[转]怎么提高Android代码的安全性

[转]如何提高Android代码的安全性????????????????????????????????????????????????????????????????????

[转]如何提高Android代码的安全性

?????????????????????????????????????????????????????????????????????????????????? 图1 原始代码

????????[转]怎么提高Android代码的安全性

????????????????????????????????????????????????????????????????????????????????? 图2 混淆前反编译

????????[转]怎么提高Android代码的安全性

????????????????????????????????????????????????????????????????????????????????? 图3 混淆后反编译

???????? 我们可以看到,类名、方法名和变量名等都会被改掉,方法的含义无法直接看出来,但如果是字符串常量还是会被反编译出来的,所以说关键的key不能放到apk中,它无处遁形。

??????? 下面我们来介绍如何使用混淆工具。Android2.3中提供了混淆的功能,跟我们这里介绍的使用的都是proguard混淆器。

??????? 我们介绍的这一个方法,除了混淆之外,还包括程序的签名,安装等功能。它是基于ant编译的,功能更强大。你也可以在整个编译过程插入其他你想要的功能,例如单元测试。

?? ? ? ?使用方法:

??????? 首先要在你的工程中增加一个配置文件,用来配置环境变量和签名文件,例如build.cfg,在这个文件中需要指定哪些类不需要被混淆。在Android中,所有在配置文件中会使用到类名的类,不应该被混淆。否则程序执行过程中会出现ClassNotFoundException。

??????? 再创建一个build.xml,用于指定ant编译的过程。最后执行build.xml,就完成了代码的混淆、打包、签名整个过程。你可以用反编译工具检测一下是否混淆成功。

?????????[转]怎么提高Android代码的安全性

????????????????????????????????????????????????????????????????????????????????????????? 图4 执行build.xml的方法

?? ?请参考工程示例来操作,配置文件中需要修改的地方都已标出,请搜索“这里要修改”关键字,所有查找到的地方都要检查一下,按照自己的环境配置修改。

??? 以上几种方法结合使用,效果倍增。破解你程序的人会说,想不到狮吼功还有一招大喇叭……

??? 如果你的公司真的需要这么保密,那么,首先要看你的公司是否有严密成熟的信息安全制度,否则一切都徒劳,因为家贼难防,堡垒最容易从内部攻破。

??? 源代码已共享,地址:http://u.115.com/file/bhnchwu6

?? ?附:混淆使用的是免费的proguard组件,官网:http://proguard.sourceforge.net/

?