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

已篡改Android应用仍保留原始签名?应用完整性校验方案咨询

Android应用完整性校验:签名校验的实现与强化方案

很棒的开端!签名校验确实是保障Android应用完整性的核心手段,也是阻挡篡改客户端访问服务器的关键第一步。我来帮你完善现有代码,并补充一些能大幅提升安全性的优化建议:

一、完善你的签名校验方法

你提到的isApkSignatureBroken()是核心逻辑,我帮你补全并优化这段代码,确保它能准确校验应用签名与官方签名的一致性:

fun isApkSignatureBroken(context: Context): Boolean {
    return try {
        // 获取当前应用的包信息,指定获取签名数据
        val packageInfo = context.packageManager.getPackageInfo(
            context.packageName,
            PackageManager.GET_SIGNATURES
        )
        val signatures = packageInfo.signatures
        
        // 替换为你的官方签名SHA-256哈希值(注意大小写不敏感)
        val officialSignatureSha256 = "这里替换成你的官方签名SHA256哈希字符串"
        
        // 遍历签名并计算SHA-256哈希
        signatures.forEach { signature ->
            val digest = MessageDigest.getInstance("SHA-256")
                .digest(signature.toByteArray())
            val currentSignatureHash = digest.joinToString("") { "%02x".format(it) }
            
            // 匹配到官方签名则返回未篡改
            if (currentSignatureHash.equals(officialSignatureSha256, ignoreCase = true)) {
                return false
            }
        }
        // 无匹配签名,判定为已篡改
        true
    } catch (e: Exception) {
        // 异常场景默认判定篡改(防止恶意捕获异常绕过校验)
        true
    }
}

小贴士:如何获取官方签名的SHA-256哈希?
打开命令行,执行以下命令(替换你的签名文件和别名):
keytool -list -v -keystore 你的签名文件.jks -alias 你的签名别名
在输出结果中找到SHA256:对应的字符串,去掉空格就是你需要填的哈希值。

二、提升校验安全性的关键优化

  • 避免硬编码哈希值:直接把签名哈希写在代码里很容易被反编译修改,建议对哈希值进行二次加密(比如用AES加密后存储),校验时再解密对比;或者把哈希拆分成多个片段分散存储在代码不同位置。
  • 混淆校验逻辑:用ProGuard/R8对校验代码做深度混淆,打乱代码结构,增加逆向分析的难度。
  • 迁移到Native层实现:把核心校验逻辑放到C/C++编写的SO库中,Native代码相比纯Kotlin/Java更难被篡改和逆向,能大幅提升安全性。
  • 服务器端二次校验:不要只依赖客户端本地校验!服务器在处理请求时,要求客户端提交基于签名生成的可信令牌(或签名哈希),服务器端再重新校验一次,彻底避免客户端绕过本地校验的情况。

三、额外的完整性校验补充手段

除了签名校验,你还可以结合以下方式进一步强化应用完整性:

  • 校验应用包名:确保当前运行的应用包名与官方包名一致,防止恶意应用伪装成你的应用。
  • 校验签名证书链:不仅对比哈希,还可以校验签名证书的有效期、颁发者信息,防止攻击者伪造签名证书。
  • 利用SafetyNet验证:如果你的应用发布在Google Play,可以集成Google的SafetyNet Attestation API,让Google官方来验证应用的完整性与合法性,安全性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:26:23