前言
由于工作需要渗透测试的两个APK都使用了梆梆加固企业版,一直是一块硬骨头不想去啃。其他地方实在交不出漏洞了,遂抽空死磕一下。
APK自身还有防止代理抓包,防止VPN甚至自己建立了个VPN,加固防止Frida注入、Root检测等。
构想了两套方案:
- 绕过Frida注入检测、Root检测等,进行Frida注入,同事研究了很长时间,实在没有技术去修复环境,对每个检测点注入绕过检测,困难巨大。
- 对加固包进行脱修,获得未加固包,即可随意进行注入操作
鉴于Frida对持久化支持不好,尝试使用jsHook工具也不稳定,后期测试每次都需要借助电脑注入脚本,主要是也绕不过去加固包的检测。于是尝试脱壳修复方法,前期同事否认了我的方案,认为脱壳出来的dex支离破碎,也不完整,只能阅读代码,不能够再恢复成未加固包。同事使用的脱壳手机脱出来的dex确实很凌乱,有重复和不完整,用这个dex进行修复确实无法运行,要么闪退无法运行,要么没有成功去除签名检测,加固的签名检测仍然生效,刚打开弹出一句提示就退出了。
阅读了很多文章,讲原理的,教脱壳的,事实上是因为刚开始同事脱出来dex有问题,因而没有修复成功,斥巨资购买了mt论坛的邀请码,在上面看到了一篇1月份的热腾腾的热门帖子,第一句就指明了去哪里进行脱壳。我晕。下面开始介绍全过程
脱壳
打开脱壳网站,上传加固的apk包,下载脱壳结果
网站很好找,合规原因避免泛滥,不提供地址链接,懂得都懂

修复
删除加固特征
路径:
- /assets/mate-data
- /lib/所有/libDexHelper.so
- /lib/所有/libDexHelper-x86.so
保存时不要勾选自动签名

查找原入口
反编译classes.dex在com.secneo.apkwrapper.H类中找到原入口APPNAME、ACFNAME

替换入口删除提供者
打开AndroidManifest.xml文件
android:name的值com.secneo.apkwrapper.AW 替换成APPNAME的值
android:appComponentFactory的值 com.secneo.apkwrapper.AP 替换成ACFNAME的值
将最后一个提供者删除

处理脱壳的dex

回填apk包

去除签名校验

参考文章
【实战】梆梆企业脱修
某点社区之梆梆脱壳修复过程(非企业版)
爱加密企业版参考
“爱加密用反射大师是因为反射大师脱爱加密脱的比较全。”52破解参考
工具包分享文章
大佬脱壳包分享(提取码:mJTC)
MT管理器会员版2.14.5文章
MT管理器会员版2.14.5共存版蓝奏云