首页
社区
课程
招聘
基本无视检测且稳定的Il2cppTrace模块
发表于: 2025-7-11 17:21 2437

基本无视检测且稳定的Il2cppTrace模块

2025-7-11 17:21
2437

前言

在对unity游戏逆向分析的过程中,时常需要先定位到相关逻辑函数,那如何快速找到我们需要的函数?其实最好的方法就是直接通过trace工具一键hook大量函数,再看那些函数是否被调用,没调用的函数自然可以略过,如有调用再重点验证即可。目前这方面最流行的trace工具应该是frida-il2cpp-bridge,但是随之frida检测的愈发难以绕过,frida-il2cpp-bridge的使用门槛也是水涨船高,因此Il2cppTraceModule便应运而生。

Il2cppTraceModule的大概运行过程

简单来说Il2cppTraceModule会先获取指定路径文件中存放的类名信息,再根据这个类名信息获取该类所有的函数的地址,然后再依据这些函数地址分别下hook。这就涉及到了hook框架的使用了,Il2cppTraceModule其实先后更换过好几个不同的hook框架。

Il2cppTraceModule尝试使用过的hook框架

Dobby

要说安卓平台上除了frida外,还有哪个native hook框架最为人所知,我觉得Dobby绝对算其中之一。因此自然而然成了Il2cppTraceModule使用过的第一个hook框架,那为什么后来又不继续使用了呢?
主要还是稳定性问题或者说和我的整体设计相冲,我是要将大量被hook函数的回调函数同时设置为同一个函数,但Dobby提供的能够注册回调函数的api只有DobbyInstrument,而这个api好像确实是不太稳定,在一些app上是能够稳定运行的,但是也有导致一些app崩溃的情况存在。

github上开源的其他轻量级inline hook项目

Android_Inline_Hook_ARM64以及And64InlineHook这些类似的轻量级的inline hook项目我均有尝试使用过,但其实要么是稳定性太差,要么是无法达到我想要的效果,所以最终也都弃用。

来自内核的uprobe hook技术

基于Kernel-Trace提供的用户层接口,我们能够直接使用uprobe去挂载任意函数地址。Kernel-Trace说起来也是为此而生,也是由于Il2cppTraceModule的使用,才能够发现并改进自身存在的诸多问题。依赖Kernel-Trace,最终达到了我所期望的效果,十分稳定,而且正确地使用uprobe去进行hook几乎不会产生任何额外特征,除了crc校验能够发现之外,基本算是无痕了。

结语

本来是想着用其他hook框架复现下frida-il2cpp-bridge的trace功能,没想到最后还是自己去研究uprobe实现了Kernel-Trace之后才算是彻底做完这个事。


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 6
支持
分享
最新回复 (3)
雪    币: 156
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
大佬牛比
2025-7-11 17:35
0
雪    币: 7
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
yyds
2025-7-11 19:17
0
雪    币: 160
活跃值: (1536)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
大佬牛比
2025-7-14 10:47
0
游客
登录 | 注册 方可回帖
返回