【初夏教程】初探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]