dat-so修改游戏 基础的认识与修改

闲得无聊,写个教程吧。刚破解了,趁热记录一下。
顺便水个教程贴,美滋滋。。。
话不多说,下面慢慢楼层更新教程。
目标游戏:Stacky Bird v1.0.1.1
游戏来源:应用汇
修改类型:dat-so修改

关键词:coin()金币,RemoveAds(去除广告),revive(复活)

修改关键点:
get_CoinCount方法 获取金币数量
DidPurchaseRemoveAds方法 购买了去除广告
HandleReviveButtonPressed方法 处理复活按钮
RevivePlayer方法 复活玩家

修改思路:

1,给获取金币数量方法直接赋值,即可锁定大量货币。

2,给购买了去除广告直接赋值为1的布尔值(1表示true,0表示false,一般思维都是1成立)

3,查看处理复活按钮汇编语言,其中有分支,一个分支是ShowRV(放广告视频),另一个分支是保存分数,还有一个是包含了RevivePlayer方法 的方法。所以,直接让分支跳到包含RevivePlayer方法 的方法,不跳到ShowRV(放广告视频),即可跳过广告复活。

dat-so修改必备知识
这种修改方法一般适用于u3d引擎开发的游戏,这种游戏没有dll文件无法直接修改。
打开安装包apk文件,会发现有lib文件夹和assets文件夹。

图片[1]-dat-so修改游戏 基础的认识与修改-可能资源网

进一步查看还有:
lib/armeabi-v7a/libil2cpp.so
assets/bin/data/manager/metadata/global-metadata.dat

这两个路径下的libil2cpp.so和global-metadata.dat就是这种游戏的标志性文件,所以叫做dat-so修改。

我们要得到游戏相关的方法和对于修改位置,就必须要dump。需要用到Il2CppDumper工具。

图片[2]-dat-so修改游戏 基础的认识与修改-可能资源网

这是一款网上的大佬开发出来的专门dump的工具,顺便提一句最后下载最新版的,旧版很多不适用了。工具的路径不能有中文,不然会出错。

Dump出来后会有很多文件,对我们有用的有这几个:

图片[3]-dat-so修改游戏 基础的认识与修改-可能资源网

上面两个,第一个文件夹是dll文件如图:

图片[4]-dat-so修改游戏 基础的认识与修改-可能资源网

其中的Assembly-CSharp.dll就是我们用来分析修改思路,获取方法在so文件中的地址的关键文件。

Dump出来的dump.cs可以用记事本或者Notepad++打开,作用也是分析修改思路的,但是个人感觉没有Assembly-CSharp.dll文件分析来的舒服。

最下面的script.json和ida.py文件则是脚本文件,我们需要用来在ida里面加载他们,从而在ida中能显示方法的名称。不然单单分析用ida分析libil2cpp.so文件,处理的方法名称全都是sub_xxxxx之类的,不会显示方法的英文名称。

另外就是ida工具,可以用来分析so文件,并且显示出其对应的汇编语言和对应的16进制码。所以ida单纯只是一个分析的工具,让你知道代码是怎么运作的,以及代码对应的16进制是多少。

关于ida的下载网上有很多,这里就不放链接了。

最后分析完了,还需要修改工具修改so文件的16进制,才算是真正的修改。16进制修改工具网上也有很多。Mt管理器开通了会员,也是可以直接修改16进制的。

还有很多知识大家可以自行百度,这里就不多讲了。

修改教程
找到并解压libil2cpp.so和global-metadata.dat文件到同一个文件夹里。

图片[5]-dat-so修改游戏 基础的认识与修改-可能资源网

我用的是安卓模拟器,在安卓模拟器和电脑的共享文件夹下,单独创建了一个文件来解压dat和so文件。(你也可以直接解压到Il2CppDumper-v6.1.8文件下)

图片[6]-dat-so修改游戏 基础的认识与修改-可能资源网

把下载的Il2CppDumper-v6.1.8解压到一个非中文的路径下备用,我直接放在了D盘根目录下。

图片[7]-dat-so修改游戏 基础的认识与修改-可能资源网

打开Il2CppDumper-v6.1.8文件夹,双击Il2CppDumper.exe文件,会出现选文件页面,第一次找到并选择libil2cpp.so,第二次找到并选择global-metadata.dat。

