首页
社区
课程
招聘
[原创]某三位数壳子免费版简易分析(Plus)
发表于: 2020-4-1 03:50 3594

[原创]某三位数壳子免费版简易分析(Plus)

2020-4-1 03:50
3594
看见有人分析三位数免费版,这里也顺带分享一些关于三位数壳子的内容。
某三位数壳子免费版自从2017年开始至今变化都不大。这里简要分析一下壳子的一些校验以及壳子静态脱除的思路。
三位数壳子会隐藏原始dex,再具体的就不说了,已经有人说过。
三位数壳子的应用执行以后会校验内容,基础的校验都在JNI_OnLoad当中。若校验不通过,则返回JNI_ERR,并且真实dex不加载。
如果JNI加载成功,attach以后dex将会解密出来,加载dex,交还控制权给真实原始的dex,应用开始正常运行。
这些大致是整体的工作流程,下面先说说基础的静态和动态脱壳。
三位数的免费版壳子会调用OpenCommon来加载原始的dex,利用这一点,修改固件或者用SPatch之类的工具,直接就能将原始dex写出,再具体的就不说了,大家都懂。
写出来的dex,简单修复magic头以后,会发现onCreate被加密,这点也有人分析了,具体内容不多说,我们说说如何还原。
onCreate的vm字节码,实际上对应着一套JNI方法表,这个也不多说了,静态分析的话,可以自己做个Python脚本,将字节码对应的JNI方法提取出来。方法表可以用特征码抓,已经有人对这个方法表做了分析,相信特征抓取也会变得简单。抓取出来以后,直接转化为对应的smali语句即可,可以使用dexlib之类的工具或者dx生成(创建相应的活动类,自己生成方法,如果嫌麻烦,直接用动态代理的方式,继承原始的类,重写onCreate即可,动态代理可以参考别人使用dx动态生成dex并加载的方案)。
根据我的观察,三位数这套映射表每隔一段时间会变动一次,并且3年来这套方案几乎毫无变化,毕竟还原onCreate头还是需要一点技术含量的。
说完壳子的还原,这里说说这个壳子有趣的地方:
这个壳子两年前不会检测插入的dex,去年开始,壳子会检测插入的classes2。这个检测比较少见,对比起别的壳子也显得比较有趣。过这个检测也十分简单,修改pathList即可。
壳子以前有个小漏洞,修改了mResDir和mAppDir,就可以不需要做签名验证破解。上个月壳子免费版更新,这种方法暂时失效。
免费新版壳子,只需要做共存(例如ApkEditor)即可轻松过签名校验,共存以后包名改了,很容易就知道是靠什么校验的。
免费版壳子会修改定位检测和定位获取相关的部分,如果包内置入了获取位置信息的代码,壳子也会跟着置入自己的获取位置信息代码,用意不明。

附上简易免ROOT开瓢(脱壳)的SPatch工具,设置开免修改,添加应用选择本地,下拉刷新,返回设置即可开启开瓢模式。写出的dex在存储根目录或者应用外置存储目录(Android/data/包名/files)

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 2020-4-1 04:00 被lhxdiao编辑 ,原因:
上传的附件:
收藏
免费 3
支持
分享
最新回复 (3)
雪    币: 7641
活跃值: (3430)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
整体介绍的很不错。可以让版主或者楼主把本版一些文章中的知识点文章,插入链接进去,就完美了。
2020-4-1 08:52
0
雪    币: 502
活跃值: (1049)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
很遗憾 我没搞清楚这个是干啥用的 处理后就看到出来一个apk
2020-4-1 10:47
0
雪    币: 130
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
怎么共存?
2020-4-3 11:23
0
游客
登录 | 注册 方可回帖
返回