0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ArkGuard混淆工具使用指南

HarmonyOS开发者 来源:HarmonyOS开发者 2025-09-28 16:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

简介

ArkGuard是一款源码混淆工具,提供基础混淆功能。当软件发布后,其代码很容易被他人获取分析,通过阅读清晰的变量名、函数名,攻击者或竞争者可以非常轻松地理解代码的逻辑结构、业务核心算法和关键流程。代码混淆(Obfuscation)就是一种重要的技术应对手段。它通过像“重命名”这样的方式,将代码中原本有意义的标识符变成简短、无规律的字符,极大地增加了人工阅读和理解代码的难度与成本。

使用指南

ArkGuard混淆开启指南

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation-guide

混淆加固

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-build-obfuscation#section19439175917123

ArkGuard混淆工具:

① 开启混淆开关:

在模块的build-profile.json中配置。

"arkOptions":{
"obfuscation":{
 "ruleOptions":{
  "enable":true,
  "files":["./obfuscation-rules.txt"]
 }
}
}

② 配置混淆规则:

从DevEco Studio 5.0.3.600版本开始,新建工程时混淆规则配置文件obfuscation-rules.txt中默认会配置以下四项混淆规则,开发者可根据实际需求进行自定义修改。

-enable-property-obfuscation
-enable-toplevel-obfuscation
-enable-filename-obfuscation
-enable-export-obfuscation

混淆选项如下所示:

默认混淆(不同版本默认配置不一致) 开启混淆后生效
关闭混淆 -disable-obfuscation
开启属性名称混淆 -enable-property-obfuscation
开启字符串属性名称混淆 -enable-string-property-obfuscation
开启顶层作用域名称混淆 -enable-toplevel-obfuscation
开启导入导出名称混淆 -enable-export-obfuscation
开启文件名混淆 -enable-filename-obfuscation
代码压缩 -compact
声明文件注释删除 -remove-comments
删除console.*语句 -remove-log
名称缓存输出 -print-namecache
名称缓存复用 -apply-namecache
输出未混淆名单 -print-kept-names
缩减语言预置白名单 -extra-options strip-language-default
缩减系统预置白名单 -extra-options strip-system-api-args
保留声明文件参数 -keep-parameter-names
合并依赖模块选项 -enable-lib-obfuscation-options
通过注释在源码中标记白名单 -use-keep-in-source

③ 配置混淆保留选项

开启混淆后,代码中的方法、属性或路径被混淆。但是在程序运行时,如果访问未混淆的对象时,可能会导致功能不可用。

保留选项如下所示:

指定保留属性名称 -keep-property-name
指定保留顶层作用域或导入导出元素名称 -keep-global-name
指定保留文件/文件夹名称 -keep-file-name
指定保留注释 -keep-comments
指定保留声明文件中的所有名称 -keep-dts
指定保留源码文件中的所有名称 -keep

④ 指定release编译

源码混淆仅支持release编译,不支持debug编译。

点击DevEco Studio界面右上角图标选择构建模式:

89e97850-9794-11f0-8c8f-92fbcf53809c.png

debug模式的构建产物会包含大量调试信息,例如变量名、函数名、行号等。在经过混淆后,这些调试信息将没有意义,甚至报错。

混淆助手工具(ObfuscationHelper)

我们诚邀广大开发者一起参与 HarmonyOS 技术生态建设,共建更开放、更智能的未来世界!一个可以对模块和场景进行扫描,快速识别需要配置的保留选项和白名单字段,一键生成白名单混淆规则文件Hm-recommend-keep-list.txt。

① 开启混淆工具

菜单栏:Tools->ObfuscationHelper

8a463c0c-9794-11f0-8c8f-92fbcf53809c.png

在模块栏点击鼠标右键:

8aa72616-9794-11f0-8c8f-92fbcf53809c.png

② 选择扫描的模块和场景

可以选择要扫描的模块。如果模块之前已经生成过白名单,则会生成相应的历史记录。选择历史记录后,会在本次扫描后自动关联历史的排查记录,历史排查过的白名单字段将不再被重复排查。

8b063f52-9794-11f0-8c8f-92fbcf53809c.png

生成推荐白名单,会在对应模块下生成推荐白名单文件。

8b6d3bb2-9794-11f0-8c8f-92fbcf53809c.png

③ 手动排查白名单

使用DevEco Studio 6.0.0 Beta1及以上版本,按以下步骤操作:

待排查白名单中显示的是扫描出来不能自动生成推荐白名单,需要开发者根据业务进一步排查,识别白名单字段并配置到文件中。

如果排查后不需要配置白名单,点击待排查,选择已排查,标记该项已经排查。

如果排查后需要配置白名单,电子添加白名单,在输入框中输入保留选项和白名单字段,点击保存白名单。

8bcfc3a4-9794-11f0-8c8f-92fbcf53809c.png

