在对某个 APP 进行逆向时,最后一步将修改应用到 APK 中往往会生成未签名的 APK,而 Android 要求每个 APK 都必须要有签名才能被安装,因此我们需要对未签名的 APK 进行签名
1. 生成数字证书
在 keytool 所在的文件夹下(通常是 C:\Program Files\Java\jdk1.8.0_101\bin 之类的)以管理员身份执行如下命令
-keystore reverse_engineer.keystore 表示生成的数字证书的文件名为 "reverse_engineer.keystore";
-alias rekeystore 表示证书的别名为 "rekeystore",可以与 keystore 一样;
-keyalg RSA 表示生成密钥文件所采用的算法为 RSA;
-validity 10000 表示该数字证书的有效期为10000天,意味着10000天之后该证书将失效;
然后根据提示输入密钥、地区等信息。最终,这条命令将生成名为 reverse_engineer.keystore 的数字证书
2. 重签名
将数字证书拷贝到需要签名的 apk 的目录下,在 jarsigner 所在的文件夹下(通常是 C:\Program Files\Java\jdk1.8.0_101\bin 之类的)以管理员身份执行如下命令执行如下命令
-keystore 表示使用当前目录中的 reverse_engineer.keystore 签名证书文件;
-storepass 密钥口令;
-signedjar crackme02_release.apk表示签名后生成的APK名称;
crackme02.apk 表示未签名的APK;
rekeystore 表示 reverse_engineer.keystore 的别名
3. 重新安装 APP
如果你不是被逆向的 APP 的作者,那么你重签名时使用的私钥在绝大多数情况下不会和逆向前的 APP 相同。在 Android 的安全策略下,这样的 APP 是不能被安装的,因此需要将之前的 APP 卸载掉,才能将重新打包后的 APK 重新安装到 Android 设备上
参考文章: