关于反编译,首先,请阅读http://blog.csdn.net/jltxgcy/article/details/17141127
第一种方式:只使用apktool
apktool,xxx.apk放在了同一个目录下
反编译:./apktool d -f xxx.apk,生成了xxx文件夹
重新打包:./apktool b -f xxx(文件夹),生成了xxx/dist,里面存放着重新生成的apk,但是没有签名
cd xxx/dist
重签名:jarsigner -verbose -keystore /home/jltxgcy/eclipse/jdk1.6.0/bin/android123.keystore -signedjar xxx_signed.apk xxx.apk android123.keystore
对齐:zipalign -v 4 xxx_signed.apk xxx_align.apk
第二种方式:使用apktool和bakmail,smail工具
baksmail和smail工具下载地址:https://bitbucket.org/JesusFreke/smali/downloads,baksmali源码地址为https://github.com/JesusFreke/smali。
apktool ,smali-2.0.3.jar,baksmail-2.0.3.jar,xxx.apk放在同一目录下
反编译:
(1)./apktool d -f -s xxx.apk,生成了xxx文件夹,但是文件夹classes.dex没有解析成smali
apktool的命令参数详解:可以在Ubuntu下敲这个命令,会出来帮助文档
(2)java -jar baksmali-2.0.3.jar -o baksmailout xxx/classes.dex
重新打包:
(1)java -jar smali-2.0.3.jar baksmailout/ -o xxx/classes.dex
(2)./apktool b -f xxx(文件夹)
重签名和对齐和上面类似。