使用到的工具有
apktool:解包、重新打包
dex2jar:dex包转换成jar包、jar包转成dex包
jd-gui: class文件反编译成java源文件
keytool:生成证书文件(keytool在jdk的bin目录)
zipalign.exe:对重新打包后的apk进行对齐(在安卓sdk的build-tools目录下或单独下载)
apksigner.jar: 对重新打包后的apk文件签名(在安卓sdk的build-tools/lib目录下或单独下载)
apktool
反编译: java -jar apktool.jar d xxxx.apk
重新打包: java -jar apktool.jar b [反编译生成的文件夹]
dex2jar
keytool
keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
testalias是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
test.keystore是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
36500是证书的有效期,单位天
zipalign.exe
zipalign -v -p 4 input.apk output.apk
input.apk是需要签名的安装包
output.apk是对齐之后的的安装包
apksigner
java -jar apksigner.jar sign --ks kestore的路径 --out output.apk input.apk
然后会提示输入keystore的密码,输入后回车即可完成签名
目前只会修改 AndroidManifest.xml 使应用信任用户安装的证书,用于Fildder抓包。
使用apktool解包后,在 AndroidManifest.xml 中的application标签中加入
<application android:networkSecurityConfig="@xml/network_security_config">
再在解包后的res/xml目录下加入 network_security_config.xml 文件
network_security_config.xml 内如如下
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="user"/>
<certificates src="system"/>
</trust-anchors>
</base-config>
</network-security-config>
修改好后再通过apktool打包成apk文件
下一步需要对重新打包的apk文件进行对齐
然后生成自己的证书文件
最后使用自己的证书文件对对齐后的apk进行签名
然后就可以进行安装,使用Fildder抓取https包了