apktool 主要用于逆向apk文件。它可以将资源解码,并在修改后可以重新构建它们。它还可以执行一些自动化任务,例如构建 apk
下载地址
https://ibotpeaches.github.io/Apktool/
https://bitbucket.org/iBotPeaches/apktool/downloads/
反编译APK
命令格式:apktool d [ apk文件名 ]
进入到 apktool 所在目录
.\apktool.jar d .\mlxx.apk
不行的话就用下面这个命令,前面加上 java -jar
java -jar .\apktool.jar d .\mlxx.apk
编译成功之后会出现一个文件夹
- AndroidManifest.xml
APP权限配置
程序入口
- smali 文件(一种汇编代码)
.smali可以和.dex相互转换
修改APK代码通常修改smali文件(重新修改.java源代码 重新编译的困难太大)
-baksmali.jar smali.jar对dex 和 smali文件做转换
- classes.dex
源代码在classes.dex文件里
可以反编出.java代码
重新打包
命令
apktool b 目录
apktool b mlxx
如果不行
java -jar .\apktool.jar b mlxx
打包成功后目录内会出现一个 dist 目录,apk 就在里面
签名
keytool jarsigner 工具是JAVA JDK自带的
- 生成证书
keytool -genkey -keystore my-release-key.keystore -alias my_alias -keyalg RSA -keysize 4096 -validity 10000
key | dec |
---|---|
keytool | 工具名称(固定写法) |
)-genkey | 执行的是生成数字证书操作(固定写法) |
-v | 打印生成证书的详细信息 |
-keystore myApp.keystore | 生成的证书的文件名为"myApp.keystore"(根据需求,设置你的证书名) |
alias myApp.keystore | 证书的别名为"myApp.keystore"。(一般和上面的文件名相同,可以不同,但要记好,签名时会用(A)) |
-keyalg RSA | 生成密钥文件采用的算法为RSA(固定写法) |
-validity 3000 | 该数字证书的有效期为30000天,30000天之后该证书将失效 |
- 用证书给 apk 签名
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore -signedjar super.mlxx.apk mlxx.apk my_alias
key | dec |
---|---|
jarsigner | 工具称名(固定写法) |
-verbose | 显示出签名详细信息 |
-keystore myApp.keystore myApp.keystore | 要使用的签名证书文件 |
-signedjar android-release-signed.apk | 签名后的文件名 |
android-release-unsigned.apk | 要签名的文件 |
myApp.keystore | 别名,即(A)步中的别名 |
未签名APK不能在安卓手机上安装
APP在启动时会对签名校验,要逆APP,跳过校验