关于dat打包的游戏想必也大家修改游戏的时候也遇过。在2014年年中的时候,Unity3D官方博客上却发了一篇“The future of scripting in unity”的文章,引出了IL2CPP的概念从名字可以看出 IL2CPP。大家很容易就理解其意义了:把IL中间语言转换成CPP文件。通俗点 平时改dllldc.i4 9363636ret这种就是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,#0xffffldc.i4 0xffff ——–» MOV R1,#0xffffadd ——–» ADD R2, R0, R1ret ——–» BX LR最后还需要把R2的最终转回R0中。IL中是不需要这个的所以最终的样子是改成这样MOV R0,#0xffffMOV R1,#0xffffADD R2, R0, R1MOV R0,R2BX LR最终还是要改16进制MOV R0,#0xffff ——» FF0F0FE3MOV R1,#0xffff ——» FF1F0FE3ADD R2, R0, R1 ——» 012020E0MOV R0,R2 ——» 0200A0E1BX LR ——» 1EFF2FE1合起来就是FF0F0FE3 FF1F0FE3 012020E0 0200A0E1 1EFF2FE1保存,替换进安装包,签名安装运行Il2CppDumper工具下载:http://pan.baidu.com/s/1dFOutjV
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
请登录后查看评论内容