您的位置:首页 > 其它

如何给apk手动重新打上签名

2017-05-31 17:09 309 查看
[QUESTION]

如何给apk手动重新打上签名

[ANSWER]

有时,为了验证特定功能,获取必要权限,需要手动给apk打上需要的签名,步骤如下:
1.首先需要有java环境
2.需要打签名的工具,该工具的源码位于android源码的build/tools/signapk目录下,linux系统编译生成的位置在out/host/linux-x86/framework/signapk.jar
3.需要所打签名的公钥和私钥,对于各个厂家自己的签名,不同厂家具体位置不同,google默认位置为build/target/product/security目录,该目录下为debug版本的签名,后缀为pem的文件代表公钥,后缀为pk8的文件表示私钥。
4.打签名方法:
java -jar 路径/signapk.jar 路径/公钥 路径/私钥 source.apk target.apk
路径: 表示signapk.jar,公钥,私钥所在的路径
公钥:签名的公钥,例如platform.x509.pem
私钥:签名的私钥,例如platform.pk8,注意公钥和私钥要匹配,成对出现
source.apk:需要手动打签名的apk
target.apk:重新打签名后的apk
示例:
java -jar out/host/linux-x86/framework/signapk.jar build/target/product/security/platform.x509.pem build/target/product/security/platform.pk8 QQ.apk QQ_resign.apk
5.验证:
可以先安装原始的apk,例如 QQ.apk,然后再次通过adb方式安装重新打签名的apk:QQ_resign.apk,如果因为签名不一致导致的安装失败,说明打签名成功。
//安装原始apk
adb install QQ.apk Success
//安装重新打签名的apk
adb install -r QQ_resign.apk Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]

PS:apk之所以需要签名,是出于安全考虑的认证方式,apk没有签名或者前后签名不一致都无法安装。任何对apk的篡改,都需要重新对apk签名才能安装,由于篡改者是无法获取原始apk的秘钥信息,因此篡改后的apk由于签名不一致是无法替换原始apk的,这样既保证了apk的安全性,同时也保证了手机的安全和稳定性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: