HarmonyOS鸿蒙Next中如何防止 HAP 包被二次打包或注入恶意代码?

HarmonyOS鸿蒙Next中如何防止 HAP 包被二次打包或注入恶意代码? 我们应用担心被破解后植入广告 SDK。除了代码混淆,鸿蒙在安装和运行时做了哪些完整性保护,会不会有问题?

8 回复

【背景知识】

  • HarmonyOS反编译安全性提供基础的应用加固安全能力,包括混淆、加密和代码签名,保护代码免受反编译和反调试。高级混淆功能目前由第三方支持。
  • 当前提供的加固方式有:混淆,加密。
    • 代码混淆:在编译的过程中,IDE根据配置的混淆规则对项目代码进行混淆处理。
    • 应用加密:应用加密特性在应用上架时加密,应用运行时按需解密安全增强的同时,确保开发者、消费者无感的安全体验,避免应用开发者适配工作,保障用户无感的纯净安全体验。

【解决方案】

  • 代码混淆:代码混淆是一种软件安全技术,旨在增加代码的复杂性和模糊性,从而增加攻击者分析和理解代码的难度。
    1. 开启混淆能力:Stage模型的工程在Release编译模式使能混淆,从DevEco Studio NEXT Developer Beta3(5.0.3.600)版本开始,默认不开启混淆。
    2. 混淆配置能力:混淆配置文件obfuscation-rules.txt默认开启了四项推荐的混淆选项:-enable-property-obfuscation-enable-toplevel-obfuscation-enable-filename-obfuscation-enable-export-obfuscation,开发者可以根据需要进一步修改混淆配置。如果存在多个混淆规则文件,则可以参考混淆规则合并策略
    3. 配置保留选项:代码中可能有部分字段,方法不希望被混淆,这个时候可以通过配置混淆白名单,参考保留选项。混淆常见案例汇总可以查看扫描任务中的混淆示例。
  • 应用加密:为了保护应用代码安全,保护开发者的核心资产,HarmonyOS提供了端到端的应用代码保护机制,该机制以系统安全为基础,构建内核级应用生命周期内的代码安全保护能力。 开发者向应用市场提交上架申请,上传应用包后可选择是否加密。选择加密的应用,在经过应用市场审核后,应用市场会对上架应用做代码加密。 应用在设备上安装时,安装文件落盘后仍是处于加密状态,有效的保护应用程序;当应用程序启动时按需解密。应用加密采用标准AES加密算法,解密后的明文只存在于内存中,不会存储到设备。

更多关于HarmonyOS鸿蒙Next中如何防止 HAP 包被二次打包或注入恶意代码?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


本地在打包的时候做下混淆,然后在提审的时候勾选加密。

这两个就够够的了。

为啥只有这两个,因为鸿蒙的安全性是它的第一大特性。

相信鸿蒙。

cke_1431.png

鸿蒙采用 多层签名校验

  • 安装时:系统校验 HAP 的 ECDSA 签名 是否匹配证书指纹;
  • 运行时:通过 bundleManager.getBundleInfo().signature 可获取当前包签名,与预埋值比对;
  • HAP 内部:每个文件哈希值记录在 pack.info,防篡改;
  • 设备级:开启 Secure Boot + Verified Boot,确保系统未被 root。

      防止 HAP 包被二次打包或注入恶意代码的核心在于签名验证 + 代码混淆 + 受限安装渠道的组合。开发者应在编译阶段启用混淆加固,打包阶段确保签名安全,并依赖鸿蒙的官方分发机制。同时,结合运行时沙箱和开发流程的最佳实践,能大幅提升应用的整体安全性。

HarmonyOS系统本身就对应用的hap包有一定程度的防护

安装要重新打包,要重新上应用市场,签名不一样上架不了:

1 代码安全

HarmonyOS系统本身就对应用的hap包有一定程度的防护,再非root的情况下,任何人都没有权限从系统中利用命令行或抓包等操作获取应用的hap包进行逆向分析。当前鸿蒙PC的应用市场也是封闭的,安装目录同样未开放终端权限。但是随着鸿蒙系统的逐渐普及,鸿蒙PC的操作系统势必走向开放,届时软件包的获取权限也会相应放开。而且如今越来越多的外部安全研究人员开始关注鸿蒙系统的安全对抗研究,仅仅将软件包安全寄托于系统的低权限和封闭性,是不现实的。基于此,HarmonyOS系统提供了两种方式保护保护应用代码安全。

1)代码混淆

