今天咱聊聊这个叫《以女友做赌注》的安卓汉化实践。这事儿说起来,本来跟我一毛钱关系都没有。不过就是那天晚上,外面下着暴雨,我对着电脑不知道该干点正无聊,群里一个老哥突然扔过来一个压缩包,就丢下一句:安卓版这玩意儿,汉化了个寂寞,谁能把这破玩意儿给我搞干净了,算他牛逼。
实践的缘起:一句气话和一次摸黑下水
我当时一看这名字,心里就笑了,这不就是那个挺火的PC移植过来,然后汉化组搞了一半又烂尾的玩意儿吗?很多人都说PC版简单,安卓版底层变了,文本逻辑乱得一塌糊涂,根本不好扒。那老哥就是激将法,我这个人吃软不吃硬,一被这么说,那股子劲儿就上来了。
行,你不是说不行吗?我偏要试试看。
我二话没说,直接把文件拖下来,先是找到那个安卓的安装包,也就是那个.apk文件。第一步自然是先把它拆开,我用了一个常用的逆向工具,咔嚓一下,很快就把表皮扒下来了。进去一看,果然,里面的文件结构乱七八糟,跟平时那些用Unity框架包得整整齐齐的不一样。
我心想靠,这是哪个野生小作坊做的?
小编温馨提醒:本站只提供游戏介绍,下载游戏请前往89游戏主站,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
扒皮:在屎山里找文本
我的目标很简单:找到游戏里所有的对话、提示和选项的文本文件。这游戏的文本一般就藏在那几个地方,要么是`assets`文件夹,要么是某个加密的资源包里。我硬着头皮一个文件夹一个文件夹翻,那叫一个费劲,文件命名跟鬼画符似的。
- 第一轮搜索:找`lua`或者`txt`文件。结果只找到几个配置文件,根本没有大段的剧情文字。
- 第二轮搜索:找像数据库一样的`db`或者`json`文件。找到一个名为`*`的玩意儿,没有后缀名,一看就不对劲。
- 第三轮搜索:我开始翻那个`smali`代码。对,就是Android程序的核心逻辑。我得看它程序启动的时候,它到底去哪个路径加载文本了。
这一下就找到了关键!原来这游戏的文本根本就不是单独的文本文件,而是被硬塞进了一个加密的资源包,并且编码很奇葩,不是标准的UTF-8,估计是那个啥Shift-JIS,或者被它魔改了。之前汉化烂尾,我猜就是卡在这里了,替换进去全是乱码。
硬来:定位,替换,再塞回去
既然找到了老巢,接下来的事情就是暴力破解。我先找到一个能解开那个加密资源包的工具,反复试了几个开源的库,终于把那个`*`给解出来了。里面一坨一坨的文字,日语的,跟屎山一样堆在那里。我当时那个头大。
我的做法是:
我写了一个小脚本,把所有日语文本的长度、位置都记下来,然后让脚本去比对之前汉化组放出来的文本,一个萝卜一个坑地,把中文替换进去。
这个过程极其痛苦,因为日语和中文的字数不一样,替换的时候经常会出现文本溢出,导致游戏显示的时候错位甚至闪退。我得对着游戏里的截图,一个字一个字地调整中文字数,保证替换后的长度尽量接近原文。这简直就是体力活,干得我眼睛都快瞎了。
等我把几百K的文本全喂进去,重新打包成新的`*`,再塞回原来的目录,那一刻,我感觉就像是做了一个心脏移植手术。
最大的坑:回封与签名
文本搞定了,就该把所有文件重新压缩成一个新的APK了。这一步看似简单,实则坑死人不偿命。
新的APK包好之后,安卓系统可不是你随便搞个包就能装的,它需要签名。原游戏的签名肯定没了,我得用自己的签名工具给它重新签一遍。我用了最新的V2签名方式,以前的V1签名有些老手机死活装不上。签完名,我战战兢兢地把文件拷到我的测试机上,点击安装。
第一次,安装失败。
第二次,能装了,但启动秒退。
我又回去查了半天日志,原来是那个`*`配置文件里,有几个关于权限和路径的设置,在我解包重包的时候被破坏了。我把那几个关键的标签重新对齐,改得跟原版一模一样,再重新打包、签名。
第三次,终于!游戏启动了,屏幕上的文字,干干净净的简体中文!
收尾:一场没有掌声的分享
我赶紧把这个完整的、能玩的汉化版发到群里,给那个老哥。心想着这下可以装个大逼,好好炫耀一下了。
结果?
那老哥回复了一句:“谢了兄弟,不过我手机太老,安卓版本不够,装不上你这个新版的V2签名包……”
当时我就想骂人。花了我两天时间,又是逆向又是改代码,又是调整字数,告诉我手机太老?
不过既然东西做出来了,我还是把文件好好整理了一下,写了个简单的说明,分享给了其他有需要的群友。这帮人可比那个老哥靠谱多了,一堆人感谢我的暴力实践。至于那个当初立FLAG的老哥,后来就没声了,估计是自己去找个老版本去了。我这人就这样,吃饱了撑着,喜欢折腾,这篇记录权当是给那些想自己汉化安卓游戏的老手们,提个醒:遇到无后缀加密文件,别害怕,硬着头皮干就完了。

