我目前正在尝试对库存android恢复应用更新。我为android构建创建了zip内容和我自己的密钥,但是它因签名验证错误而失效。我现在在bootable/recovery/verifier.cpp
#define FOOTER_SIZE 6
if (fseek(f, -FOOTER_SIZE, SEEK_END) != 0) {
LOGE("failed to seek in %s (%s)\n", path, strerror(errno));
fclose(f);
return VERIFY_FAILURE;
}
unsigned char footer[FOOTER_SIZE];
if (fread(footer, 1, FOOTER_SIZE, f) != FOOTER_SIZE) {
LOGE("failed to read footer from %s (%s)\n", path, strerror(errno));
fclose(f);
return VERIFY_FAILURE;
}
if (footer[2] != 0xff || footer[3] != 0xff) {
LOGE("failed check of footer bytes 2 & 3 match 0xff");
fclose(f);
return VERIFY_FAILURE;
}
预计zip中的第4个和第3个字节为0xff
。验证在此时失效。如果我用HexEditor打开zip,我可以看到两个字节都不是0xff
。
如果我从/bootable/recovery/testdata/otasigned*.zip
打开拉链,我可以看到它们是0xff
。
我使用以下命令对zip进行了签名:jdk1.6.0_35/bin/java -jar Android/prebuilts/sdk/tools/lib/signapk.jar Android/build/target/product/security/testkey.x509.pem Android/build/target/product/security/testkey.pk8 testupdate.zip update.zip
在META-INF
文件夹中添加了一些证书数据。
我无法在zip规范中找到任何有关theese字节必须为oxff
的信息。
这里出了什么问题?
PS:当然我可以禁用签名验证,但我想要这个功能(只有工作,而不是失败;)
答案 0 :(得分:0)
使用-w选项使signapk签署整个文件
signapk -w $ KEY_FILE.x509.pem $ KEY_FILE.pk8 $ UPDATE_ZIP $ UPDATE_ZIP.signed
答案 1 :(得分:-1)
您无需修改代码,只需使用恢复菜单中的切换签名验证功能即可禁用签名检查,您的update.zip将正常工作