无名商城论坛

搜索
查看: 335|回复: 0

[技术教程] 【初夏教程】初探Unity3D dat修改

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
32464
发表于 2022-5-8 14:13:29 | 显示全部楼层 |阅读模式

关于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.dat

就像这样[滑稽]

按照上面的步骤走就好了。会发现完成之后,同目录下多出个dump.cs文件。没错了,这就是分析之后得出的文件。可以用文本打开!

我们在里面搜搜一些常见的货币
比如 coin gold


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

我们把libil2cpp.so拖进IDA分析
分析完之后在页面按G 输入get_Gold()的偏移
也就是图上看到的  15db70c


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

我们将这个地方的十六进制复制下来。
用十六进制编辑器打开so 找到这个地方

因为这里四字节一个段
最大的也只能是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 1EFF2FE1
保存,替换进安装包,签名安装运行

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

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

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

重要的事情,三遍!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表