91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HarmonyOS應(yīng)用代碼混淆技術(shù)方案

HarmonyOS開發(fā)者 ? 來源:HarmonyOS開發(fā)者 ? 2025-11-21 16:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

代碼混淆技術(shù)可以增加代碼的復(fù)雜性和模糊性,從而提高攻擊者分析代碼的難度。代碼混淆有以下幾個(gè)方面的作用:

1. 保護(hù)知識(shí)產(chǎn)權(quán):代碼混淆防止他人輕易復(fù)制和竊取軟件代碼,增加逆向工程難度。

2. 防止逆向工程:逆向工程是分析軟件以了解其工作原理和實(shí)現(xiàn)細(xì)節(jié)的過程。代碼混淆可增加逆向工程的難度,保護(hù)應(yīng)用程序免受惡意修改或破壞。

3. 提高安全性:代碼混淆減少漏洞和安全風(fēng)險(xiǎn),增加攻擊者利用漏洞的難度。

4. 降低反盜版和欺詐風(fēng)險(xiǎn):混淆代碼可增加攻擊者破解軟件許可驗(yàn)證系統(tǒng)或修改代碼繞過付費(fèi)機(jī)制的難度,從而減少盜版和欺詐。

針對(duì)工程源碼的混淆可以提高破解難度,縮短類和成員名稱,減小應(yīng)用大小。

混淆開啟

從DevEco Studio版本4.0 Beta1開始,hvigor插件提供代碼混淆功能。開啟混淆的條件如下:

工程為Stage模型

在Release編譯模式下

模塊build-profile.json5文件中開啟混淆配置

"arkOptions":{
"obfuscation":{
 "ruleOptions":{
  "enable":true,
   //...
   }
  }
  },
注意:“enable”默認(rèn)為“false”,默認(rèn)不開啟代碼混淆功能。

滿足開啟混淆的條件后,選擇目標(biāo)模塊,點(diǎn)擊 Build -> Make Module 開始編譯。

如果工程或模塊是Static Library,則該工程或模塊是一個(gè)HAR。

構(gòu)建HAR時(shí)有以下三種方式:

1. 以Debug模式構(gòu)建HAR,會(huì)直接打包源碼,不進(jìn)行代碼混淆。

2. 以Release模式構(gòu)建HAR,會(huì)編譯、混淆并壓縮代碼。

3. 構(gòu)建字節(jié)碼格式的HAR。開啟混淆時(shí),編譯器會(huì)先對(duì)源碼中間文件進(jìn)行混淆,再生成abc字節(jié)碼。

圖1 DevEco Studio選擇release編譯模式

f8b2dfd8-c467-11f0-8c8f-92fbcf53809c.png

圖2 DevEco Studio指定模塊編譯

f9127704-c467-11f0-8c8f-92fbcf53809c.png

混淆配置能力

編譯選項(xiàng)

若按照上述編譯流程開啟代碼混淆,在 DevEco Studio 5.0.3.600 之前的版本,默認(rèn)僅混淆參數(shù)名和局部變量名。從 DevEco Studio 5.0.3.600 版本起,默認(rèn)啟用四項(xiàng)推薦的混淆選項(xiàng):-enable-property-obfuscation、-enable-toplevel-obfuscation、-enable-filename-obfuscation 和 -enable-export-obfuscation。開發(fā)者可以根據(jù)需要進(jìn)一步修改混淆配置。

混淆配置

在每個(gè)模塊下都能找到 build-profile.json5 文件,如下圖所示。可以在此文件中配置是否開啟混淆及混淆配置文件。

圖3 編譯配置文件

f96f77ce-c467-11f0-8c8f-92fbcf53809c.png

新建工程時(shí),每個(gè)模塊下都有 obfuscation-rules.txt 文件,用于配置混淆。

圖4 混淆配置文件

f9c40442-c467-11f0-8c8f-92fbcf53809c.png

在上圖中,obfuscation-rules.txt文件中添加了-enable-property-obfuscation和-enable-toplevel-obfuscation開關(guān),表示已啟用屬性混淆和頂層作用域名稱混淆。

DevEco Studio混淆現(xiàn)有選項(xiàng)及功能描述如下:

fa1b6c8c-c467-11f0-8c8f-92fbcf53809c.png

fa711614-c467-11f0-8c8f-92fbcf53809c.png

混淆選項(xiàng)具體的使用方法和樣例代碼可以參考代碼混淆

混淆優(yōu)化建議

開發(fā)人員混淆工程時(shí),發(fā)現(xiàn)緩存文件或SDK中的文件中存在大量未混淆的源碼名稱。原因包括以下兩類:

