HarmonyOS應(yīng)用代碼混淆技術(shù)方案 為你的應(yīng)用安全保駕護(hù)航
在HarmonyOS應(yīng)用生態(tài)蓬勃發(fā)展的應(yīng)用代用安今天,開(kāi)發(fā)者們?cè)谌?chuàng)新、碼混優(yōu)化體驗(yàn)的淆技同時(shí),也需要為辛勤研發(fā)的術(shù)方成果構(gòu)筑堅(jiān)實(shí)可靠的安全防線。因此,全保為能給代碼加上一層“安全鎖”,駕護(hù)保障應(yīng)用安全,應(yīng)用代用安華為推出了系統(tǒng)級(jí)、碼混高效易用的淆技應(yīng)用代碼混淆技術(shù)方案。
應(yīng)用代碼混淆技術(shù)方案通過(guò)增加代碼的術(shù)方復(fù)雜性與模糊性,能明顯提升應(yīng)用的全保反破解與反分析能力。該方案有以下幾個(gè)方面的駕護(hù)顯著作用:
1. 保護(hù)知識(shí)產(chǎn)權(quán):代碼混淆防止他人輕易復(fù)制和竊取軟件代碼,增加逆向工程難度。應(yīng)用代用安
2. 防止逆向工程:逆向工程是碼混分析軟件以了解其工作原理和實(shí)現(xiàn)細(xì)節(jié)的過(guò)程。代碼混淆可增加逆向工程的淆技難度,保護(hù)應(yīng)用程序免受惡意修改或破壞。
3. 提高安全性:代碼混淆減少漏洞和安全風(fēng)險(xiǎn),增加攻擊者利用漏洞的難度。
4. 降低反盜版和欺詐風(fēng)險(xiǎn):混淆代碼可增加攻擊者破解軟件許可驗(yàn)證系統(tǒng)或修改代碼繞過(guò)付費(fèi)機(jī)制的難度,從而減少盜版和欺詐。
針對(duì)工程源碼的混淆提高破解難度,縮短類和成員名稱,減小應(yīng)用大小。
混淆開(kāi)啟
從DevEco Studio版本4.0 Beta1開(kāi)始,hvigor插件提供代碼混淆功能。開(kāi)啟混淆的條件如下:
· 工程為Stage模型
· 在Release編譯模式下
· 模塊build-profile.json5文件中開(kāi)啟混淆配置
注意:“enable”默認(rèn)為“false”,默認(rèn)不開(kāi)啟代碼混淆功能。
滿足開(kāi)啟混淆的條件后,選擇目標(biāo)模塊,點(diǎn)擊 Build -> Make Module 開(kāi)始編譯。
如果工程或模塊是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。開(kāi)啟混淆時(shí),編譯器會(huì)先對(duì)源碼中間文件進(jìn)行混淆,再生成abc字節(jié)碼。
圖1DevEco Studio選擇release編譯模式
圖2DevEco Studio指定模塊編譯
混淆配置能力
編譯選項(xiàng)
若按照上述編譯流程開(kāi)啟代碼混淆,在 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。開(kāi)發(fā)者可以根據(jù)需要進(jìn)一步修改混淆配置。
混淆配置
在每個(gè)模塊下都能找到 build-profile.json5 文件,如下圖所示。可以在此文件中配置是否開(kāi)啟混淆及混淆配置文件。
圖3編譯配置文件
新建工程時(shí),每個(gè)模塊下都有 obfuscation-rules.txt 文件,用于配置混淆。
圖4混淆配置文件
在上圖中,obfuscation-rules.txt文件中添加了-enable-property-obfuscation和-enable-toplevel-obfuscation開(kāi)關(guān),表示已啟用屬性混淆和頂層作用域名稱混淆。
DevEco Studio混淆現(xiàn)有選項(xiàng)及功能描述如下:
混淆選項(xiàng)具體的使用方法和樣例代碼可以參考代碼混淆
混淆優(yōu)化建議
開(kāi)發(fā)人員混淆工程時(shí),發(fā)現(xiàn)緩存文件或SDK中的文件中存在大量未混淆的源碼名稱。原因包括以下兩類:
· 混淆選項(xiàng)開(kāi)啟較少;開(kāi)啟-enable-property-obfuscation、-enable-toplevel-obfuscation、-enable-export-obfuscation、-enable-filename-obfuscation選項(xiàng)。
· 源碼名稱與系統(tǒng)白名單、語(yǔ)言白名單重名;添加后綴避開(kāi)白名單。
混淆規(guī)則合并策略
在編譯一個(gè)模塊時(shí),生效的混淆規(guī)則是當(dāng)前編譯模塊混淆規(guī)則和依賴模塊混淆規(guī)則的合并結(jié)果。具體規(guī)則請(qǐng)參考:混淆規(guī)則合并策略
查看混淆結(jié)果
開(kāi)發(fā)人員在編譯模塊的build目錄中可找到編譯和混淆生成的緩存文件、名稱映射表及系統(tǒng)API白名單文件。
· 源碼編譯及混淆緩存文件目錄:build/\[…\]/release/模塊名
· 混淆名稱映射表及系統(tǒng)API白名單目錄:build/\[…\]/release/obfuscation
名稱映射表文件:nameCache.json,記錄源碼名稱映射。
系統(tǒng)API白名單文件:systemApiCache.json,記錄SDK接口與屬性名稱。
圖5DevEco Studio編譯產(chǎn)物與緩存文件
調(diào)試
代碼經(jīng)過(guò)混淆工具處理后,名稱會(huì)發(fā)生更改,這可能導(dǎo)致運(yùn)行時(shí)崩潰堆棧日志難以理解,因?yàn)槎褩Ec源代碼不完全一致。如果未保留調(diào)試信息,行號(hào)及名稱更改將導(dǎo)致無(wú)法準(zhǔn)確定位問(wèn)題。此外,啟用-enable-property-obfuscation、-enable-toplevel-obfuscation等選項(xiàng)后,代碼混淆可能會(huì)引發(fā)運(yùn)行時(shí)崩潰或功能性錯(cuò)誤。開(kāi)發(fā)人員需要還原報(bào)錯(cuò)堆棧,排查并配置白名單以確保功能正常。
函數(shù)調(diào)用棧還原
經(jīng)過(guò)混淆的應(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ì)使用說(shuō)明請(qǐng)參考hstack
使用第三方加固
在HarmonyOS提供的代碼混淆能力之外,開(kāi)發(fā)者還可以使用第三方安全廠商提供的高級(jí)混淆和加固能力。多家安全加固廠商已經(jīng)啟動(dòng)了HarmonyOS開(kāi)發(fā),開(kāi)發(fā)者可以根據(jù)需求選擇這些安全廠商的服務(wù)。開(kāi)發(fā)者需要與第三方安全廠商自行溝通合作方式和范圍,本文檔不做詳細(xì)說(shuō)明。具體的官方與第三方代碼混淆能力的關(guān)系如下:
由于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、通過(guò)第三方安全加固的應(yīng)用程序,必須確保不包含惡意行為,以免對(duì)生態(tài)系統(tǒng)造成影響。此要求為約束性條款,不遵守可能導(dǎo)致應(yīng)用被下架。
4、不允許使用第三方虛擬機(jī),HarmonyOS系統(tǒng)通過(guò)代碼簽名等機(jī)制限制動(dòng)態(tài)加載代碼,這可能導(dǎo)致應(yīng)用無(wú)法正常運(yùn)行。
5、不允許對(duì)方舟字節(jié)碼文件進(jìn)行篡改,此方法可能讓?xiě)?yīng)用無(wú)法正常運(yùn)行,以及影響應(yīng)用市場(chǎng)對(duì)應(yīng)用的純凈安全進(jìn)行審核。
6、不允許對(duì)系統(tǒng)庫(kù)使用hook技術(shù),此方法影響應(yīng)用市場(chǎng)對(duì)應(yīng)用的純凈安全進(jìn)行審核。
未來(lái),該方案將持續(xù)演進(jìn),強(qiáng)化混淆算法與生態(tài)協(xié)同,攜手開(kāi)發(fā)者共建可信環(huán)境。它不僅是保護(hù)應(yīng)用知識(shí)產(chǎn)權(quán)、抵御逆向工程的關(guān)鍵盾牌,更是HarmonyOS生態(tài)安全穩(wěn)健發(fā)展的基石,護(hù)航創(chuàng)新,共贏未來(lái)。更多應(yīng)用安全相關(guān)應(yīng)用代碼混淆指南請(qǐng)?jiān)L問(wèn)HarmonyOS開(kāi)發(fā)者官網(wǎng),搜索關(guān)鍵詞“應(yīng)用代碼混淆”。
下一篇:展品過(guò)于接地氣!網(wǎng)友玩梗稱深圳博物館“不怕被盜”
相關(guān)文章:
- 小米聯(lián)合創(chuàng)始人林斌計(jì)劃減持公司股票:不超過(guò)20億美元
- 女網(wǎng)紅“半藏森林”轉(zhuǎn)行互聯(lián)網(wǎng)產(chǎn)品經(jīng)理:社交賬號(hào)已停更
- iOS系統(tǒng)廣告又多了!蘋(píng)果宣布App Store明年起新增更多廣告位
- 吃不飽穿不暖能活更久!真不騙你
- 追光|這一年,那些“破圈”的體育熱詞
- 新一代游戲神U!AMD銳龍7 9850X3D偷跑上架:要價(jià)不便宜
- 雙十二隨身裝備升級(jí)!華為MatePad Mini四大場(chǎng)景解鎖“小而美”體驗(yàn)
- 女網(wǎng)紅“半藏森林”轉(zhuǎn)行互聯(lián)網(wǎng)產(chǎn)品經(jīng)理:社交賬號(hào)已停更
- 科學(xué)家造出全球最小自主機(jī)器人!比一粒鹽還小 成本僅需一美分
- 黃曉明經(jīng)歷《人在囧途》 去機(jī)場(chǎng)路上車胎爆了 無(wú)奈坐上大貨車
相關(guān)推薦:
- 美國(guó)NASA局長(zhǎng):將在總統(tǒng)任期內(nèi)登月 可開(kāi)采氦
- 大嘴猴男鞋旗艦店:19款加絨雪地靴53元大促
- 2026央視馬年春晚吉祥物發(fā)布:四匹駿馬 活潑可愛(ài)、意氣風(fēng)發(fā)
- 韓路找“手工耿”拍攝視頻:到河北后霧太大找不到路了
- 十年過(guò)去了 零跑咋成新勢(shì)力龍頭了
- 谷歌微軟蘋(píng)果瓜分前三!2025年世界500強(qiáng)發(fā)布:華為第50、小米第354
- 1萬(wàn)多臺(tái)國(guó)產(chǎn)電腦 穩(wěn)定運(yùn)行3個(gè)多月!
- 從“豬聯(lián)網(wǎng)”到“AI生態(tài)圈”:農(nóng)信數(shù)智十年進(jìn)階 發(fā)布三大產(chǎn)品卡位AI+農(nóng)業(yè)
- 醫(yī)保按病種付費(fèi)3.0版將發(fā)布 實(shí)現(xiàn)醫(yī)?;鸶咝褂?/a>
- 魏建軍:智能車“大忽悠”太多 我要搞購(gòu)車防忽悠指南
- 我國(guó)國(guó)民體質(zhì)合格率、優(yōu)良率創(chuàng)新高:經(jīng)常參加體育鍛煉人數(shù)比例達(dá)38.52%
- 能源央企規(guī)模化適配鴻蒙 覆蓋辦公、生產(chǎn)、黨建等全場(chǎng)景應(yīng)用
- 海上巨無(wú)霸!我國(guó)最大艙容耙吸挖泥船“雙子星”完成海試
- 華為再造爆款!智界汽車12月交付破1萬(wàn)臺(tái) 已連續(xù)3月過(guò)萬(wàn)輛大關(guān)
- 穩(wěn)步迭代,全面超越:vivo S50 Pro mini 評(píng)測(cè):小直屏旗艦的進(jìn)化標(biāo)桿
- 2025年度最后一次!俄羅斯發(fā)射“一箭52星”
- 從新手平穩(wěn)過(guò)渡到進(jìn)階的相機(jī):輕便隨身、專業(yè)性能 更能直出
- 美國(guó)佛羅里達(dá)不養(yǎng)閑人 84歲老人因兒子探望不夠勤 遂射殺
- 專為X3D處理器打造,技嘉X870E X3D系列主板全面上線
- 史上最強(qiáng)X3D CPU!9950X3D2首次曝光:雙3D V
