[教程] Android程序(.apk)教程之classes.dex
Android, dex, apk, classes, 教程
本帖最后由 s.p.k 于 2010-9-7 14:24 编辑 classes.dex是程序编译后的[程序名].java文件。 其中包含了软件所有activity编译后的代码。 JesusFreke写了一个反编译dex文件的java程序,并发布在google code上le/p/smali/ 我们可以去下载smali.jar和baksmali.jar最新版 dex解包 程序需要java环境,下载JDK或者JRE已经安装的请跳过 解包dex: java -jar baksmali.jar %1 -o classes 打包dex: java -jar smali.jar classes 游戏xml文件修改 两个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” 下载 (134.55 KB) 2010-9-7 14:13 (点击图片放大) 下面出现了好多结果…. 我们要的是const-string vn “关键字” 把英文改了吧~不过修改完是乱码… 没关系,那是编码问题,选择 格式→转为UTF8就可以显示了,不过千万要记得保存前要改回ANSI !! 注意:1.只能修改const-string vn “关键字” 引号中的字符 2.同时出现多个重复的关键字时,请谨慎修改,有些可能是定义函数的 具体参考le/p/smali/source/browse/#svn/dalvik-docs/opcodes 3.千万记得保存时的文本编码为ANSI dex打包 注意:打包前请确定classes 文件夹下没有其他无用文件,如notepad++的备份文件 拖动“classes”文件夹到 “打包.bat”,之后会在同目录生成”out.dex”文件,它就是重新编译后的classes.dex了 就此,dex完成 在完成arsc xml dex的分别之后 我们进入最后的收尾步骤——打包&签名 打包 首先我们得先到原来的那个APK包,别告诉我你已经删了…. 1.用winrar打开它,把你完成的arsc,xml,dex文件按照原目录替换,也就是用鼠标拖进winrar去 2.删除META-INF文件夹,里面是原来的证书文件,删除后才能正确签名 3.关闭winrar窗口 签名 1.把修改后的APK包重命名为 unsigned.apk 放到Auto-Sign目录下 下载Auto-Sign(需要java环境) 2.拖动unsigned.apk到sign.bat签名,在同目录生成signed.apk,这就是签名后的APK包 签名后程序为何不能安装? 1.如果提示证书错误,请删除英文原版程序后安装。 2.如果提示无法安装,请检查过程中有没有修改到程序定义或函数的环节。 3.如果安装后无法运行或各种报错,请检查过程中有没有修改到程序定义或函数的环节。 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论