混淆選項(xiàng)開啟較少;開啟-enable-property-obfuscation、-enable-toplevel-obfuscation、-enable-export-obfuscation、-enable-filename-obfuscation選項(xiàng)。

源碼名稱與系統(tǒng)白名單、語言白名單重名;添加后綴避開白名單。

混淆規(guī)則合并策略

在編譯一個(gè)模塊時(shí),生效的混淆規(guī)則是當(dāng)前編譯模塊混淆規(guī)則和依賴模塊混淆規(guī)則的合并結(jié)果。具體規(guī)則請(qǐng)參考:混淆規(guī)則合并策略。

查看混淆結(jié)果

開發(fā)人員在編譯模塊的build目錄中可找到編譯和混淆生成的緩存文件、名稱映射表及系統(tǒng)API白名單文件。

源碼編譯及混淆緩存文件目錄:build/[…]/release/模塊名。

混淆名稱映射表及系統(tǒng)API白名單目錄:build/[…]/release/obfuscation。

名稱映射表文件:nameCache.json,記錄源碼名稱映射。

系統(tǒng)API白名單文件: systemApiCache.json,記錄SDK接口與屬性名稱。

圖5 DevEco Studio編譯產(chǎn)物與緩存文件

fac8ed1c-c467-11f0-8c8f-92fbcf53809c.png

調(diào)試

代碼經(jīng)過混淆工具處理后,名稱會(huì)發(fā)生更改,這可能導(dǎo)致運(yùn)行時(shí)崩潰堆棧日志難以理解,因?yàn)槎褩Ec源代碼不完全一致。如果未保留調(diào)試信息,行號(hào)及名稱更改將導(dǎo)致無法準(zhǔn)確定位問題。此外,啟用-enable-property-obfuscation、-enable-toplevel-obfuscation等選項(xiàng)后,代碼混淆可能會(huì)引發(fā)運(yùn)行時(shí)崩潰或功能性錯(cuò)誤。開發(fā)人員需要還原報(bào)錯(cuò)堆棧,排查并配置白名單以確保功能正常。

函數(shù)調(diào)用棧還原

經(jīng)過混淆的應(yīng)用程序中代碼名稱會(huì)發(fā)生更改,因此報(bào)錯(cuò)棧與源碼不完全一致,crash時(shí)打印的報(bào)錯(cuò)棧會(huì)難以理解,如何處理請(qǐng)參考報(bào)錯(cuò)棧還原。

反混淆工具h(yuǎn)stack

hstack需要將Node.js配置到環(huán)境變量中,詳細(xì)使用說明請(qǐng)參考hstack。

使用第三方加固

HarmonyOS提供的代碼混淆能力之外,開發(fā)者還可以使用第三方安全廠商提供的高級(jí)混淆和加固能力。多家安全加固廠商已經(jīng)啟動(dòng)了HarmonyOS開發(fā),開發(fā)者可以根據(jù)需求選擇這些安全廠商的服務(wù)。開發(fā)者需要與第三方安全廠商自行溝通合作方式和范圍,本文檔不做詳細(xì)說明。

具體的官方與第三方代碼混淆能力的關(guān)系如下:

fb1fcaba-c467-11f0-8c8f-92fbcf53809c.png

由于HarmonyOS代碼簽名、應(yīng)用加密等安全機(jī)制的限制,以及應(yīng)用市場(chǎng)上架審核的純凈安全要求,三方加固廠商提供的安全加固內(nèi)容必須滿足以下六點(diǎn)要求:

1、不允許隱藏敏感系統(tǒng)API的調(diào)用,審核人員必須能夠清晰地看到應(yīng)用的特性。

2、不允許混淆非自研的SDK。SDK應(yīng)由SDK廠商自行進(jìn)行混淆保護(hù)。如果非自研SDK被混淆,將會(huì)影響應(yīng)用市場(chǎng)審核相關(guān)SDK的指紋信息。

3、通過第三方安全加固的應(yīng)用程序,必須確保不包含惡意行為,以免對(duì)生態(tài)系統(tǒng)造成影響。此要求為約束性條款,不遵守可能導(dǎo)致應(yīng)用被下架。

4、不允許使用第三方虛擬機(jī),HarmonyOS系統(tǒng)通過代碼簽名等機(jī)制限制動(dòng)態(tài)加載代碼,這可能導(dǎo)致應(yīng)用無法正常運(yùn)行。

