unity 编译脚本引擎分为 mono 和 il2cpp, mono 生成的 managed dll 基本属于开源, 随便 dnspy 或者其他工具能看光. ( 有时候需要应对 obfuscator, 但大多数时候是白给
il2cpp 通过将 managed dll 的 IL (中间语言. 生成 c++ 代码, 能带来一定程度的防护, 但不多.
---
il2cpp unity 游戏的架构本质上是
unity C#【 level 0】
mono engine 【level 1】
il2cpp 【level2】
assembly【level3】
具体的机理详见 kate's code https://katyscode.wordpress.com/category/reverse-engineering/il2cpp/
---
IL -> c++ -> Assembly 的过程本该只有通过 ida, ghidra 等专业逆向软件才能分析. 因为C#需要支持反射机制, 就让 il2cpp 层具有了反向调用 mono 层的能力
---
具体的代码思路 ( windows 平台, 如下
1. dll注入游戏进程.
2. 获取进程引用的其他dll
3. 获取dll符号表
4. inline hook 想要的符号
5. 注入 http 或者 tcp 服务器
6. 调用 il2cpp 的反射功能随意调用 mono 层代码进而影响游戏本身(例如调用 new GameObject, 移动摄像机等
---
用途
1. 获取游戏性能数据
2. 获取模型/动画/信息报文 etc.
3. 基本有源代码干的了的事情, 就都能干了
---
dependencies:
https://github.com/TsudaKageyu/minhook
https://github.com/DarthTon/Xenos
https://github.com/tinyhttp/tinyhttp
---
等有空整理一份我的工具链
---
市面上的大多数游戏引擎如果在没有做专业防护的情况下基本能用这一思路解决.
暂无关于此日志的评论。