[原创]某某盾加固包逆向脱壳及原理分析
最近对移动应用安全加固产生了浓厚的信息,从而关注市面上已有的一些加固技术,既然想知道其中的相关原理,当然免不了对应的进行破解分析,于是就有了此主题内容,好了,废话不多说,直接上内容。
一、样本
1. 蓝海银行(com.LanHaiBank.mobile_v2.0.1_21.apk),直接从应用宝下载最新版本即可。
二、外壳特征
2.1外壳入口代码

2.2 壳实现库

三、脱壳
3.1 通过壳的入口代码可以看出,必定有一个2代壳,所以不管三七二十一先让程序跑起来然后通过cookie数组dump所有已经加载的dex.


3.2 检查发现没有加了其他更高级的壳,就只是加了一个简单的2代壳
四、原理分析
4.1 主要的实现代码在libegis.so库中,libegis.so加了压缩壳,可以脱壳或者带壳动态调试挂起来看都行。
4.2 反调试:
a、检查模拟器

b、检查调试器是否连接

c、检查TracerPid

d、文件签名校验

4.3 dex动态加载,主要思路是先加载一个假的dex然后,内存加载真实的dex,替换掉假的dex的cookie实现加载。
a、attachbasecontext native函数实现:

b、oncreatenative函数实现

五、总结
总得来说强度比较弱,就一个简单的2代壳,实现方式也是大同小异,没什么很特别的东西,还没使用其他厂商所宣传的函数分离,vmp的相关技术,对应的防调试手段也比较通用,整体来说,还是需要加强一下的。
