[發明專利]自定義規則混淆代碼的方法及裝置在審
| 申請號: | 202210112479.2 | 申請日: | 2022-01-29 |
| 公開(公告)號: | CN114444032A | 公開(公告)日: | 2022-05-06 |
| 發明(設計)人: | 劉劍;楊春柳 | 申請(專利權)人: | 北京小川在線網絡技術有限公司 |
| 主分類號: | G06F21/14 | 分類號: | G06F21/14 |
| 代理公司: | 北京中和立達知識產權代理有限公司 11756 | 代理人: | 楊磊 |
| 地址: | 100191 北京市海淀區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 自定義 規則 混淆 代碼 方法 裝置 | ||
本發明是關于一種自定義規則混淆代碼的方法及裝置,方法包括:對輸入的Dart源代碼進行分析,以確定所述Dart源代碼的語義結構特征;根據所述Dart源代碼的語義結構特征,構建Dart抽象語法樹;根據所述Dart抽象語法樹映射生成JavaScript抽象語法樹;根據所述JavaScript抽象語法樹生成JavaScript語句塊;獲取并解析自定義混淆規則,其中,所述自定義混淆規則支持將目標變量名或目標函數名替換成指定名稱或保留原名;根據所述自定義混淆規則,處理所述JavaScript語句塊,以輸出JavaScript源代碼。
技術領域
本發明涉及代碼轉換技術領域,尤其涉及一種自定義規則混淆代碼的方法及裝置。
背景技術
dart2js是Google開源的一個編譯工具,主要用于將Dart語言代碼轉換成JavaScript語言代碼,dart2js支持指定級別的代碼優化,級別0代表不做任何優化,將Dart語言的代碼全量等價的轉換為JavaScript語言代碼。級別1代表做一些默認優化,例如在轉換過程中刪除沒有被引用到的代碼,一般沒有被引用到的代碼屬于無效代碼,不會被程序所執行。級別2代表在級別1的基礎上加上一些遵循語言語義并且對所有程序安全的其他優化,例如:在轉換過程中局部定義的變量名book,可能被混淆成a。這樣的好處在于減小了轉換后JS的大小,但同時讓混淆后的代碼幾乎沒法理解。級別3代表在級別2的基礎上省去了隱式類型檢查,例如:某變量定義為字符串類型,但在轉換的過程中不再去檢查該變量是否真的被賦值為字符串類型。級別4代表在級別3點基礎上采用更激進的優化策略,例如同類型的函數被合并等,需要開發者對函數輸入有足夠的保證。其中在O2及以上級別就會開啟代碼混淆,轉換后的代碼基本變成開發人員不可理解的狀態。
發明內容
為克服相關技術中存在的問題,本發明提供一種自定義規則混淆代碼的方法及裝置,實現dart2js能按照指定規則進行混淆,開發人員提供混淆過程中需要保留的函數名或者變量名等,讓需要保留的函數名或變量名不被混淆,方便開發人員根據關鍵變量名或者函數名定位問題代碼。
根據本發明實施例的第一方面,提供一種自定義規則混淆代碼的方法,所述方法包括:
對輸入的Dart源代碼進行分析,以確定所述Dart源代碼的語義結構特征;
根據所述Dart源代碼的語義結構特征,構建Dart抽象語法樹;
根據所述Dart抽象語法樹映射生成JavaScript抽象語法樹;
根據所述JavaScript抽象語法樹生成JavaScript語句塊;
獲取并解析自定義混淆規則,其中,所述自定義混淆規則支持將目標變量名或目標函數名替換成指定名稱或保留原名;
根據所述自定義混淆規則,處理所述JavaScript語句塊,以輸出JavaScript源代碼。
在一個實施例中,優選地,對輸入的Dart源代碼進行分析,以確定所述Dart源代碼的語義結構特征,包括:
對輸入的Dart源代碼進行詞法分析,根據規則識別所述Dart源代碼中的運算符和表達式,得到詞法解析結果;
根據所述詞法解析結果,將單詞序列組合成各類語法短句,以確定所述Dart源代碼在結構上是否正確,以得到語法解析結果;
根據所述語法解析結果,進行語義分析,以確定所述Dart源代碼的語義結構特征。
在一個實施例中,優選地,所述方法還包括:
接收輸入的自定義混淆規則設置命令;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京小川在線網絡技術有限公司,未經北京小川在線網絡技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210112479.2/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:輸電線路防外破預警方法
- 下一篇:萬能模型系統及其實施方法





