鸿蒙HAR对外发布安全流程
字节码HAR包中包含的是编译后的abc字节码,当字节码HAR被其他应用模块(HAP/HSP)依赖时,执行应用模块的编译构建,不需要再对依赖的HAR进行语法检查和编译等操作,相比源码HAR,可以有效提升应用模块的编译构建效率,提高安全性,降低代码泄漏的风险。其实看到这里,HAR可以类比Android的SDK或者so库,只不过HAR没有c的安全编译配置,只有混淆配置,因此HAR对外发布因在安全编译配置
本文作者:杉木@涂鸦智能安全实验室
了解鸿蒙HAR
构建HAR-配置构建流程-构建应用 - 华为HarmonyOS开发者
字节码HAR包中包含的是编译后的abc字节码,当字节码HAR被其他应用模块(HAP/HSP)依赖时,执行应用模块的编译构建,不需要再对依赖的HAR进行语法检查和编译等操作,相比源码HAR,可以有效提升应用模块的编译构建效率,提高安全性,降低代码泄漏的风险。
HAR包的安装和使用
安装 HAR 包到你的项目中,主要有两种方式:从远程仓库安装和从本地安装。
-
从远程仓库安装(以官方三方库中心仓为例)
-
命令行一键安装:在 DevEco Studio 的 Terminal 中,进入你的项目目录(通常是
entry目录),执行以下命令。这会自动下载最新的 HAR 包并更新依赖配置。ohpm install @ohos/[HAR包名] -
手动配置依赖:在项目的
oh-package.json5文件中的dependencies字段添加依赖信息,然后执行ohpm install。"dependencies": { "@ohos/lottie": "^2.0.9"// 格式通常为 "包名": "版本号"}
-
-
从本地安装
-
依赖本地模块:如果你的 HAR 包是项目内的另一个 Library 模块,可以在
oh-package.json5中配置。"dependencies": { "@ohos/mylibrary": "file:../library"// "file:"后跟模块的相对路径} -
依赖本地 HAR 文件:如果你有现成的
.har文件,可以将其放入项目下的一个目录(如libs),然后在oh-package.json5中配置。完成上述配置后,同样需要在 Terminal 中执行ohpm install命令来完成安装。安装成功后,依赖项会存储在项目的oh_modules目录下。"dependencies": { "@ohos/log_fishing": "file:./libs/logfishing.har" }
-
关于HAR、HAP、HSP
| 特性 | HAR (Harmony Archive) | HAP (Harmony Ability Package) | HSP (Harmony Shared Package) |
|---|---|---|---|
| 全称与本质 | 鸿蒙静态共享包 | 鸿蒙能力包,应用部署包 | 鸿蒙共享包,动态共享包 |
| 主要作用 | 代码和资源的静态共享与复用 | 应用的安装和运行单元 | 代码和资源的动态共享,减少体积 |
| 编译行为 | 编译时被复制到依赖它的HAP中 | 独立编译或依赖HAR/HSP | 编译时不复制,运行时动态依赖 |
| 代码共享方式 | 源码级共享,副本式(多份拷贝) | 不直接用于共享 | 二进制级共享,单例式(一份实例) |
| 是否可以独立运行 | 否 | 是 | 否 |
ohpm-repo私仓搭建
个人或公司可以上传编译后的HAR到ohpm仓库中,也可以自己搭建私仓,官方提供了私仓搭建工具,具体参考:
快速开始-ohpm-repo私仓搭建工具-模块管理-工程创建-开发环境搭建 - 华为HarmonyOS开发者
其中需要注意相关安全配置:
安全配置指南-ohpm-repo私仓搭建工具-模块管理-工程创建-开发环境搭建 - 华为HarmonyOS开发者
HAR对外发布安全流程
其实看到这里,HAR可以类比Android的SDK或者so库,只不过HAR没有c的安全编译配置,只有混淆配置,因此HAR对外发布因在安全编译配置中默认开启混淆设置,以增加逆向工程难度,防止源代码泄露风险;
且遵循代码安全开发规范,不要硬编码敏感信息到代码中;
漏洞悬赏计划:涂鸦智能安全响应中心(https://src.tuya.com)欢迎白帽子来探索。
更多推荐




所有评论(0)