多语言展示
当前在线:1909今日阅读:84今日分享:32

Android APK保护之防止反编译和防止破解

保护软件源码安全是许多人的本能反应,也是软件企业保护核心资产的方式。防止软件被反编译、被破解,这很重要,那么都有哪些方式和技术手段呢!俗话说:道高一尺,魔高一丈,编译与反编译,破解与反破解,必将是一场持久战。
工具/原料

android,apk

方法/步骤
1

防止APKTool反编译APKTool是常用的APK反编译工具,可以说市场上99%的APK都可以用它反编译出来。XML等样式、配置、页面文件都能完全反编译出来。那怎么防apktool呢?首先要从APKTool的来历入手,APKTool是GOOGLE提供的APK编译工具,那么完全基于android原生框架构建的APK都是能被轻易破解的,反编译出来的目录都包括lib、res,assets。通过改变这样的目录框架,就能让APKTool失效,最新的QQ反编译就失败了。通过解压看到,QQ软件目录包括lib、R、assets、META-INF等,主要区别是res目录名变成了R,具体是通过什么方式进行操作的,我还没深入研究。

2

防止dex2jar反编译dex2jar是反编译java代码的利器,APK包中的文件classes.dex通过这个工具就可以破解为jar文件了,而jar文件用JD-GUI工具就能看到java源码了。那么破坏dex文件的结构,或改变dex文件的二进制值就可以达到防止反编译的目的。目前360手机卫士就用这种方式。介面XML随便你看,JAVA代码就不让看了。

3

核心代码用NDK编译成so动态库  so文件是用c、c++编译成的动态链接库,要破解就很难了。目前主流的软件加密,通讯,传输协议等都被封装成了SO动态库。例如libsdksecurity.so,libBaiduMapSDK.so等。

4

代码混淆代码混淆只能是增加破解后的阅读难度,但是破解后核心的传输协议,加密算法,密钥等就都暴露了,这种方式的已不安全。

5

防止二次打包  目前android的应用市场可以说是鱼龙混杂,项目上传到应用市场后就有可能被二次打包,植入广告,然后通过运行时签名验证的方法,可能补上这个洞。

注意事项

纯原创,如果觉得对自己有帮助,请点投票按钮,投上您宝贵的一票,谢谢!

推荐信息