代码混淆是一种常用的代码保护方式,通过修改函数名、序列化等方式,提高软件逆向分析的难度,在鸿蒙应用的开发中,开发者可以通过配置项的方式,轻松混淆代码,提高软件包安全性。具体可参考:

ArkGuard源码混淆:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-arkguard

ArkGuard字节码混淆:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-arkguard-bytecode

2)应用加密

应用在华为应用市场提交上架申请时,可以选择是否加密应用,相比于代码混淆仅可以提高逆向分析难度,应用加密可以规避绝大多数反编译软件的逆向操作,更好地保护应用包,和代码混淆结合使用,可以大大提高应用的安全性。具体可参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-arkguard-bytecode

此外,还有越来越多的三方公司提供鸿蒙应用的加壳等加固能力,在此不做赘述。

2。运行环境安全

除了保护应用代码不被逆向外,运行环境的安全可信也是应用开发中不可忽视的一点,当应用运行在一个拥有root权限的系统或者一个不被信任的虚拟机、模拟器环境中,更或者系统被植入了恶意应用时,黑客可以通过直接获取底层权限的方式,对应用进行HOOK分析等操作,完全掌握应用的运行过程,安全也就无从谈起,因此,应用在执行资产交易等敏感信息前,建议先对当前运行环境的可信度进行检查,对此,HarmonyOS系统也提供了设备真实性校验的相关接口,包括但不限于系统完整性检测、数字盾服务、业务风险检测和反诈、防窥屏等功能。具体可参考:

设备安全服务:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/device-security-kit-guide

2.1数据安全

在应用运行过程中,往往会在本地缓存一些敏感数据,当系统被植入恶意应用时,就容易出现敏感信息泄露的问题,对此,HarmonyOS为开发者提供了整套的数据安全防护接口。具体可参考:

密码保险箱服务:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/passwordvault

关键资产存储服务:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/asset-store-kit-overview

数据防泄漏服务:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/dlp

企业数据保护服务:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/data-guard-kit-guide

2.2 网络安全

即使应用运行在一个安全可信的本地环境中,也仍然不一定是安全的,通过流量截取和伪造、中间人攻击等行为,可以反馈给应用虚假的服务端数据,从而达到窃取隐私和用户财产等危险行为,因此保护应用在网络传输过程中等的安全性,也是开发者需要考虑的问题。对此HarmonyOS提供了sslpinning等网络安全保护接口,具体可参考:

网络连接安全配置:https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-network-ca-security

HarmonyOS Next采用多维度安全机制防止HAP包被篡改。应用包通过数字签名和完整性校验确保来源可信,系统在安装和运行时均会验证签名。应用沙箱隔离机制限制恶意代码注入,系统级安全架构提供运行时保护。

在HarmonyOS Next中,应用完整性保护是多层次、体系化的,主要通过以下机制防止HAP包被篡改或注入恶意代码:

  1. 应用签名与完整性校验

    • 安装时校验:系统在安装HAP时会强制验证开发者签名。签名密钥与开发者证书、应用BundleName强绑定,任何对HAP内容的修改(如替换资源、注入代码)都会导致签名失效,安装将被拒绝。
    • 运行时校验:关键系统服务在加载应用文件前会进行完整性验证,确保与安装时状态一致。
  2. 安全执行环境与隔离机制

    • 进程与数据隔离:应用运行在独立的沙箱中,私有数据无法被其他应用直接访问。HAP包安装后,其代码和资源均受内核级安全保护。
    • 系统API受控调用:敏感API(如广告SDK常涉及的设备标识获取、网络访问)需明确定义权限,并通过用户授权才能调用。恶意代码无法绕过权限管控。
  3. 代码与资源保护

    • 字节码加固:HarmonyOS Next的应用编译产物为ArkTS字节码,系统运行时对字节码结构有完整性检查,防止内存篡改。
    • 资源加密与验证:HAP包中的敏感资源可加密存储,运行时由系统解密并验证哈希值。
  4. 防调试与反注入

    • 调试防护:正式发布的HAP默认关闭调试接口,防止动态调试和代码注入。
    • 运行时完整性监控:系统内核会监控应用进程的关键内存区域,异常修改可能触发安全机制。

关于广告SDK植入问题:若应用本身未集成广告SDK,则第三方很难在不破坏签名的情况下注入完整功能模块。即使攻击者通过破解手段修改了本地HAP文件,也无法通过系统安装验证,更无法在正常HarmonyOS设备上运行。

建议结合代码混淆等开发层防护,并确保使用安全的签名密钥。系统级保护机制已覆盖安装、加载、运行各环节,能有效抵御常见篡改和注入攻击。

回到顶部