-
-
[原创]新版某企业壳加固自定义linker与frida检测分析
-
-
[原创]新版某企业壳加固自定义linker与frida检测分析
昨天发了某企业壳的逆向分析,评论区有人说不是最新版,于是找了一个最新版的bb加固,样本是moutai。花了3个小时重新分析了一下,总结以下新增的点。
上一篇某企业壳逆向分析——从过检测到dex代码抽取还原
新版加入了自定义linker so壳,相较于旧版本强了一些。
首先通过maps文件定位到内存中的so,然后通过pread读取加密的数据:

根据解密出的配置文件,mmap出一段内存,用于复制真实的so的rx和rw段:

第一次mmap出的是rx段,对elf头进行rc4解密,然后对剩余部分进行简单的异或解密:


然后再次mmap出rw段,用异或解密。
由于这个so壳没有将elfheader和program header,dynamic header拆分,解密完后在内存中就是一个完整的elf,我们直接dump下来即可:

剩下的部分就是常规的prelink,重定位,执行init_array等操作,不再赘述。
dump后的so可以直接被ida打开,不需要手动修复:

简单看了一下具体内容,和之前的版本基本一致,还是走统一的造crash退出函数:

并且异常id和之前的一致,比如检测frida依然是256,检测root依然是1:

dex壳部分和之前的版本一致,使用上篇文章的代码可以直接把代码抽取还原:

这里主要看看新增了哪些frida检测
上个版本检查了java-bridge的三个特征,这个版本检查了更多的编译特征:

前三个依然是frida-java-bridge的特征。
中间三个是frida自身用来定位dlopen时的匹配特征码,被当做常量编译进了frida的so里,也成了frida的特征:

具体可以查看gumandorid.c
在ida中,确实可以看到对应的字符串在常量区:

最后一个字符串/subprojects/frida应该是编译的项目路径,被打包进so了。
和之前版本一致:

从20000端口检查到30000
这是frida 16.8之后的特征,会模仿调试器的做法,hook linker的__dl_rtld_db_dlactivity。
在调试状态下,该符号的会被写入brk0,用来通知调试器有新的so被加载。
[培训]《冰与火的战歌:Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
最后于 6小时前
被乐子人编辑
,原因: