一、下载Apktool
apktool官网下载地址:https://apktool.org/docs/install;直接下载最新版本
验证是否安装成功:cmd中输入 apktool,显示如下
二、反编译Apk文件
反编译apk文件分为四步:
- 解包apk文件
- 对解包后的apk文件进行修改
- 重新打包apk文件
- 对apk文件进行签名(签名以后才能够安装到手机)
解包Apk文件
在apk所在的路径,并输入以下命令,解压apk文件到当前文件夹:
apktool d dgyss.apk
显示如下图,表示解压成功:
解压后在dgyss.apk文件的同级目录下,得到同名文件夹dgyss
修改Apk文件
根据需要修改smali文件
打包Apk文件
1、打包前,首先删除原来的签名信息,直接删除META-INF文件夹
2、使用以下命令打包文件夹,生成新的apk文件
apktool b dgyss
签名Apk文件
1.生成密钥库文件,即keystore文件
使用以下命令生成keystore文件:
keytool -genkey -alias android_keystore -keyalg RSA -validity 20000 -keystore android.keystore
以上各个参数的含义如下:
-genkey:这个参数表示keytool要生成一个新的密钥对和一个自签名的证书
-alias android_keystore:这个参数指定了生成的密钥对和证书的别名(alias),此处别名为android_keystore,这个别名在密钥库中用于唯一标识这个特定的密钥对和证书
-keyalg RSA:这个参数指定了用于生成密钥对的算法,即RSA算法。RSA是一种广泛使用的非对称加密算法,它使用一对密钥:一个公钥用于加密数据,另一个私钥用于解密数据
-validity 10000:这个参数设置了证书的有效期,以天为单位,此处证书的有效期是10000天
-keystore android.keystore:这个参数指定了密钥库(keystore)的文件名,即android.keystore。密钥库是一个用于存储密钥对和证书的数据库文件
此时就在当前目录下,生成了一个android.keystore文件。
2.将刚刚生成的android.keystore文件,拷贝到未签名的apk文件同级目录下,切换到该路径下,输入以下命令,进行签名:
jarsigner -verbose -keystore android.keystore -signedjar dgyss-signed.apk dgyss.apk android_keystore
以上各个参数的含义如下:
jarsigner:这是 Java 开发工具包 (JDK) 中的一个工具,用于对 JAR 文件、APK 文件等进行签名。
-verbose:这个参数用于输出详细的签名过程,当使用这个参数时,jarsigner 会显示更多关于签名步骤的信息,这有助于调试和了解签名过程的具体情况。
-keystore android.keystore:这个参数指定了密钥库文件的路径和名称,即 android.keystore。
-signedjar dgyss-signed.apk dgyss.apk:这个参数指定了签名后的 APK 文件的输出路径和名称,即dgyss-signed.apk,这个文件是原始 APK 文件 dgyss.apk 经过签名后的结果。
android_keystore:这个参数指定了密钥库中用于签名的密钥对的别名,别名是在使用 keytool 生成密钥对时指定的,它用于在密钥库中唯一标识这个特定的密钥对。
成功生成dgyss-signed.apk