You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否移除APK的V2/V3签名并保留有效V1签名?是否有开源工具?

移除APK V2/V3签名块保留V1签名的可行性及工具方案

是否可行?

完全可行。V1和V2/V3签名的存储逻辑完全独立:

  • V1签名遵循传统JAR签名规则,所有验证所需的文件(MANIFEST.MF、CERT.SF、CERT.RSA/DSA)都存放在APK的META-INF目录下,只要这个目录的文件未被篡改、完整保留,V1签名就会持续有效。
  • V2/V3签名是以独立的签名块形式插入在ZIP文件的中央目录与文件结束符(EOF)之间,和APK的核心内容、V1签名文件没有依赖关联。只要精准定位并移除这个签名块,同时保证ZIP文件结构的完整性(尤其是中央目录与EOF的对应关系),就不会影响V1签名的有效性。

可用的开源工具

有几个成熟的开源方案可以实现需求:

  1. Android SDK 内置的 apksigner
    如果你可以用自己的密钥重新生成V1签名,直接用这个工具就能间接移除V2/V3签名块。执行命令:

    apksigner sign --v1-signing-enabled true --v2-signing-enabled false --v3-signing-enabled false --ks your-keystore.jks target.apk
    

    注意:这个操作会替换原签名,若想保留原始V1签名,不适用此方法。

  2. apksigcopier
    这是一个专门处理APK签名的开源工具,支持直接剥离V2/V3签名块同时保留原V1签名。它的核心逻辑是解析ZIP结构,识别并移除中央目录前的V2/V3签名块,不会改动META-INF下的原签名文件。

  3. 自定义脚本(基于ZIP解析库)
    如果你有开发能力,可以用Python的zipfile、Java的ZipFile这类库手动处理:

    • 识别ZIP中央目录的起始位置
    • 通过签名块的魔数0x7109871a定位V2/V3签名块
    • 重新拼接APK文件:保留文件开头到中央目录的内容,加上中央目录和EOF,跳过中间的签名块
      这种方式需要对ZIP格式和APK签名块结构有基础了解,但灵活性最高。

内容的提问来源于stack exchange,提问作者satur9nine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 01:12:06