前言

暂时还没配图(懒得配,自己摸一摸基本都找得到对应的位置),也还没把流程从头走到尾(指没有到最后摸清目标函数的具体逻辑,因为我一般逆向游戏都是为了找文件解密手段)。和网上的很多内容大差不差,就当做其中一个补充的小参考也可以。

针对有用到il2cpp的Unity游戏,Mono Build的上别处找吧,那个更简单。


方法一

参考的文章:Unity逆向入门第二篇:反编译

需要的软件:

  1. Dnspy(已归档,最后版本为6.1.8)
  2. il2CppDumper(截至目前最新版本为6.7.46)
  3. IDA Pro(我是用的是8.3版本)
  1. 下载il2cppdumper(net x版本影响不大,有安装运行库就可以;win系统选win)
  2. 启动Il2CppDumper.exe
  3. 在弹出的两次文件选择窗口中分别先后选择GameAssembly.dll(游戏根目录就有)和global-metadata.dat(游戏目录\游戏名_Data\il2cpp_data\Metadata\global-metadata.dat)
  4. 程序运行结束后,Dummydll文件夹内会有Assembly-CSharp.dll
  5. 启动DnSpy,加载Assembly-CSharp.dll
  6. 启动IDA,加载Assembly-CSharp.dll(如果有窗口选择"Processor type"则直接点OK
  7. IDA左上角选择File > Script File加载il2cppdumper文件夹内的ida_with_struct_py3.py,加载script.json,加载il2cpp.h,等待处理完毕(如果提示有说"The input file was linked with debug information"的话选择No
  8. 在DnSpy查找自己想要看的函数名,去IDA里面选中左边function列表后搜索(Alt+T)函数名,按F5反编译
  9. 这时候应该看得出一些代码逻辑,但关键的内容还是被混淆了,后面的等我研究完再补充。

方法二

参考的文章:Unity 逆向入门第三篇:UnityExplorer

需要的软件:

  1. MelonLoader(截至目前最新版本为0.7.0)
  2. UnityExplorer(原版,和最新版MelonLoader不兼容,所以仅作介绍)
  3. UnityExplorer fork版本(修复了新版MelonLoader启动Mod时缺少包的问题)
  1. 下载MelonLoader.installer.exe
  2. 启动,选择要注入的游戏,安装MelonLoader(一般来说最新版应该也行)
  3. 下载UnityExplorer fork版本(原版说是需要0.5.3或者更早的MelonLoader才能启动,但是我没试过)
  4. 把压缩包里的两个文件夹(Mods+UserLibs)覆盖到游戏目录下
  5. 启动游戏,等待一段时间启动完毕之后游戏界面会多出调试窗口(不要关掉背后打开的命令行窗口)
  6. Object Explorer会显示当前页面下使用了哪些元素,选中后在Inspector可以查看各种属性并且修改。
  7. 可以在顶部右侧的Option打开设置窗口,指定DnSpy路径,这样方便直接在Inspector里快速打开目标dll文件。

后面的操作我就没试过了,等我有空再继续折腾。