在开发过程中,我们总是想保护自己的产品不被盗用或者滥用。比如被插播小广告,比如被植入病毒,如下是我觉得比较有用的保护措施,可能流于皮毛。
1.混淆:最基本的方式,虽然在反编译软件面前无法阻挡,但是合理设置参数,可以让他变成类似A a()这样的东西,估计没人喜欢看了。
2.签名:用自己保管的签名文件签名。
3.JNI中放置重要代码:由于so库比较难反出可阅读的代码,所以将重要的步骤放里面是个不错的选择,上层只暴露接口,但是这样无法保护java代码。
4.android:export设置为false。
5.将一些敏感信息,比如三方支付的key放在服务器端,不要放在客户端,防止失窃。
6.读取签名信息,并和服务器上的内容做比对,如果失效就不让用,但是这个方法如果别人绕过去那段代码就无语了。不过可以采用初始化时JNI层联网验证签名,验证失败则直接在JNI层退出程序。这样就问题不大了。
7.第三方应用加固:比如360加固保,具体的原理有点复杂,下面是网上搜的介绍文章:http://bbs.51cto.com/thread-1159902-1.html。