排查完成后,点击生成排查白名单按钮,ObfuscationHelper会在对应模块下生成排查白名单文件Hm-manual-keep-list.txt/Hm-manual-consumer-keep-list.txt,并提示对应的文件路径。同时在工程根目录下生成对应的白名单Excel表格obfuscation-helper-xxx.xlsx。如果勾选合并白名单文件,点击OK,会在工程根目录下生成合并后的白名单文件Hm-merge-manual-keep-list.txt。

8c3ae4f4-9794-11f0-8c8f-92fbcf53809c.png

使用DevEco Studio 6.0.0 Beta1以下版本,按类似步骤操作:

需要手动填写混淆规则和白名单,且不支持关联历史记录。

8c9e4ac6-9794-11f0-8c8f-92fbcf53809c.png

④ 在混淆配置中添加白名单文件

8d03539e-9794-11f0-8c8f-92fbcf53809c.png

方式一:

在各模块的build-profile.json5中,将Hm-manual-keep-list.txt加入到混淆配置files字段下,将Hm-manual-consumer-keep-list.txt加入到consumerFiles字段下。

方式二:

将合并后的文件Hm-merge-manual-keep-list.txt配置在entry模块build-profile.json5的files字段下。

常见问题

场景一:开发者在开启属性混淆情况下,调用系统api接口使用了类型为Record的对象,对象key被混淆导致编译报错。

分析:系统api接口不会被混淆,当key值被混淆后,在系统api侧获取不到原来的key值。

解决方案:将Record类型的key值加入属性白名单

场景二:引入三方的har包,如何忽略这个三方har包

解决方案:在使用这个三方har的模块里配置-keep ./oh_modules/三方库名

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4761

    浏览量

    97160
  • 代码
    +关注

    关注

    30

    文章

    4942

    浏览量

    73159
  • 编译
    +关注

    关注

    0

    文章

    688

    浏览量

    34950

原文标题:ArkGuard混淆工具使用指南

文章出处:【微信号:HarmonyOS_Dev,微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    HYPERLYNX 仿真工具使用指南

    HYPERLYNX 仿真工具使用指南第四部分:HYPERLYNX 仿真工具使用指南
    发表于 08-05 11:47

    Synplify工具使用指南

    elecfans.com Synplify工具使用指南目录166怎样用Tcl语言执行批处理任务..............................................155
    发表于 08-11 10:02

    Synplify工具使用指南

    Synplify工具使用指南目录166怎样用Tcl语言执行批处理任务..............................................155使用Symbolic FSM
    发表于 08-13 17:12

    Quartus工具使用指南(华为)

    Quartus工具使用指南(华为)
    发表于 10-09 08:54

    Synplify工具使用指南

    Synplify工具使用指南:关键词Synplify synthesis 综合 Script 脚本 Tcl FPGA Verilog摘要:本文的目的是为Synplify的使用提供帮助,包括三个主要内容,第一部分快速入门,介绍基本的工作流程
    发表于 11-01 15:20 136次下载

    凌阳DMC工具使用指南

    凌阳DMC工具使用指南 凌阳科技(sunplus)推出16位马达驱动控制的工业级单片机--SPMC75系列,为方便客户产品开发,凌阳公司提供了DMC (Digital Motor Co
    发表于 09-19 10:26 2322次阅读
    凌阳DMC<b class='flag-5'>工具</b>的<b class='flag-5'>使用指南</b>

    MSP430-FET430仿真工具使用指南

    MSP430-FET430仿真工具使用指南.
    发表于 02-16 18:21 27次下载

    MSP-FET430P140工具使用指南

    MSP-FET430P140工具使用指南
    发表于 08-19 14:49 0次下载

    电子票使用指南免费下载

    电子票使用指南电子票使用指南电子票使用指南电子票使用指南电子票使用指南电子票使用指南
    发表于 11-24 14:02 3次下载

    华为Quartus工具使用指南电子版

    华为Quartus工具使用指南电子版
    发表于 06-04 10:47 0次下载

    Rockchip RKDevInfoWriteTool工具使用指南

    电子发烧友网站提供《Rockchip RKDevInfoWriteTool工具使用指南.7z》资料免费下载
    发表于 09-21 09:26 38次下载
    Rockchip RKDevInfoWriteTool<b class='flag-5'>工具</b>及<b class='flag-5'>使用指南</b>

    AN1080_APM32_工具使用指南

    AN1080_APM32_工具使用指南
    发表于 11-09 21:03 0次下载
    AN1080_APM32_<b class='flag-5'>工具</b>链<b class='flag-5'>使用指南</b>

    N32WB452系列NS-Link下载工具使用指南

    N32WB452系列NS-Link下载工具使用指南
    发表于 11-10 19:51 1次下载
    N32WB452系列NS-Link下载<b class='flag-5'>工具</b><b class='flag-5'>使用指南</b>

    N32G4FR系列NS-Link下载工具使用指南

    N32G4FR系列NS-Link下载工具使用指南
    发表于 11-11 21:50 1次下载
    N32G4FR系列NS-Link下载<b class='flag-5'>工具</b><b class='flag-5'>使用指南</b>

    Quartus工具使用指南

    电子发烧友网站提供《Quartus工具使用指南.pdf》资料免费下载
    发表于 07-15 16:34 1次下载