工具下载:
IDA 7.0
Il2CppDumper
Reflector
百度网盘下载:
链接:https://pan.baidu.com/s/1EpYlq6VQfoKPzH9ZkF9Nug
提取码:8u2b
unity是现在独立游戏的常用游戏引擎,Steam上就有很多。这篇记录就先简单介绍一下破解游戏做出游戏补丁让游戏脱离steam也能运行的办法。
以最近上线steam的游戏《回门》为例:
首先是下载游戏,找到游戏本体存在的目录:
比如我的steam安装在G:\Games\ 路径大概就是:
G:\Game\Steam\steamapps\common\回门 Way Back Home
放在其他盘其他目录的童鞋可以自行推断位置
可以看到里面的GameAssembly.dll 用reflector打开GameAssembly.dll 会发现它不是C#的DLL文件,
打开XXX_Data目录,里面有个il2cpp_data
从这两点可以看出这个游戏是使用的Il2cpp的后端,这种后端需要懂点汇编才好破解,不过只是断开steam的话是难度不高的。对付il2cpp后端的游戏,我们可以用Il2cppDumper这个工具来做辅助提取和修改。
进行这个修改还需要找另外一个文件global-metadata.dat,通常在il2cpp_data下面,我找了一下在:
BashWayBackHome_Data/il2cpp_data/Metadata/global-metadata.dat
我们先创建一个目录,把破解需要的中间文件都放在这里,比如我放在了g:\works\hack\hm\里面
然后我们编写一个简单的批处理脚本,放在游戏目录下(也就是GameAssembly.dll所在目录) 调用il2cppdumper来破解,其实只有一行:
BashIl2CppDumper GameAssembly.dll WayBackHome_Data/il2cpp_data/Metadata/global-metadata.dat g:\works\hack\hm\
编写完保存成bat文件,运行后等待结束,成功的话就会在g:\works\hack\hm\ 下面生成一些中间文件,比如:
其中DummyDll里是一些C#代码,里面并没有从c和汇编反编译出来的具体代码内容,只有元数据,也就是可以用reflector或者ilspy之类打开查看代码结构。要修改的话 还是只能去用IDA去修改原本的GameAssembly.dll文件。
IDA是用来反编译机器语言到汇编语言,还可以返到不是很好看的C代码。
注意这个Tool是我把文章开头下载下来的工具解压之后放在这里的。然后现在启动我们的神器IDA,注意32位的就可以,64位的话可能会出现无法反编译到C代码。
在IDA打开这个GameAssembly.dll之后,默认选项确认进去,可以看到IDA会自动开始扫描分析这个dll文件,这个时候等待左下角的提示,不再来回闪动了才是分析完成。
好了现在选择 File-》Script File
运行Il2cpp所在文件夹下的ida_with_struct.py
然后IDA会弹出窗口让你选择几个前面il2cppdumper提取出的json文件,也就是script.json和il2cpp.h 根据提示窗口标题就能看到。上面截图就有。
选择完毕IDA会开始进一步分析和替换函数名,这样就可以快速确认steam连接操作的代码位置了。等待分析完成。
寻找到SteamManager$$Awake()之后,把它的第一句改成ret
记得应用修改
补丁打完了 关掉或者卸载STEAM 都可以直接进入游戏了。
破解完成