admin 管理员组

文章数量: 1184232


2024年3月18日发(作者:手机游戏制作软件)

apk程序反编译、汉化、修改smali文件

这篇文章是针对Android系统的产品而言(而不是只针对原道产品),不过,我只有一台N5

p那就发这儿了(貌视坛子里没有技术区)。如果是打酱油的高手路过,请继续去打酱油,

当然也欢迎围观。vivi_an首发,转载请注明出处。

主要目标:对于没有SD卡但想要安装运行那些只有SD卡支持的apk程序的(比如仙剑)。

次要目标:apk程序反编译、汉化、修改程序的数据读取和保存路径。

本文针对“思维导图 Thinking Space Pro 2.16”的apk程序

进行修改。题外话,这程序人手配备一个,不错的东西。

一、相关工具(针对windows系统)

JDK:/technetwork/java/javase/downloads/

下载windows安装版的程序,安装后不用管它了。

Apktool:/p/android-apktool/

下载apktool-install-windows-2.2_2和2,用winrar

解压后把解压出来的文件都放在一个目录下,比如:E:/apktool/ 下(为简单起见,下文都

用这个路径为apktool工作目录)。

Auto-Sign签名工具:N/A

二、反编译

说要把apk“装冰箱(反编译)”分三步走:

第一步:先把apk程序(这里用)程序放到 E:/apktool/ 下。

第二步:启动windows的,用命令行cd到 E:/apktool 目录下。

第三步:键入命令

apktool d

这个命令的格式是:

apktool d output

其中 d 参数用来指示工具要进行反编译操作,是要反编译的程序,output 源码输

出的路径。如果最后不指定输出的路径,默认是放在同目录下的 xxx 文件夹下(即apk程

序名称去掉.apk后的名称)。如果你的apk文件名称中有空格,那键入命令时用双引号引起

来,不过为方便起见,反编译之前把apk文件名中的空格都去掉先。

运行反编译命令后会在同级目录下得到一个 ThinkingSpacePro 文件夹,源文件都在里面

了。

三、汉化

汉化这个比较简单,在反编译apk程序得到源码后,一般程序的文档都放在res目录下,

都是些xml文档,用记事本之类的打开查看一下,一般都会比较容易看出来哪些是可以汉化

的文本。这个就不去弄它了。可能不同程序还有不一样的,反正英语差点,汉化这种事我也

不去深究了。你如果只想汉化的话,进res文件夹找找,完成汉化后就可以直接重新编译程

序了(最后讲编译),不用太多的编程知识。思维导图本身支持多国语言(都在源文件的re

s文件夹里),所以也用不着汉化了。但大致的汉化过程就是这样了。

另外貌视还有Android ResEdit之类的专用汉化软件,不用搞什么反编译,用起来可能

更简单。

四、SDcard to Flash

对于N5p,app2sd只是一个传说,不过sd2flash下面就可以实现。用SD卡玩机的人可

以无视。

下面这个是本文的重点。目的就是要修改程序的默认数据读取和保存路径,主要针对那

些必须有SD卡才能使用的程序。比如说一个游戏它分为主程序和游戏的关卡数据。主程序

可能只有1M,但游戏关卡数据可能是几十甚至上百M,这类游戏一般是主程序安装在内存中,

而关卡数据会要求你安装或下载到SD卡上。如果你没有SD卡,那就玩不成了。我之所以要

改它的路径,就是不想让它占我的SD卡,N5p不是自带8G(实际好像只有6.5G)Flash闪存

么,那为什么不用它?下面的修改就是要欺骗apk程序,我们的Flash闪存就是程序你要的

SD卡。

正式修改时,除了要修改所有源文件(主要是.smali程序源文件)中的/sdcard 路径,

使之指向 /flash 外,还要修改含有 ernalStorageState 和 Enviro

ernalStorageDirectory 的源文件,前者用于检测是否安装SD卡,后者获取

SD卡的路径。

那么从头来修改思维导图 Thinking Space Pro 2.16的数据读写路径。原版程序你必须

要有SD卡才能正常保存你的数据,修改之后,所有数据读取、保存都针对N5p自己的Flas

h闪存,从而解放SD卡。

用apktool反编译

apktool d

反编译后得到ThinkingSpacePro文件夹,存放着程序源文件。

使用UltraFileSearch搜索ThinkingSpacePro文件夹中所有包含"sdcard"文字的文件(搜

索时,UltraFileSearch去掉"Whole word"的选项)。没有UltraFileSearch可以用window

s系统自带的搜索工具,只是要用搜索文件中包含有指定内容的文件,而不是搜索文件名(我

的系统搜索工具坏了,所以用UltraFileSearch这个软件代替)。

对搜索到的文件(主要是其中的.smali程序源文件)用记事本打开编辑,将文件中所有 "/

sdcard" 的字串改成 "/flash" 字串,这样将原先指向 /sdcard 的路径全部指向 /flash

路径。

搜索程序中判断SD卡是否安装的方法,修改它使判断SD卡是否安装的方法返回True。一


本文标签: 程序 反编译 数据 安装 修改