5、不允許對(duì)方舟字節(jié)碼文件進(jìn)行篡改,此方法可能讓應(yīng)用無法正常運(yùn)行,以及影響應(yīng)用市場(chǎng)對(duì)應(yīng)用的純凈安全進(jìn)行審核。

6、不允許對(duì)系統(tǒng)庫使用hook技術(shù),此方法影響應(yīng)用市場(chǎng)對(duì)應(yīng)用的純凈安全進(jìn)行審核。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4967

    瀏覽量

    73929
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2153

    瀏覽量

    36035
  • DevEco Studio
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    1519

原文標(biāo)題:HarmonyOS應(yīng)用代碼混淆技術(shù)方案,為你的應(yīng)用安全保駕護(hù)航

文章出處:【微信號(hào):HarmonyOS_Dev,微信公眾號(hào):HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    JavaScript壓縮、混淆和加密技術(shù)原理解析

    前端代碼都是公開的,為了提高代碼的破解成本、保證JS代碼里的一些重要邏輯不被居心叵測(cè)的人利用,需要使用一些加密和混淆的防護(hù)手段。
    的頭像 發(fā)表于 12-26 09:41 ?4737次閱讀
    JavaScript壓縮、<b class='flag-5'>混淆</b>和加密<b class='flag-5'>技術(shù)</b>原理解析

    HDC2021技術(shù)分論壇:HarmonyOS代碼開發(fā)介紹

    的主要特點(diǎn)HarmonyOS代碼開發(fā)利用可視化“拖拉拽”的開發(fā)方式替代傳統(tǒng)的編碼開發(fā),免去了開發(fā)人員手動(dòng)編寫平臺(tái)相關(guān)代碼,減輕了非技術(shù)開發(fā)人員的壓力,通過編寫少量
    發(fā)表于 11-17 18:15

    HDC2021技術(shù)分論壇:HarmonyOS代碼開發(fā)介紹

    、什么是HarmonyOS代碼開發(fā)?低代碼開發(fā),顧名思義,就是用更少的代碼量,完成更高效的應(yīng)用交付。低代碼開發(fā)讓更多的人可以參與到應(yīng)用程序
    發(fā)表于 11-23 17:10

    深度剖析HarmonyOS圖形棧測(cè)試技術(shù)

    需要數(shù)據(jù)背后的根因。但業(yè)界的圖形棧測(cè)試,絕大部分都只提供應(yīng)用層面的數(shù)據(jù),有一部分可以深入系統(tǒng)層分析,但仍無法觸及硬件這一層的測(cè)試分析。  HarmonyOS圖形棧測(cè)試技術(shù),不僅可以深入系統(tǒng)層分析,幫助
    發(fā)表于 04-08 11:14

    代碼保護(hù)之道——混淆的藝術(shù)

    第三點(diǎn)是藏葉于林。安全是業(yè)務(wù)的天然屬性,業(yè)務(wù)是安全的最佳載體。只有結(jié)合了業(yè)務(wù)的安全才是真正的安全,孤立的安全是很容易被攻擊者攻破的。將業(yè)務(wù)代碼和安全代碼放在一起進(jìn)行混淆,攻擊者要破解的話,不但要摸清安全邏輯,還要了解清楚整個(gè)業(yè)務(wù)
    的頭像 發(fā)表于 12-13 11:11 ?5604次閱讀
    <b class='flag-5'>代碼</b>保護(hù)之道——<b class='flag-5'>混淆</b>的藝術(shù)

    HarmonyOS開發(fā)者日生態(tài)最新進(jìn)展、核心代碼解析、創(chuàng)新案例分享

    》的演講,圍繞HarmonyOS分布式能力、AI能力、Java UI/JS UI框架,重點(diǎn)從核心代碼解讀和技術(shù)實(shí)現(xiàn),
    的頭像 發(fā)表于 04-17 09:57 ?1736次閱讀

    HarmonyOS 測(cè)試技術(shù)與實(shí)踐-HarmonyOS 軟件測(cè)試技術(shù)

    2021華為開發(fā)者大會(huì)HarmonyOS 測(cè)試技術(shù)與實(shí)踐-HarmonyOS 軟件測(cè)試技術(shù)
    的頭像 發(fā)表于 10-23 14:19 ?2211次閱讀
    <b class='flag-5'>HarmonyOS</b> 測(cè)試<b class='flag-5'>技術(shù)</b>與實(shí)踐-<b class='flag-5'>HarmonyOS</b> 軟件測(cè)試<b class='flag-5'>技術(shù)</b>棧

    HarmonyOS測(cè)試技術(shù)與實(shí)戰(zhàn)-HarmonyOS分布式應(yīng)用特征與挑戰(zhàn)

     HDC 2021華為開發(fā)者大會(huì)HarmonyOS測(cè)試技術(shù)與實(shí)戰(zhàn)-HarmonyOS分布式應(yīng)用特征與挑戰(zhàn)
    的頭像 發(fā)表于 10-23 14:41 ?2288次閱讀
    <b class='flag-5'>HarmonyOS</b>測(cè)試<b class='flag-5'>技術(shù)</b>與實(shí)戰(zhàn)-<b class='flag-5'>HarmonyOS</b>分布式應(yīng)用特征與挑戰(zhàn)

    HarmonyOS測(cè)試技術(shù)與實(shí)戰(zhàn)-分布式應(yīng)用測(cè)試解決方案

    HDC 2021華為開發(fā)者大會(huì)HarmonyOS測(cè)試技術(shù)與實(shí)戰(zhàn)-HarmonyOS分布式應(yīng)用測(cè)試解決方案
    的頭像 發(fā)表于 10-23 14:48 ?2102次閱讀
    <b class='flag-5'>HarmonyOS</b>測(cè)試<b class='flag-5'>技術(shù)</b>與實(shí)戰(zhàn)-分布式應(yīng)用測(cè)試解決<b class='flag-5'>方案</b>

    HarmonyOS測(cè)試技術(shù)與實(shí)戰(zhàn)-HarmonyOS自研圖形??偨Y(jié)

    HDC 2021華為開發(fā)者大會(huì) HarmonyOS測(cè)試技術(shù)與實(shí)戰(zhàn)-HarmonyOS自研圖形棧總結(jié)
    的頭像 發(fā)表于 10-23 15:47 ?2183次閱讀
    <b class='flag-5'>HarmonyOS</b>測(cè)試<b class='flag-5'>技術(shù)</b>與實(shí)戰(zhàn)-<b class='flag-5'>HarmonyOS</b>自研圖形??偨Y(jié)

    什么是HarmonyOS代碼開發(fā)

    。低代碼開發(fā)讓更多的人可以參與到應(yīng)用程序開發(fā)當(dāng)中,不僅是具有專業(yè)編程能力的程序員,非技術(shù)背景的業(yè)務(wù)人員同樣可以構(gòu)建應(yīng)用;對(duì)于大型企業(yè)來講,低代碼開發(fā)還可以降低IT團(tuán)隊(duì)培訓(xùn)、技術(shù)部署的初
    的頭像 發(fā)表于 11-22 10:50 ?3080次閱讀

    APP混淆實(shí)戰(zhàn)(Java/so代碼混淆)

    Android App Bundle混淆加密加殼加固保護(hù)的解決方案(過Google App上架審核)最全Android及資源混淆方法匯總(無需加固節(jié)約成本并將APP上架Google Play成功的最佳
    的頭像 發(fā)表于 06-29 15:42 ?1584次閱讀
    APP<b class='flag-5'>混淆</b>實(shí)戰(zhàn)(Java/so<b class='flag-5'>代碼</b><b class='flag-5'>混淆</b>)

    Flutter應(yīng)用代碼混淆優(yōu)化防護(hù)的常見問題與解決方案

    分析flutter應(yīng)用很依賴反編譯工具轉(zhuǎn)儲(chǔ)的dart文件中的信息,可以在開發(fā)flutter的過程中開啟混淆,能有效防止靜態(tài)分析。
    的頭像 發(fā)表于 08-12 11:11 ?3881次閱讀

    java中的代碼混淆技術(shù)

    今天和大家一起學(xué)習(xí)下java中的代碼混淆技術(shù),后面你也可以讓你的代碼不再裸露在外了,讓人輕易窺視 代碼
    的頭像 發(fā)表于 09-25 11:48 ?2526次閱讀
    java中的<b class='flag-5'>代碼</b><b class='flag-5'>混淆</b><b class='flag-5'>技術(shù)</b>

    ArkGuard混淆工具使用指南

    ArkGuard是一款源碼混淆工具,提供基礎(chǔ)混淆功能。當(dāng)軟件發(fā)布后,其代碼很容易被他人獲取分析,通過閱讀清晰的變量名、函數(shù)名,攻擊者或競(jìng)爭(zhēng)者可以非常輕松地理解代碼的邏輯結(jié)構(gòu)、業(yè)務(wù)核心算
    的頭像 發(fā)表于 09-28 16:05 ?922次閱讀
    ArkGuard<b class='flag-5'>混淆</b>工具使用指南