Quest安卓游戏汉化通用教程|第一篇:Obb文件的修改及APK的校验去除

文章中的工具:

暂无优惠 永久钻石免费

已有0人支付

Obb文件的修改

一般拿到一个游戏的obb文件后,我们可以直接使用解压工具对其解压即可,obb文件都是zip格式的压缩问题,当我们对obb解压后的文件进行修改后,我们需要重新对其压缩打包成obb文件。这里压缩有一点要注意,就是要使用winrar的存储格式进行压缩,如下图所示

但是在实际过程中,可能会遇到一个游戏的obb文件夹内有两个obb数据包的情况,出现这种obb时使用winrar存储格式压缩会出现游戏无法识别的问题,这时就需要使用特殊的工具来解决了,下图是我制作的工具,专门用来修改这样的obb数据包

使用方式也相当简单:

1、需在某个盘的根目录下创建相同的obb解压目录,比如要替换obb包里面TWD\Content\Paks\pakchunk0-Android_ASTC.pak这个文件,那么就要在D盘(其他盘也可)创建这样的路径D:\TWD\Content\Paks,然后将修改好的pakchunk0-Android_ASTC.pak放入这个目录下。
2、打开程序选择要修改的obb文件(注: 会直接会在obb文件上进行修改,所以请提前备份),然后点导入文件选择要替换的导入文件即可。

 

APK校验的去除

当修改好obb导入到设备中后,你可能会悲催的发现游戏出现了闪退无法运行等情况,而且导入的obb也被自动删除了,这其实是apk程序中加入了对obb文件的校验,我们使用jadx对apk进行反编译就能找到相应的校验代码,我们找到com.google.android.vending.expansion.downloader.d类,就会发现如下代码

而实际上文件的长度来自于游戏包名下的某个类里(这里使用了混淆),很容易找到,我们和实际的obb文件大小一对比就会发现

 

一般对obb的校验基本都是只验证obb文件的大小(别的情况暂时没有遇到过),这时想去除校验,就只能反编译apk修改代码来实现了,而jadx是无法修改代码的,所以要使用别的工具,首先我们先打开ApkToolAid

选择apk文件后,点击反编译

反编译后找到smali文件夹,里面的smali文件就是我们需要修改的代码,有两种修改方式,首先最简单的就是直接修改文件的校验大小值,我们查看一下修改好的obb文件大小,并将其转成16进制填入其中即可

然后找到刚才jadx中看到的相同目录下的smali文件

修改这个大小后保存即可。但是这种方式只是改了当前对obb文件校验的大小值,如果后面有修改了obb文件,那么还需要继续修改这里,比较麻烦。

第二种方式就是一劳永逸了,首先将上图的大小改成0x0,如下所示

然后修改对文件大小校验的地方,就是上面的com.google.android.vending.expansion.downloader.d类对应的smali文件,然后根据方法参数(下图绿色部分)找到对应的方法

将如下代码进行替换

替换代码:

invoke-virtual {p1}, Ljava/io/File;->exists()Z

move-result p0

if-eqz p0, :cond_2

const-wide/16 v0, 0x0

cmp-long p0, p2, v0

if-eqz p0, :cond_1

invoke-virtual {p1}, Ljava/io/File;->length()J

move-result-wide v0

cmp-long p0, v0, p2

if-nez p0, :cond_0

goto :goto_0

:cond_0
if-eqz p4, :cond_2

invoke-virtual {p1}, Ljava/io/File;->delete()Z

goto :goto_1

:cond_1
:goto_0
const/4 p0, 0x1

return p0

:cond_2
:goto_1
const/4 p0, 0x0

return p0

修改完成保存,然后在使用ApkToolAid进行回编译生成apk即可。

 


VR中文库游戏汉化 » Quest安卓游戏汉化通用教程|第一篇:Obb文件的修改及APK的校验去除

发表评论