在對某個 APP 進(jìn)行逆向時,最后一步將修改應(yīng)用到 APK 中往往會生成未簽名的 APK寥闪,而 Android 要求每個 APK 都必須要有簽名才能被安裝水孩,因此我們需要對未簽名的 APK 進(jìn)行簽名
1. 生成數(shù)字證書
在 keytool 所在的文件夾下(通常是 C:\Program Files\Java\jdk1.8.0_101\bin 之類的)以管理員身份執(zhí)行如下命令
-keystore? reverse_engineer.keystore 表示生成的數(shù)字證書的文件名為 "reverse_engineer.keystore"蓝角;
-alias? rekeystore 表示證書的別名為 "rekeystore"昌罩,可以與 keystore 一樣捡偏;
-keyalg RSA 表示生成密鑰文件所采用的算法為 RSA;
-validity 10000 表示該數(shù)字證書的有效期為10000天峡迷,意味著10000天之后該證書將失效;
然后根據(jù)提示輸入密鑰你虹、地區(qū)等信息绘搞。最終,這條命令將生成名為 reverse_engineer.keystore 的數(shù)字證書
2. 重簽名
將數(shù)字證書拷貝到需要簽名的 apk 的目錄下傅物,在 jarsigner 所在的文件夾下(通常是 C:\Program Files\Java\jdk1.8.0_101\bin 之類的)以管理員身份執(zhí)行如下命令執(zhí)行如下命令
-keystore 表示使用當(dāng)前目錄中的 reverse_engineer.keystore 簽名證書文件夯辖;
-storepass 密鑰口令;
-signedjar crackme02_release.apk表示簽名后生成的APK名稱董饰;
crackme02.apk 表示未簽名的APK蒿褂;
rekeystore 表示 reverse_engineer.keystore 的別名
3. 重新安裝 APP
如果你不是被逆向的 APP 的作者,那么你重簽名時使用的私鑰在絕大多數(shù)情況下不會和逆向前的 APP 相同卒暂。在 Android 的安全策略下啄栓,這樣的 APP 是不能被安裝的,因此需要將之前的 APP 卸載掉也祠,才能將重新打包后的 APK 重新安裝到 Android 設(shè)備上
參考文章: