classes.dex汉化

dex的汉化相比arsc和xml麻烦了不止一点点,我也摸索了挺久才弄会的吧~

首先感谢lxe@opda 告诉我的反编译方法

classes.dex是程序编译后的[程序名].java文件。

其中包含了软件所有activity编译后的代码。

JesusFreke写了一个反编译dex文件的java程序,并发布在google code上http://code.google.com/p/smali/ 我们可以去下载smali.jar和baksmali.jar最新版

dex解包

程序需要java环境,下载JDK或者JRE已经安装的请跳过

解包dex:
java -jar baksmali.jar %1 -o classes

打包dex:
java -jar smali.jar classes


两个jar程序和上面操作使用的批处理都在压缩包内..点击下载(内含smali.jar和baksmali.jar v1.1版)..

把需要反编译的classes.dex文件和两个jar放在同一目录下,拖动dex到 “解包.bat”,之后会在同目录生成”classes”文件夹

打开classes文件夹看看(以twigee为例)

路径为*/classes/tice/twitterwalk里头有很多以.smali为后缀的文件

他们就是反编译后的程序,也就是我们要修改的文件

这些文件通常有几十个甚至几百个,数量惊人(.smali文件数量=程序原activity数量),不知从何下手吗?

用最简单的记事本打开看看吧~

没错,他们就是纯文本文件,是不是眼前一片明朗了呢?

不过对于大量的文件,window自带滴记事本是绝对应对不了的。

接下来就轮到大杀器Notepad++登场了~

Notepad++支持文件夹内批量搜索文本,而且速度超快,这就是要用他的原因了。

打开Notepad++ 按Ctrl+F 选择“文件查找”选项卡,就可以批量搜索了

那么如何知道要修改些什么呢?

首先我们来分析那一大堆.smali文件

和xml一样,作者很明确的表明了每个activity的作用

和分析xml一样地分析smali文件,想一想你要找的资源会出现在activity,但是要做的这点对于不是学程序的人真的很难。

简单方法当然有,那就是批量搜索!

我们汉化的顺序是先arsc再xml,最后才会到dex中寻找资源

再汉化完前两者之后,最好先上机测试下,看看有还有哪些资源没有被汉化,而这些没有被你汉化到的资源,就藏在dex中了。

也就是说,汉化dex中资源的目标是确切的,你可以在运行软件后记录下还没被汉化的地方,然后逐个寻找,替换。

具体实例:

我再把Twigee的arsc和xml汉化完之后,还有些资源没被汉到

分别是:“Following”“Follower”“Home”等

用Notepad++搜索“Follow”

(点击图片放大)

下面出现了好多结果….

我们找要的是const-string vn “关键字”

把英文改了吧~不过修改完是乱码…

没关系,那是编码问题,选择 格式→转为UTF8就可以显示了,不过千万要记得保存前要改回ANSI !!

注意:1.只能修改const-string vn “关键字”  引号中的字符

2.同时出现多个重复的关键字时,请谨慎修改,有些可能是定义函数的 具体参考http://code.google.com/p/smali/source/browse/#svn/dalvik-docs/opcodes

3.千万记得保存时的文本编码为ANSI

dex打包

注意:打包前请确定classes 文件夹下没有其他无用文件,如notepad++的备份文件

拖动“classes”文件夹到 “打包.bat”,之后会在同目录生成”out.dex”文件,它就是重新编译后的classes.dex了

就此,dex汉化完成

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值