图片[8]-dat-so修改游戏 基础的认识与修改-可能资源网

之后就会自动开始dump,完成后按任意键退出。

图片[9]-dat-so修改游戏 基础的认识与修改-可能资源网

Dump完成后就会多出来一些文件,就是上面我们讲到的那些文件。

图片[10]-dat-so修改游戏 基础的认识与修改-可能资源网

用dnSpy软件打开Assembly-CSharp.dll文件分析修改思路
Dnspy软件网上有,可以自行搜索下载

图片[11]-dat-so修改游戏 基础的认识与修改-可能资源网

往下滑动会找到get_CoinCount这个方法,翻译过来就是获取金币数量。但是我们发现它下面也有一个同名称的方法。我们继续看它后面的类名,发现第一个类名有coinmanager字样,翻译就是金币管理,所以确定第一个就是我们要找的关键方法。

图片[12]-dat-so修改游戏 基础的认识与修改-可能资源网

常见的相关的方法有get xx货币名称 add(增加) xx remove xx 等等。每个游戏都不一样,要靠自己积累关键词。
双击找到的方法名就会出来对于的方法代码,及其对应的在so文件中的地址。

图片[13]-dat-so修改游戏 基础的认识与修改-可能资源网

我们直接复制13EAE88。

加so文件用ida工具打开,并等待分析完毕

图片[14]-dat-so修改游戏 基础的认识与修改-可能资源网

出现如图语句说明分析完成。
然后点击文件,脚本文件,加载脚本

图片[15]-dat-so修改游戏 基础的认识与修改-可能资源网

脚本文件要在Il2CppDumper-v6.1.8文件夹里找,如图,第一次选择ida.Py,第二次选择script.json。

图片[16]-dat-so修改游戏 基础的认识与修改-可能资源网

之后就会自动加载脚本,等待加载完成即可。
这里再说一下,在选项,常规里面设置一下,将这里的0改成8,才会显示对应的16进制码。

图片[17]-dat-so修改游戏 基础的认识与修改-可能资源网

回来接着修改,按G会出现跳转弹窗,粘贴刚才复制的金币地址,然后确定

图片[18]-dat-so修改游戏 基础的认识与修改-可能资源网

之后就会跳到金币方法所在的地址,如图:

图片[19]-dat-so修改游戏 基础的认识与修改-可能资源网

确定了金币的汇编代码以及对应的16进制后,就可以开始修改了。

回到mt管理器,直接在安装包里改so文件,如图:

图片[20]-dat-so修改游戏 基础的认识与修改-可能资源网

点击右上角菜单,选择跳转到,还是粘贴金币方法的地址,确定

图片[21]-dat-so修改游戏 基础的认识与修改-可能资源网

然后会跳到so文件中金币方法对应地址的16进制,和ida中的16进制对比一下,确保不要改错地方。

图片[22]-dat-so修改游戏 基础的认识与修改-可能资源网

接下来就是怎么改的问题了。这个金币方法是获取金币数量,那么游戏中其他方法就会调用它来得知金币的数量。每次调用它,就需要它经过内部计算返回对应的数量。也就是你看到的图中那一大块汇编代码。
所以我们一般直接把它内部的计算汇编代码改成直接返回一个大量值,不通过它内部计算的汇编代码。这样就可以达到每次返回的都是我们给的那个数值,也就是锁定大量货币。
16进制 汇编代码
0E07 A0E3 MOV R0,#0x380000
(将0x380000十六进制常数赋值给R0对象,也就是10进制的3670016游戏显示数值)

1EFF 2FE1 BX LR
(这一行代码就是结束方法并返回R0,即返回0x380000,也就是10进制的3670016游戏显示数值,结束方法后,后面的汇编代码就不会执行了)

所以,将原来的:

16进制 汇编代码

10 4C 2D E9 STMFD SP!, {R4,R10,R11,LR}
08 B0 8D E2 ADD R11, SP, #8

改为:
0E 07 A0 E3 MOV R0,#0x380000
1E FF 2F E1 BX LR

图片[23]-dat-so修改游戏 基础的认识与修改-可能资源网

改完后点击保存

图片[24]-dat-so修改游戏 基础的认识与修改-可能资源网

接着来修改去广告,游戏内有个功能就是购买去广告。
搜索removeads关键词

图片[25]-dat-so修改游戏 基础的认识与修改-可能资源网

