- 防止APKTool反编译
APKTool 是常用的APK反编译工具,可以说市场上99%的APK都可以用它反编译出来。XML等样式、配置、页面文件都能完全反编译出来。
首先要从APKTool的来历入手,APKTool是GOOGLE提供的APK编译工具,那么完全基于android原生框架构建的APK都是能被轻易破解的,反编译出来的目录都包括lib、res,assets等。通过改变这样的目录框架,就能让APKTool失效。
- 防止dex2jar反编译
dex2jar 是反编译java代码的利器,APK包中的文件classes.dex通过这个工具就可以破解为jar文件了,而jar文件用JD-GUI工具就能看到 java源码了。那么破坏dex文件的结构,或改变dex文件的二进制值就可以达到防止反编译的目的。
- 核心代码用NDK编译成so动态库
so文件是用c、c++编译成的动态链接库,要破解就很难了。目前主流的软件加密,通讯,传输协议等都被封装成了SO动态库。例如libsdksecurity.so,libBaiduMapSDK.so等。
- 代码混淆
代码混淆只能是增加破解后的阅读难度,但是破解后核心的传输协议,加密算法,密钥等就都暴露了,这种方式的已不安全。
- 防止二次打包
目前android的应用市场可以说是鱼龙混杂,项目上传到应用市场后就有可能被二次打包,植入广告,然后通过运行时签名验证的方法,可能补上这个洞。
1.将Apk以压缩包的形式打开删除原签名再签名,安装之后打开异常的,则基本可以断定是签名检验。
2.如果在断网的情况下同样是会出现异常,则是本地的签名检验;
3.如果首先出现的是提示网络没有连接,则是服务器端的签名校验
- Apk加固
目前市面上的加固平台数不胜数,腾讯、360、梆梆、爱加密等。暂时来说各大逆向论坛很少放出关于这种加固的破解方式,可以说目前来说加固还是比较安全的,当然对于大神级别的存在,依然等于不设防