再次记录一次apk反编译/回编译过程,链接失效请留言,会及时更新。
参考博客: https://blog.csdn.net/w327918069/article/details/82761437
准备工具
- apktool 2.4.0: 请自行github搜索瞎子啊
- AndroidKiller_v1.3.1: [百度网盘](https://www.baidupcs.com/rest/2.0/pcs/file?method=batchdownload&app_id=250528&zipcontent=%7B%22fs_id%22%3A%5B908508934748719%5D%7D&sign=DCb740ccc5511e5e8fedcff06b081203:er%2F72tppfnpi594iaAgvRBDVVMc%3D&uid=3618094371&time=1566556023&dp-logid=5421758269795401179&dp-callid=0&vuk=3618094371&zipname=AndroidKiller__v1.3.1.
apk反编译
首先,我们需要一个apk,下图是Android Studio编写并打包的一个apk。
其实apk就相当于一个zip压缩包,通过WinRar工具可以对其解压缩,像这样:
看到了我们熟悉的
AndroidManifest.xml
文件,我们打开看一看:OMG为什么是乱码呢?是因为Android在打包成apk时,会把部分xml文件编码为二进制文件,因此我们无法查看。
这就阻挡了我们码?
此时,祭出我们的神器---->apktool
,当当当当~~~~~~~。
一行命令进行apk反编译:
apktool d -r app-debug.apk
一定要加入参数-r
,不然后面回编译回报错。
此时再次打开文件
AndroidManifest.xml
就可以看到源文件了。
apk反编译到此结束。
apk回编译
回编译就是通过apk反编译生成的目录文件转换成一个apk。
十分简单的一行命令:
apktool b app-debug
在反编译目录中的
dist
目录就可以看到回编译生成的apk文件。
apk签名
此时安装apk到手机无法安装成功,还需要对apk进行签名才能安装。
1.生成key.keystore
keytool -genkey -alias key.keystore -keyalg RSA -validity 30000 -keystore key.keystore
我的电脑运行上面代码控制台乱码,设置控制台编码为GBK即可解决( 参考博客)
chcp 936
可以看到key.keystore已经生成。
2.对apk进行签名
可用于没有签名和已经签名的apk,再次签名。
jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]
命令格式及参数意义:
-verbose -> 输出签名过程的详细信息
-keystore [keystorePath] -> 密钥的库的位置
-signedjar [apkOut] -> 签名后的输出文件名
[apkin] -> 待签名的文件名
[alias] -> 证书别名
jarsigner -verbose -keystore key.keystore -signedjar app-debug_signed.apk app-debug.apk key.keystore
回编译完成。