首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
Android安全
发新帖
15
9
基本无视检测且稳定的Il2cppTrace模块
发表于: 2025-7-11 17:21
4192
基本无视检测且稳定的Il2cppTrace模块
安卓逆向test
2025-7-11 17:21
4192
# 前言 在对unity游戏逆向分析的过程中,时常需要先定位到相关逻辑函数,那如何快速找到我们需要的函数?其实最好的方法就是直接通过trace工具一键hook大量函数,再看那些函数是否被调用,没调用的函数自然可以略过,如有调用再重点验证即可。目前这方面最流行的trace工具应该是<a href="elink@b02K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6$3k6Y4y4X3K9i4c8$3L8X3#2Q4x3V1k6X3M7X3W2V1j5g2)9J5k6r3W2D9x3X3y4H3M7q4)9J5k6r3u0J5K9h3c8Y4k6b7`.`.">frida-il2cpp-bridge</a>,但是随之frida检测的愈发难以绕过,<a href="elink@8e0K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6$3k6Y4y4X3K9i4c8$3L8X3#2Q4x3V1k6X3M7X3W2V1j5g2)9J5k6r3W2D9x3X3y4H3M7q4)9J5k6r3u0J5K9h3c8Y4k6b7`.`.">frida-il2cpp-bridge</a>的使用门槛也是水涨船高,因此<a href="elink@5ebK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6m8L8X3c8J5L8$3W2V1f1X3g2$3k6i4u0K6k6i4u0Q4x3X3c8f1k6i4y4@1i4K6u0r3d9h3H3J5j5%4m8H3g2s2u0S2j5$3g2y4L8$3c8#2L8r3f1`.">Il2cppTraceModule</a>便应运而生。 # Il2cppTraceModule的大概运行过程 简单来说<a href="elink@dcfK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6m8L8X3c8J5L8$3W2V1f1X3g2$3k6i4u0K6k6i4u0Q4x3X3c8f1k6i4y4@1i4K6u0r3d9h3H3J5j5%4m8H3g2s2u0S2j5$3g2y4L8$3c8#2L8r3f1`.">Il2cppTraceModule</a>会先获取指定路径文件中存放的类名信息,再根据这个类名信息获取该类所有的函数的地址,然后再依据这些函数地址分别下hook。这就涉及到了hook框架的使用了,<a href="elink@13bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6m8L8X3c8J5L8$3W2V1f1X3g2$3k6i4u0K6k6i4u0Q4x3X3c8f1k6i4y4@1i4K6u0r3d9h3H3J5j5%4m8H3g2s2u0S2j5$3g2y4L8$3c8#2L8r3f1`.">Il2cppTraceModule</a>其实先后更换过好几个不同的hook框架。 # Il2cppTraceModule尝试使用过的hook框架 ## Dobby 要说安卓平台上除了frida外,还有哪个native hook框架最为人所知,我觉得<a href="elink@296K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6B7L8i4m8W2N6%4y4Q4x3V1k6p5L8$3u0T1P5b7`.`.">Dobby</a>绝对算其中之一。因此自然而然成了<a href="elink@296K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6m8L8X3c8J5L8$3W2V1f1X3g2$3k6i4u0K6k6i4u0Q4x3X3c8f1k6i4y4@1i4K6u0r3d9h3H3J5j5%4m8H3g2s2u0S2j5$3g2y4L8$3c8#2L8r3f1`.">Il2cppTraceModule</a>使用过的第一个hook框架,那为什么后来又不继续使用了呢? 主要还是稳定性问题或者说和我的整体设计相冲,我是要将大量被hook函数的回调函数同时设置为同一个函数,但<a href="elink@6b6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6B7L8i4m8W2N6%4y4Q4x3V1k6p5L8$3u0T1P5b7`.`.">Dobby</a>提供的能够注册回调函数的api只有**DobbyInstrument**,而这个api好像确实是不太稳定,在一些app上是能够稳定运行的,但是也有导致一些app崩溃的情况存在。 ## github上开源的其他轻量级inline hook项目 像<a href="elink@263K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6s2g2r3!0S2k6q4)9J5c8V1q4F1k6s2u0G2K9h3c8Q4y4h3k6u0L8X3I4A6L8X3g2Q4y4h3k6t1L8$3!0C8i4K6g2X3b7g2u0y4y4U0b7`.">Android_Inline_Hook_ARM64</a>以及<a href="elink@2aaK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6d9M7s2u0G2M7q4)9J5c8V1q4F1k6o6j5@1d9h3&6D9K9h3&6W2d9r3!0G2K9H3`.`.">And64InlineHook</a>这些类似的轻量级的inline hook项目我均有尝试使用过,但其实要么是稳定性太差,要么是无法达到我想要的效果,所以最终也都弃用。 ## 来自内核的uprobe hook技术 基于<a href="elink@daaK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6m8L8X3c8J5L8$3W2V1f1X3g2$3k6i4u0K6k6i4u0Q4x3X3c8f1k6i4y4@1i4K6u0r3d9$3g2J5L8X3g2D9i4K6u0V1g2s2u0S2j5$3f1`.">Kernel-Trace</a>提供的用户层接口,我们能够直接使用uprobe去挂载任意函数地址。<a href="elink@927K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6m8L8X3c8J5L8$3W2V1f1X3g2$3k6i4u0K6k6i4u0Q4x3X3c8f1k6i4y4@1i4K6u0r3d9$3g2J5L8X3g2D9i4K6u0V1g2s2u0S2j5$3f1`.">Kernel-Trace</a>说起来也是为此而生,也是由于<a href="elink@a57K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6m8L8X3c8J5L8$3W2V1f1X3g2$3k6i4u0K6k6i4u0Q4x3X3c8f1k6i4y4@1i4K6u0r3d9h3H3J5j5%4m8H3g2s2u0S2j5$3g2y4L8$3c8#2L8r3f1`.">Il2cppTraceModule</a>的使用,才能够发现并改进自身存在的诸多问题。依赖<a href="elink@177K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6m8L8X3c8J5L8$3W2V1f1X3g2$3k6i4u0K6k6i4u0Q4x3X3c8f1k6i4y4@1i4K6u0r3d9$3g2J5L8X3g2D9i4K6u0V1g2s2u0S2j5$3f1`.">Kernel-Trace</a>,最终达到了我所期望的效果,十分稳定,而且正确地使用uprobe去进行hook几乎不会产生任何额外特征,除了crc校验能够发现之外,基本算是无痕了。 # 结语 本来是想着用其他hook框架复现下<a href="elink@869K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6$3k6Y4y4X3K9i4c8$3L8X3#2Q4x3V1k6X3M7X3W2V1j5g2)9J5k6r3W2D9x3X3y4H3M7q4)9J5k6r3u0J5K9h3c8Y4k6b7`.`.">frida-il2cpp-bridge</a>的trace功能,没想到最后还是自己去研究uprobe实现了<a href="elink@de2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6m8L8X3c8J5L8$3W2V1f1X3g2$3k6i4u0K6k6i4u0Q4x3X3c8f1k6i4y4@1i4K6u0r3d9$3g2J5L8X3g2D9i4K6u0V1g2s2u0S2j5$3f1`.">Kernel-Trace</a>之后才算是彻底做完这个事。
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!
#HOOK注入
#系统相关
#源码框架
收藏
・
15
点赞
・
9
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
万里星河
这个讨论对我很有帮助,谢谢!
2026-8-9 17:00
博士9999
感谢你的积极参与,期待更多精彩内容!
2026-7-16 08:38
xinhu
你的分享对大家帮助很大,非常感谢!
2026-1-28 18:00
sinker_
你的分享对大家帮助很大,非常感谢!
2025-11-8 02:08
mb_icpackyt
感谢你分享这么好的资源!
2025-10-9 11:39
mb_xkwbimcz
非常支持你的观点!
2025-8-16 13:23
Lychow
感谢你分享这么好的资源!
2025-7-17 19:48
你瞒我瞒
这个讨论对我很有帮助,谢谢!
2025-7-15 14:16
ngiokweng
非常支持你的观点!
2025-7-11 18:25
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
6
)
mb_cfjwplfo
雪 币:
284
能力值:
( LV1,RANK:0 )
在线值:
发帖
6
回帖
93
粉丝
20
关注
私信
mb_cfjwplfo
2
楼
大佬牛比
2025-7-11 17:35
0
mb_ldbucrik
雪 币:
6
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
691
粉丝
7
关注
私信
mb_ldbucrik
3
楼
yyds
2025-7-11 19:17
0
ldehua
雪 币:
158
活跃值:
(2701)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
111
粉丝
0
关注
私信
ldehua
4
楼
大佬牛比
2025-7-14 10:47
0
mb_xiammaav
雪 币:
28
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
6
粉丝
0
关注
私信
mb_xiammaav
5
楼
大佬能合作吗
2026-3-20 04:06
0
万里星河
雪 币:
273
活跃值:
(2389)
能力值:
( LV2,RANK:10 )
在线值:
发帖
3
回帖
603
粉丝
8
关注
私信
万里星河
6
楼
感谢分享
2026-8-9 17:01
0
紫苏
雪 币:
310
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
10
粉丝
0
关注
私信
紫苏
7
楼
论坛有你更精彩
最后于
2026-8-9 18:10 被紫苏编辑 ,原因:
2026-8-9 18:09
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
安卓逆向test
10
发帖
47
回帖
0
RANK
关注
私信
他的文章
[原创]让AI也能高效检索上百GB日志
457
[原创]AI 时代还原 VM 层复杂算法的思路
740
[原创]AI 时代 Native 算法逆向工程的通用思路
2603
基本无视检测且稳定的Il2cppTrace模块
4192
[原创]在内核中直接使用uprobe的一些坑
7777
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部