无名 发表于 2022-5-8 14:13:29

【初夏教程】初探Unity3D dat修改


关于dat打包的游戏想必也大家修改游戏的时候也遇过。

在2014年年中的时候,Unity3D官方博客上却发了一篇“The future of scripting in unity”的文章,引出了IL2CPP的概念

从名字可以看出 IL2CPP。大家很容易就理解其意义了:把IL中间语言转换成CPP文件。

通俗点 平时改dll

ldc.i4 9363636
ret

这种就是IL语言。IL2CPP就是将这种东西转换成cpp。也就是C++

介绍完就直接进入正题吧。最近吃鸡挺火
但是就是一抓一个dat 身为巨黑神怎能如此堕落
修改个玩玩好了,就研究了一下dat 有点搞头!

准备:
1. dat的Unity3D游戏一个
2. Il2CppDumper工具一个
(本文后面有下载地址)
3. 脑子带上

OK,首先打开安装包。
提取 lib/armeabi-v7a/libil2cpp.so
提取 assets/bin/Data/Managed/Metadata/global-metadata.dathttp://cdn.u1.huluxia.com/g3/M00/37/9F/wKgBOVndohKAL1YBAAA6y3CaxXY104.png

就像这样[滑稽]
http://cdn.u1.huluxia.com/g3/M00/37/9F/wKgBOVndohKAS7SCAALnjN4Fwhk404.jpg
按照上面的步骤走就好了。会发现完成之后,同目录下多出个dump.cs文件。没错了,这就是分析之后得出的文件。可以用文本打开!

我们在里面搜搜一些常见的货币
比如 coin gold
http://cdn.u1.huluxia.com/g3/M00/37/9F/wKgBOVndohOAIs3hAADauuodNZM483.png

找到了不少,但是这个是正确的。
//后面的地址是这个方法名所在so的偏移
之后会用到

我们把libil2cpp.so拖进IDA分析
分析完之后在页面按G 输入get_Gold()的偏移
也就是图上看到的15db70c
http://cdn.u1.huluxia.com/g3/M00/37/9F/wKgBOVndohOAErfhAACHtw0Tlu4209.png

回车就会跳到这里,这里就是get_Gold的地方了
这种改过dll的都知道 重新给个返回值就好了!

我们将这个地方的十六进制复制下来。
用十六进制编辑器打开so 找到这个地方
http://cdn.u1.huluxia.com/g3/M00/37/9F/wKgBOVndohSAYWnCAACZ3Q88fc0060.png
因为这里四字节一个段
最大的也只能是ffff 一个不够的话 我们再加一个

ldc.i4 0xffff--------?MOV R0,#0xffff
ldc.i4 0xffff--------?MOV R1,#0xffff
add                --------?ADD R2, R0, R1
ret                  --------?BX                LR

最后还需要把R2的最终转回R0中。IL中是不需要这个的

所以最终的样子是改成这样

MOV R0,#0xffff
MOV R1,#0xffff
ADD R2, R0, R1
MOV R0,R2
BX            LR

最终还是要改16进制

MOV R0,#0xffff------? FF0F0FE3
MOV R1,#0xffff------? FF1F0FE3
ADD R2, R0, R1   ------? 012020E0
MOV R0,R2          ------? 0200A0E1
BX            LR      ------? 1EFF2FE1

合起来就是

FF0F0FE3 FF1F0FE3 012020E0 0200A0E1 1EFF2FE1http://cdn.u1.huluxia.com/g3/M00/37/9F/wKgBOVndohaAIDJHAAB5QbUX76U943.png
保存,替换进安装包,签名安装运行http://cdn.u1.huluxia.com/g3/M00/37/9F/wKgBOVndoheAfdzbAAQyu6hqxtM0501.ht

哎呀,人生真是寂寞如雪[滑稽]?

Il2CppDumper工具下载:
http://pan.baidu.com/s/1dFOutjV

咳!初夏团队出品!
咳!初夏团队出品!
咳!初夏团队出品!

重要的事情,三遍!
页: [1]
查看完整版本: 【初夏教程】初探Unity3D dat修改