应用加密
应用加密特性可以有效提高应用代码文件逆向分析的难度,但应用代码防逆向是一个持续攻防对抗的过程,如对代码文件保护有更高的要求,需要结合其他安全加固措施,进一步提高逆向分析应用的难度。
能力简介
为了保护应用代码安全,保护开发者的核心资产,HarmonyOS提供了端到端的应用代码保护机制,该机制以系统安全为基础,构建内核级应用生命周期内的代码安全保护能力。

开发者向应用市场提交上架申请,上传应用包后可选择是否加密。
选择加密的应用,在经过应用市场审核后,应用市场会对上架应用做代码加密。应用在设备上安装时,安装文件落盘后仍是处于受保护状态,有效的保护应用程序;当应用程序启动时按需解密。
系统级应用加密具有如下优点:
- 内核级的安全保护,应用端到端加密,应用启动后再按需解密执行。
- 系统级的解密优化,相对于传统加壳等加固方式对性能的影响更小。
加密影响
- 加密后的应用在程序启动和运行过程中可能会小幅度增加性能开销。
- 加密后的应用相比于不加密的应用体积更大,可能会小幅度增加下载和安装时间。
应用加密后的影响已经进行过系统级的优化,在部分优化后的版本上应用加密前后的性能与包体大小几乎无变化。
保护效果
应用加密保护的对象为应用包体中的关键资产(例如.abc文件),原始的代码文件可能被反编译,受保护后的代码文件安全性会有很大地提升,提高逆向分析的难度。
使用步骤
应用加密特性在应用上架时加密,应用运行时按需解密。安全增强的同时,确保开发者、消费者无感的安全体验,避免应用开发者适配工作,保障用户无感的纯净安全体验。
当前ArkTS卡片服务对应的widgets.abc文件暂不支持加密服务。
应用加密在不同阶段中的步骤如下:
-
开发阶段:开发者无感知。
-
上架阶段:开发者选取待发布的软件包并上传后,可选择设置分发的软件包是否加密,选择加密后即被加密。
操作步骤可参考:发布HarmonyOS应用-选取待发布的软件包。
-
分发阶段:应用将被应用市场加密分发,防止安装包被获取后逆向分析。
-
安装阶段:安装阶段仍有保护。
-
运行阶段:应用运行时按需解密应用代码。
常见问题
-
Q1:使用官方提供的代码加密能力后,应用代码是否需要其它的代码保护措施吗?
A1:应用加密特性可以有效提高应用代码文件逆向分析的难度,但应用代码防逆向是一个持续攻防对抗的过程,如对代码文件保护有更高的要求,需要结合其他安全加固措施,进一步提高逆向分析应用的难度。比如使能混淆能力、使能三方安全加固能力等。
-
Q2:如果不使用代码加密能力,还能采取什么手段来保护应用代码资产?
A2:使能混淆能力、使能三方安全加固能力等,请参考应用资产保护设计-保护应用代码场景。
-
Q3:代码加密会对应用包产生什么影响?
A3:加密后的应用在程序启动和运行过程中可能会小幅度增加性能开销;加密后的应用相比于不加密的应用体积更大,可能会小幅度增加下载和安装时间。