|
查看: 70|回复: 21
|
[相关教程]
Unity IL2CPP逆向:Il2CppDumper还原方法名到Frida hook
[复制链接]
|

UID2
贡献9 点
钻石7 个
C币993 个
|
Unity 游戏用 IL2CPP 编译后,C# 代码被转成 C++ 再编译成 native 二进制。逆向时看不到 C# 源码,只能看 ARM 汇编。这篇讲怎么还原。
一、IL2CPP 原理
Unity 编译流程:C# → IL (中间语言) → C++ 代码 → native binary (ARM64)。同时生成 global-metadata.dat 文件,包含所有类名、方法名、字段名的字符串。native 二进制里只有地址,需要从 metadata 里还原名字。
二、Il2CppDumper
GitHub 上的 Il2CppDumper 工具,输入二进制和 metadata 文件,输出:
- dump.cs:还原的 C# 伪代码,包含类名方法名字段名
- script.json:方法地址到方法名的映射表
- ida.py/script.py:IDA/Ghidra 脚本,自动重命名函数
用法:- Il2CppDumper.exe game_binary.so global-metadata.dat output_dir/
复制代码
三、IDA 中还原- # 在 IDA Python 控制台运行
- import json
- mapping = json.load(open("script.json"))
- for entry in mapping["ScriptString"]:
- ida_name.set_name(entry["Address"], entry["Value"], ida_name.SN_NOWARN)
- # 或者直接运行 script.py
复制代码
还原后 IDA 里的函数名从 sub_12345 变成 PlayerController_UpdateHealth,可读性大幅提升。
四、Frida hook IL2CPP 方法- // 通过 script.json 找到方法地址
- var addr = ptr("0x1234567"); // PlayerController.UpdateHealth
- Interceptor.attach(addr, {
- onEnter: function(args) {
- console.log("UpdateHealth called");
- // args[0] = this (PlayerController实例)
- // args[1] = 第一个参数
- },
- onLeave: function(retval) {
- console.log("UpdateHealth returned: " + retval);
- }
- });
复制代码
五、常见问题
- IL2CPP 版本不同,metadata 格式可能变化。用对应版本的 Il2CppDumper
- 有些游戏加密了 metadata 文件。需要先脱壳解密
- inline 模式编译的 IL2CPP 方法可能被内联,找不到独立函数地址
 |
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
|
|
|
|
|
|
|
|
|
|

匿名
发表于 2026-9-17 18:32:56
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 18:42:37
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 18:52:04
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 18:59:19
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 19:09:22
|
显示全部楼层
|
App 侧的安全基本靠客户端自觉,服务端校验才是最后一道。 |
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 19:14:39
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 19:25:00
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 19:32:29
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 19:38:13
|
显示全部楼层
|
|
|
|
|
|
|
|
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!