出来两个,比较右边类名,第一个有boughtinAPP字样,即APP购买,所以确定是第一个。
双击查看DidPurchasedRemoveAds方法,发现该方法是bool类型的。而DidPurchasedRemoveAds的翻译是“购买了去广告”。说明该方法通过返回1(true)和0(false
)两种值,来判断是否购买了去广告成立。按照一般程序思维,返回1就是成立,购买了去广告,返回0就是没有购买。
所以我们要让他直接返回1(true),不要让他自己判断。这样别人调用它全都是返回的1(true),购买了去广告。

还是复制地址,按G粘贴跳转到ida中该方法的对应汇编语言和16进制。如图:

图片[26]-dat-so修改游戏 基础的认识与修改-可能资源网

这里这个方法的汇编代码就很多了,对应的16进制也是一大串。
我们选中方法名,按F5,会调出伪代码界面,也可以看到bool字样提示

图片[27]-dat-so修改游戏 基础的认识与修改-可能资源网

所以不管他代码有多少,我们只给他返回1(true)然后结束就行了。后面再多的代码也不会执行了

图片[28]-dat-so修改游戏 基础的认识与修改-可能资源网

还是回到mt复制跳转,对比16进制,确保正确。

然后将
70 4C 2D E9 STMFD SP!, {R4-R6,R10,R11,LR}
10 B0 8D E2 ADD R11, SP, #0x10

改为:

0100 A0E3 MOV R0,#1 赋值为1(true)
1EFF 2FE1 BX LR 返回并结束

如果要返回0的话就是:
0000 A0E3 MOV R0,#0
1EFF 2FE1 BX LR

这里我们返回1。

图片[29]-dat-so修改游戏 基础的认识与修改-可能资源网

同样改完之后保存,然后菜单退出。保存签名安装,即可。
如果你不是mt直接在安装包里改so文件,用的16进制修改工具的话,就需要保存后,替换掉原来的so文件,签名安装即可。

最后看一下成果:

图片[30]-dat-so修改游戏 基础的认识与修改-可能资源网

这里没有讲免广告复活,因为比较复杂。后面关注我,我每期都会出教程的。完结撒花!!

THE END
抢沙发

请登录后发表评论

    暂无评论内容

相关推荐

路由信息协议(RIP)

路由信息协议(RIP)-可能资源网
路由信息协议(RIP)是一种动态路由协议,它使用跳数作为路由度量来查找源网络和目的网络之间的最佳路径。它是一种距离矢量路由协议,AD值为120,工作在OSI模型的网络层。RIP使用端口号520。 跳...
可能的头像-可能资源网可能8个月前
023

做网站挂谷歌广告赚钱!做好这些规避无效流量

啊哈哈~你的好长到底了

啊哈哈~你的好长到底了-可能资源网
啊哈哈~你的好长到底了,我来给你写一篇有趣的作文吧! 标题:快乐的一天 今天是一个美好的早晨,阳光洒在大地上,给人们带来了温暖和愉悦。我迎着阳光走出家门,感受到了生活的美好。 首先,...
可能的头像-可能资源网可能7个月前
016

高校长白沽公交车序

高校长白沽公交车序-可能资源网
高校长白沽公交车序是一条位于中国的公交线路,连接着高校和白沽。这条公交线路为高校的师生提供了便捷的交通方式,使他们能够方便地往返于校园和白沽之间。 高校长白沽公交车序的车辆经过了精...
可能的头像-可能资源网可能7个月前
012

为什么永远不要轻易从中国移动辞职

为什么永远不要轻易从中国移动辞职-可能资源网
,因为中国移动是一家大型国有企业,拥有丰富的资源和人才储备。高念书能够成功跳槽到亚信担任CEO,说明他在该领域有着卓越的领导能力和专业知识背景。然而,在选择职业发展道路时,需要根据个...
可能的头像-可能资源网可能8个月前
020

求你把跳d遥控器关了

求你把跳d遥控器关了-可能资源网
最近,我对电视游戏上瘾了。每当我玩游戏时,总是难以自拔。我意识到这对我的学习和健康不利。因此,我请求你帮我按下跳跃游戏的遥控器关掉。 首先,游戏带给我无尽的乐趣,但也消耗了我大量的...
可能的头像-可能资源网可能7个月前
066