安卓软件APK编译反编译与汉化低级篇(4)
首先,要对DEX文件进行汉化,就需要先对dex进行反编译,也就是解包dex文件。
把需要反编译的classes.dex文件放到Xtemp目录下,如图
然后按住classes.dex拖拽到dex.bat上,按“1”,就会自动解包了,等出现如图内容时,就说明解包成功。
上述是在windows7系统下的操作,xp用户的操作略有不同,xp用户请在C盘根目录下创建一个android目录,将xp版本的dex解包工具Xtemp文件夹放到android目录下,如下图,
然后将classes.dex拖到undex.bat上就可以解包了。
解包完成,就会在Xtemp目录下看到一个新生成的classes文件夹,这个就是反编译后解包的文件所存放的目录。
打开classes文件夹的下级目录,我们会看到很多.smali后缀的文件,这些以.smali为后缀的文件就是反编译后的文件了,也就是我们要汉化修改的文件。
很多人要郁闷了,打开文件夹一看,好多.smali文件啊,几十个,其实这都是少的,有的大软件,都有上百个.smali文件,那就更郁闷了!
.smali文件其实就是文本文件,用普通的记事本就能打开,但是自带的记事本软件来编辑这么多文件,肯定是不行的,累都累死了,所以我们来使用强悍的Notepad++文本编辑软件!
Notepad++支持批量搜索文件夹内所有的文件内容,不需要一个文件一个文件的去搜索,大大降低了工作量!
我们用Notepad++打开一个.smali文件,都是程序代码,看着都晕,这哪个是要汉的呢?
对于懂点编程的人就不会太难了,可以根据文件名和代码去找,那对于不懂编程的怎么办呢,其实也很简单的。
我们之前说了,android软件的汉化最好是按顺序来,先汉化arsc文件,然后来汉化xml文件,最后才是dex文件,当我们汉化好arsc和xml后,先将软件打包,然后安装上,这时软件中没有汉化到的还显示英文的地方一般就在dex文件中了!
通过我们前面的汉化,我们会发现,在汉化了arsc和xml后,还有些地方是英文的,例如下面两图中的Setting,Help,Info和Available Memory:,这4个地方都还是英文,下拉通知栏,里面也还有一些英文,这些没汉到的地方,就基本上就在dex文件里了!
现在我们就开始来找到并汉化这些漏网之鱼吧!
首先打开Notepad++,然后选择上方菜单栏中的“搜索”,选择“在文件中查找”,
然后点击“目录”后面的小按钮,找到classes目录,并选择它!
然后在“查找目标”后面的输入框中输入你要查找的单词,如这里我们要查找Setting,就输入它,然后点击右边的“全部查找”,稍等一会,就会为你搜索到全部文件中的Setting。
这时,我们会看到很多地方包含Setting,哪个是要汉化的呢?其实很简单,我们只需看一个关键词,那就是“const-string ”,我们只汉化“const-string ”后面的,也就是说,我们只修改const-string vX “XXX” 中两个“”双引号中间的XXX部分,其他不要动!
双击下面搜索到的“const-string ”后的Setting,然后就会在上面跳转到该项,我们就可对其进行修改
后面的就依照这个办法,看看哪个没汉的就搜哪个,虽然有点麻烦,但是不容易出错,对于新手还是比较适合的。如果你日后熟练了,也可以直接搜索const-string来查找要汉的,要汉化的内容肯定是跟在const-string后的,但是要注意,const-string后面的不一定是要汉化的!这里有点饶舌,看看下面截图就明白了。
这搜索到的都是些不需要汉的,类似这样的还有很多,虽然都是跟在const-string后面的,但是要汉化的其实不是很多,不过这个也是要根据不同软件来看。具体的排除技巧,和汉化arsc还有xml时提到的注意事项一样!那些小技巧很多也都适用于dex的汉化排除。
我们一直往下找,在后面是不是看到了要汉化的地方,很明显,图中的这四个红框处就是软件中没汉到的地方,按我们汉第一个设置的的办法,把其他都搞定吧。
这里其实有个小窍门,就是大家在汉化dex时,会发现很多要汉化的地方都是连在一起的,中间间隔不会很远,比如,软件设置中的一些要汉化的地方在一个文件中,而且都还在一起,有联系的。这个就要通过不断的汉化来积累经验了!
好了,把没汉到的地方都搜索到,并汉化了,保存好后,就可以打包dex了。
打包dex时,只需将classes文件夹拖到dex.bat上,然后按2,就开始打包了
当出现命令行中的提示时,说明打包成功,并在xtemp文件夹下生成一个新的out.dex文件,只需重命名为classes.dex替换原文件即可。
Xp下的用户在打包dex时,请将classes文件夹拖拽到redex.bat上,出现如下界面时说明打包成功,并会在同目录下创建一个out.dex文件,只需重命名为classes.dex替换原文件即可。
这里注意,如果你汉化dex时有汉错或是把不该汉的地方汉化了的情况时,就有可能打包失败,或是在使用软件时出现错误!
dex的汉化内容就是这些,汉化是个细心的活,大家要多练习,多积累经验,当你汉化的软件多了,很轻松就会知道哪些需要汉,哪些不要汉,对于你了解软件的结构,也有一定帮助!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。