修正前必需先装置java开发环境,不装置的话本身去百度。长文章,耐烦看完。
不断在做Android使用开发,对本身亲手输入的apk包不太理解。最近想研讨一下,消弭本身的一些技术盲点。
好吧,我们开门见山吧。本文次要引见如何获取apk包中的dex文件,并复杂修正外面的源代码,然后重新打包生成apk文件。
上面提供了HelloWorld.apk解包,修正源代码,重新打包的进程。
1要运用的工具:
Baksmali:一个将dex文件转换成smali文件的工具(dex文件不能修正,要修正源代码,必需将dex文件转换成smali文件)。
Smali:一个将smali文件转换成dex文件的工具(修正smali文件后,自然需求将其恢复成原来的dex文件)
Signapk.jar:对apk实行签名(未签名的包最终会装置失败,表示“解析包有成绩”)
文章末尾会提供一个下载链接。
2操作步骤:
a .解压apk文件,(将apk的后缀改为zip,运用常用的解压工具winrar或7zip)
运用bbaksmali工具将classes.dex转换为smali文件,在cmd窗口输出:Java-jar baks Mali-2 . 0 . 3 . jar-x classes . dex。
执行后,将生成out目录。目录构造与源代码相反。在相应的目录中找到相应的smali文件。假如找不到,就把整个out文件夹放在编辑器里搜索。
如图,找到“hello world”字符串,修正为“修正成功”,Ctrl+S保管并封闭文件。
运用csmali-2.0.3.jar工具将smali文件转换为dex文件,在cmd中输出命令:Java-jar smali-2 . 0 . 3 . jar-o classes . dex out。
执行后,根目录下的classes.dex文件将被生成并交换,修正成功。
d .用生成的新的classes.dex文件交换原来从HelloWorl.apk中提取的classes.dex文件,用压缩工具将这些文件压缩到HelloWorld.zip中,并将zip的后缀改为apk。
在这里,不例如将其压缩到HelloWorld.rar,然后将其更改为apk。由于在签名阶段会报告错误。
此时的apk包无法正常装置,阐明解析包错误。(缘由是只要签名包才干正常装置)
运用电子签名工具对apk实行签名,将apk复制到资源根目录中的sign_tool目录,并在cmd中输出命令:
Java-jar signapk . jar platform . x509 . PEM platform . pk8 hello world . apk signed . apk
执行后,这个目录下会生成Signed.apk文件,这是最终的文件。
装置后测试成功,HelloWorld字符串已被成功交换。由于我们只做复杂的修正,所以很容易。对大程序做复杂的改动不会那么容易。有兴味的话可以试试或许学习一下smali的语法。
工具的链接如下:
百度网盘:https://pan.baidu.com/s/18uHhJpPtOOlff7snQn9KXA
密码:0m4w