Android APK反编译

新版本apktool用法:

1、下载:
当然了上面这个链接和图片描述的可能也会变。
目前就是下载两个文件apktool.bat和apktool.jar
(这个如果你下载的文件有版本号,比如apktool_2.2.1.jar,就要改名字为apktool.jar),
然后把上面两个文件都放到C://Windows下面。
如果您无权访问C://Windows,可以将这两个文件放在任何位置,
然后将该目录添加到Environment Variables System PATH变量中
最后尝试apktool通过命令提示符运行
运行CMD,进入比如app-release.apk所在目录,然后运行apktool d app-release.apk,
默认解压的文件就在app-release.apk所在目录

重新签名打包

1.回编译apktool b files
files就是对应刚刚修改的apk文件夹,执行完后会重新生成一个apk文件

注意:编译后的apk是安装不成功的,总是提示 Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION],实质是没签名。

2.先生成证书:
keytool -genkey -keystore coolapk.keystore -keyalg RSA -validity 10000 -alias coolapk

注意:上面-keystore后面跟的是签名文件的名字,而-alias是别名,一般情况下-keystore后面跟-alias是一样的,但其实两者没有关系,这也是我故意搞成不一样的原因。

3.为apk进行签名:
jarsigner -digestalg SHA1 -sigalg MD5withRSA -tsa -verbose -keystore coolapk.keystore -signedjar coolapk-signed.apk coolapk.apk coolapk

注意:
1.最后的”coolapk”就是-alias后面带的,必须保持一致
2.如果不带-digestalg SHA1 -sigalg MD5withRSA签名后的apk安装也会不成功,INSTALL_PARSE_FAILED_NO_CERTIFICATES的错误,如果不带-tsa会报一个时间方面的警告.

/////////////第二种签名方法 start/////////////////

先生成证书:

  1. keytool -genkey -keystore example.keystore -keyalg RSA -validity 10000 -alias example

生成一个证书,然后为这个 apk 进行签名:

  1. jarsigner -verbose -keystore test.keystore -signedjar app_debug_signed.apk app_debug_output.apk test

上面的命令的含义为: jarsigner -日志级别[verbose] -keystore 证书地址[test.keystore] -signedjar 签名后的apk路径[app_debug_signed.apk] 待签名的apk路径[app_debug_output.apk] 证书alias名称[test]
输出结果为app_debug_signed.apk

/////////////第二种签名方法 end/////////////////

发表评论