导语:添加一偏针对加固的教程
这篇应该是理论居多,也可选择跳着看。。
了解一个国外加固与国内加固的区别,比较大的是目前遇见的国外加固多为代码混淆,意思就是其dex是完整的。但并不代表着其难度比不上国内加固,反而混淆严重的代码更具分析难度。
去签的前提,需对各个加固标志性文件有个了解,appguard的加固在国加固中其实安全度不高,但他综合性的结合了几个高难度的国外加固的方式,如appdome和liapp的代码混淆,以及在assets和安装包内放置原签名文件。
但是appdeme的加固不知是否分为企业加固或者是检验方式区别,对同家厂商的游戏研究下,发现同样的去签方式不一定可以达到通杀
对liapp的研究,通过demo测试其加固方式是为代码混淆入口替换以及dat加密,是的liapp有专门针对unity的一个加固方式,以及在替换原生安卓loadlibrary方法,还在攻克中暂定为20%
了解完国外加固常用方式,再了解一下第三方签名检验,如何对软件进行保护。基本上离不开对入口的替换,然后再插入各种代码,跟去签一样,入口的替换是去签与加签最常见的方式。相当于给你的门多加了一层门,而本次针对appguad的方式就是还原原入口。
对appguad的加固的软件开始进行分析,还原入口方式可根据监听工具进行监听获取。但是在这个加固中,其会对Xposed环境进行检测,显然在没有相关过检测工具下。算法助手是无法使用的。
那么这个时候就要借助一定的正向开发基础对为逆向去加固进行理论支撑。通过对Uniy引擎的安卓端游戏的了解,发现其主要是在于so和dat文件。java中的dex与xml一般是一键打包而来,那么其入口如果开发者没有过多在意修改的话,一般是一样的。
如果遇到不一样的,可通过其加固后的入口定位类名,到入口方法进行了解。
invoke-super {p0}, Landroid/app/Application;->onCreate()V
发现没有其他标志性的入口函数,只有一个自带的,初步判断其应该没有对原入口加密混淆,那么按照unity原生入口的了解,最终我们只需把xml的入口处代码进行删除即可。
如果有三方检验还有通过插入代码,形成闪退效果,一般的混淆程度不大,可通过mt的正则匹配去除混淆,或者自写一个Python工具进行去除。。
仅针对java层
暂无评论内容