前言
暂时还没配图(懒得配,自己摸一摸基本都找得到对应的位置),也还没把流程从头走到尾(指没有到最后摸清目标函数的具体逻辑,因为我一般逆向游戏都是为了找文件解密手段)。和网上的很多内容大差不差,就当做其中一个补充的小参考也可以。
针对有用到il2cpp的Unity游戏,Mono Build的上别处找吧,那个更简单。
方法一
参考的文章:Unity逆向入门第二篇:反编译
需要的软件:
- Dnspy(已归档,最后版本为6.1.8)
- il2CppDumper(截至目前最新版本为6.7.46)
- IDA Pro(我是用的是8.3版本)
- 下载il2cppdumper(net x版本影响不大,有安装运行库就可以;win系统选win)
- 启动
Il2CppDumper.exe
- 在弹出的两次文件选择窗口中分别先后选择
GameAssembly.dll
(游戏根目录就有)和global-metadata.dat
(游戏目录\游戏名_Data\il2cpp_data\Metadata\global-metadata.dat) - 程序运行结束后,
Dummydll
文件夹内会有Assembly-CSharp.dll
- 启动DnSpy,加载
Assembly-CSharp.dll
- 启动IDA,加载
Assembly-CSharp.dll
(如果有窗口选择"Processor type"则直接点OK
) - IDA左上角选择File > Script File加载il2cppdumper文件夹内的
ida_with_struct_py3.py
,加载script.json
,加载il2cpp.h
,等待处理完毕(如果提示有说"The input file was linked with debug information"的话选择No
) - 在DnSpy查找自己想要看的函数名,去IDA里面选中左边function列表后搜索(Alt+T)函数名,按F5反编译
- 这时候应该看得出一些代码逻辑,但关键的内容还是被混淆了,后面的等我研究完再补充。
方法二
参考的文章:Unity 逆向入门第三篇:UnityExplorer
需要的软件:
- MelonLoader(截至目前最新版本为0.7.0)
- UnityExplorer(原版,和最新版MelonLoader不兼容,所以仅作介绍)
- UnityExplorer fork版本(修复了新版MelonLoader启动Mod时缺少包的问题)
- 下载MelonLoader.installer.exe
- 启动,选择要注入的游戏,安装MelonLoader(一般来说最新版应该也行)
- 下载UnityExplorer fork版本(原版说是需要0.5.3或者更早的MelonLoader才能启动,但是我没试过)
- 把压缩包里的两个文件夹(Mods+UserLibs)覆盖到游戏目录下
- 启动游戏,等待一段时间启动完毕之后游戏界面会多出调试窗口(不要关掉背后打开的命令行窗口)
- Object Explorer会显示当前页面下使用了哪些元素,选中后在Inspector可以查看各种属性并且修改。
- 可以在顶部右侧的Option打开设置窗口,指定DnSpy路径,这样方便直接在Inspector里快速打开目标dll文件。
后面的操作我就没试过了,等我有空再继续折腾。