本帖最后由 痞孑 于 2018-6-6 20:45 编辑
关于dat打包的游戏想必也大家修改游戏的时候也遇过
在2014年年中的时候,Unity3D官方博客上却发了一篇“The future of scripting in unity”的文章,引出了IL2CPP的概念 从名字可以看出 IL2CPP。大家很容易就理解其意义了(把IL中间语言转换成CPP文件)
讲的明白一点 就是咱们平时修改dll
ldc.i4 9999999 ret 这种就是IL语言。IL2CPP就是将这种东西转换成cpp。也就是C++
今天我就拿“致命杀手”这个游戏来说
其目的就是要修改游戏里边的金币、钞票
准备工具如下 1. dat的Unity3D游戏
2. Il2CppDumper工具
ok,那我们直接进入正题
打开安装包提取lib/armeabi-v7a/libil2cpp.so
然后提取assets\bin\Data\Managed\Metadata\global-metadata.dat
把以上提取的两个文件放到dump工具目录下
运行dump工具
分析之后得出的一个dump.cs文件,可以用Notepad++打开
上面说了目的是要修改“金币”“钞票” 那我们在cs文件里边搜索一些常见的货币 例如搜索 “Gold”“Money” (大小写无所谓)
找到了不少,但是这个是正确的 “//”后面的地址是这个方法名所在so的偏移之后会用到记下来
得到偏移之后我们把libil2cpp.so扔进IDA分析 分析完之后再页面按“G”输入“Gold”的偏移 也就是图上看到的876750
然后按回车键会跳到这里,也就是Gold的地方了
这种改过dll的都知道,重新给个返回值就好了
那么我们找到关键点了,点击此处,然后切换到Hex-view-1查看它的16进制码
复制它的地址及对应的16进制码,先放到txt文件中,然后关闭这个文件
然后关闭ida之后,然后我们再使用010Editor打开刚才的那个so文件,可直接把so文件拖入010Editor,
因为我们刚才已经知道那个最后获取金币的地址了,所以这里直接Ctrl+G跳转到那个地址
修改完之后,保存,然后把修改过的so文件替换到原目录里边
重新再次编译生成apk,运行游戏之后, 效果如下图
上亿的金币钞票还怕玩不下去?
工具下载
|