一、Android安全,恐怖的代码反编译
- 以前我反编译代码,都是用:dex2jar和apkTools的,近期接触到的利器:JADX,发现真的很强大,JAVA文件,resource文件,感觉APK就是在裸奔啊。直接上图,下面的反编译大众点评的APK,
通过反编译,可以知道,点评用了:glide、pulltorefresh、volley、Rxbinding、Okhttp,photoview Google 相关用到:v4,v7,multidex,design,annotaion。还有QQ支付宝等一系列的SNS登录。
可以看一下别人用到了哪些技术。是否有什么新发现呢?看看是否有必要引入到自己的项目中呢?
- 你会说,有本事你去搞微信,那我们来试试微信。
这次我们来看微信的资源文件:能看看别人的资源,也是极好的。
所以看到了吧?微信也是一样。
所以App,你躲过了dex2jar,那试试你家的APK能不能躲过 jadx吧。如果没有躲过,那快点想想办法吧。
二、那安全我们要做哪些事情呢?
-
数据不被拦截和破解 那就需要https和加密
-
数据不被篡改的能力 比如秒杀活动,用户直接拼出下单请求来,然后直接后台发请求来秒杀。
-
用户鉴权 只有登陆用户才能访问特定的API
-
所以上面所有的内容,都是和加密相关的。涉及到加密,那就有加密和解密的Key.所以我们真正重要的就是加密解密的Key。而key又是写在JAVA代码中,所以要保证的首要内容是JAVA代码。
-
那保护JAVA代码,我们可以做如下操作:
- 混淆,这个只是增加代码阅读能力,然后减少APK体积,实际上没有什么鸟用。
- 再就是加固了,我测试了一下,通过 360加固 后的APK,不管是dex2jar还是jadx,都是反编译不出来的。形如下图:
还是可以看到资源文件,但已经看不到JAVA文件了。
-
但还有一些可以查看smili的高级程序员,这种,我们就要增加得到加密key的难度。
- 比如把key放到文本,并存为.jpg放到资源文件中。
- 把key分为多段,分别从服务端,.jpg文件,string文件,java代码,等多个地方获取,这样增加获取难度。APP就会相对安全,
- 再不行,把key放到so包里面。
- 总之,安全这个事情,就是攻防战,所以的防,只是增加了一个攻击的门槛。
赛文市场营销