1、下载地址
Apktool:http://ibotpeaches.github.io/Apktool/install/
dex2jar: https://github.com/pxb1988/dex2jar
JD-GUI: http://jd.benow.ca/
2、说明
apktool:反编译工具,将apk反编译为smali反汇编语言
dex2jar:将xxx.dex反编译为xxx.jar包
jd-gui:可将xxx.jar翻译为xxx.java源码,查看
3、安装
<1>apktool
第一:将apktool脚本copy下来,保存名字为apktool,加以权限:chmod a+x apktool
第二:将apktool_xxx.jar下载下来,改名为:apktool.jar,加以权限:chmod a+x apktool.jar
第三:# cp apktool apktool.jar /usr/local/bin
<2>dex2jar/jd-gui
将dex2jar和jd-gui下下来,解压缩即可。
4、签名
# apktool d test.apk //反编译
# apktool b test //回编译,xxx为目录
回编译之后,build和dist就回编译apk生成的东西,打开build/apk文件夹发现少了original文件夹下的META-INF文件夹,也就意味着dist里的apk是没有签名文件的;
回编译后的apk是安装不成功的,总是提示:Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION]
实质是没有签名
<1> 生成签名
# keytool -genkey -keystore test.keystore -keyalg RSA -validity 10000 -alias test
注意:-keystore是签名文件的名字,而-alias后边是别名,一般-keystore和-alias后边跟的是一样的,但两者没有关系。
<2>为apk增加签名
# jarsigner -digestalg SHA1 -sigalg MD5withRSA -tsa -verbose -keystore test.keystore -signedjar test-signed.apk test.apk test
注意:
1.最后的test就是-alias后面带的,必须保持一致
2.如果不带-digestalg SHA1 -sigalg MD5withRSA签名后的apk安装也是不成功的,说INSTALL_PARSE_FAILED_NO_CERTIFICATES的错误,如果不带-tsa会报一个时间方面的警告。
