鸿蒙应用上架流程及安全防范措施

鸿蒙应用前景

随着鸿蒙生态的逐步发展,鸿蒙应用数量也在持续增长,支持了手机、平板等多种设备,覆盖了生活、办公、娱乐等多个领域,开发者可以创造出更多的应用场景,用于促进鸿蒙生态的完善。

当应用开发完成后,可在AppGallery Connect平台上申请上架,程序上架成功后在鸿蒙应用市场中显示,用户在应用市场中可直接搜索、下载、安装和使用。

相对于开发者而言,开发的过程或许不难,难的是开发完成后应用的上架,这个上架流程相对比较复杂,所以文章内总结了鸿蒙应用(Harmony OS)上架过程中的重要操作,可供开发者参考。

鸿蒙应用上架流程

鸿蒙应用上架需严格遵循 AGC流程(注册→调试→签名→提审)。

前置条件

创建鸿蒙应用

  1. 登录AppGallery Connect (AGC)平台,在我的项目-》添加项目-》创建项目。
  1. 在创建的项目中的APP ID界面创建HarmonyOS应用,根据界面提示选择应用类型,填写应用名称、包名等信息。

包名要求:

1)全网唯一,不与安卓包名重复;

2)需与DevEco Studioapp.json5文件中的bundleName字段完全一致。

编译打包鸿蒙应用

Harmony OS应用/元服务通过数字证书(.cer)和Profile文件(.p7b)来保证应用/元服务的完整性,所以在申请数字证书和Profile文件前需要进行下述操作:

  1. 首先,需要通过DevEco Studio来生成密钥(.p12)和证书请求文件(.csr);
  2. 然后,申请发布数字证书和Profile文件;
  3. 最后,将密钥(.p12)文件、数字证书(.cer)文件和Profile(.p7b)文件配置到工程中。

创建签名文件

在IDE生成密钥(.p12)和证书请求文件(.csr)

  • DevEco Studio工具中,点击Build-》Generate Key and CSR界面创建p12密钥库文件;
  • 在Generate Key and CSR界面,设置CSR文件存储路径和CSR文件名;

申请发布证书

在AGC申请发布证书(.cer)和发布Profile(.p7b)

  • 在AGC平台申请发布证书(仅支持1个发布证书),在弹出的”新增证书窗口”填写要申请的证书信息,点击”提交”;
  • 绑定发布证书,包名与应用一致,申请发布Profile;

IDE配置签名

  1. 申请发布证书和发布Profile文件后,在IDE工具里进行配置;
  2. File-》Project Structure-》Project-》Signing Configs窗口中,取消勾选Automatically generate signature;
  3. 如果是HarmonyOS应用,勾选Support HarmonyOS,然后配置工程的签名信息。

打包应用

在DevEco Studio配置完成后,编译生成.app格式包;

提交上架

  1. 应用必须满足华为应用市场的审核要求,具体请参见应用审核指南;
  2. 登录AppGallery Connect,选择”我的应用”;
  3. 点击待发布的应用/元服务,在左侧导航栏选择”应用信息”菜单,开始配置应用信息,如应用名称、应用介绍、隐私声明等,所有配置完成后点击”提交审核”。

安全防范措施

应用在提交上架后,可能面临着代码安全的问题,Virbox Protector工具支持对Harmony so库文件的保护,可以实现代码虚拟化、代码混淆、反调试、完整性校验等功能,可以有效的代码的泄露。

SO库的特点

  1. so库一般是c/c++语言开发,可一套代码编译成多个应用平台(比如Android、Linux、Harmony),故大部分开发者将核心功能或算法等封装在so库中,可以在多个应用和平台中复用,提高开发效率 ;
  2. so库是直接与操作系统交互执行,可提高执行效率,所以它更适合底层的控制(比如传感器、摄像头等),也适合处理计算型任务(如图像处理、音视频编解码等);
  3. 开发过程中可能需要集成第三方的功能模块,而很多模块都是以so库提供,所以重要功能放在so库也更方便的去集成第三方库;
  4. 另外so库是二进制文件,比高级语言代码更难反编译和逆向工程,可以更好地保护核心算法和逻辑。

综上所述,Virbox Protector从开发者反馈使用的场景和代码安全层面考虑,直接支持Harmony so库的保护。

SO库的安全性问题

  1. 程序被反编译虽然编译生成的二进制文件逆向分析难度较高,但由于相应的反编译工具(比如ida、Ghidra)也成熟强大,依然可以反编译为类C伪代码,再加上特征库、符号信息、模块交叉引用等方式,进而更容易去读取核心逻辑和算法;
  2. 被调试风险攻击者可通过调试工具比如(DevEco Studio)附加应用进程进行调试,在调试过程中可能暴露敏感信息(如密钥、算法逻辑);
  3. 程序被篡改攻击者可以通过修改应用内存改变程序行为,绕过安全检查或实现恶意功能,导致数据泄露;
  4. 调试符号暴漏so库中包含调试符号(如函数名、变量名、函数地址),可能暴露敏感信息,则攻击者可以更容易地理解代码逻辑,对代码进行分析。

SO库的加固

对SO库的加固的加固一般有两种方式:

  • 第一种方式
    1. 先打包hap或app,然后解压包;
    2. 拿出lib目录下的so库,对so库直接进行加固;
    3. so库加固后再替换到hap或app包中,然后再进行重签名。
  • 第二种方式
    1. 在IDE工具中直接集成调用Virbox Protector工具,在编译so库的时候在CMakeLists.txt中添加配置,如图所示:
    2. 可以使编译过程中对so库进行加固,这样打包后的hap或app包中的so库就是保护过后的。

参数介绍

set:设置Virbox Protector工具的路径;

TARGET:指要添加自定义命令的目标,命令会在构建目标时执行;

TARGET_FILE:entry:指待保护的so库文件;

COMMAND:指要执行的命令。

滚动至顶部
售前客服
周末值班
电话

电话

13910187371