[發(fā)明專利]針對混淆腳本語言的定位方法和系統(tǒng)在審
| 申請?zhí)枺?/td> | 201510966901.0 | 申請日: | 2015-12-21 |
| 公開(公告)號: | CN106897211A | 公開(公告)日: | 2017-06-27 |
| 發(fā)明(設(shè)計)人: | 隋鵬飛 | 申請(專利權(quán))人: | 阿里巴巴集團(tuán)控股有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京潤澤恒知識產(chǎn)權(quán)代理有限公司11319 | 代理人: | 蘇培華 |
| 地址: | 英屬開曼群島大開*** | 國省代碼: | 暫無信息 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 針對 混淆 腳本語言 定位 方法 系統(tǒng) | ||
技術(shù)領(lǐng)域
本申請涉及互聯(lián)網(wǎng)領(lǐng)域,尤其涉及一種針對混淆腳本語言的定位方法和系統(tǒng)。
背景技術(shù)
在Web應(yīng)用中,前端代碼對用戶和瀏覽器來說都是可見的。為了保護(hù)應(yīng)用的腳本代碼,在將產(chǎn)品發(fā)布給用戶之前通常要對所有的腳本進(jìn)行混淆,以防止具有惡意目的的其他人輕易的復(fù)用該前端代碼。
以現(xiàn)有的JavaScript腳本語言為例,目前JavaScript腳本語言混淆的基本方法如下:
1、將所有的注釋去掉,然后將所有的回車去掉,最后把多余的空格也去掉,從而將整個文件壓縮為一行。
2、對所有局部變量和方法進(jìn)行重命名,把所有的局部變量名和方法名都變成由1-3個字符組合的,達(dá)到進(jìn)一步壓縮和混淆的目的。
但是,腳本混淆在保護(hù)前端代碼的同時,也增加了排查和診斷問題的難度,因為開發(fā)人員得到的錯誤信息中的變量和函數(shù)名是混淆后的變量/函數(shù)名稱,報錯位置也是混淆和壓縮后的位置,以至于開發(fā)人員很難通過錯誤信息在源代碼中定位問題,更難以分析和解決問題。
繼續(xù)以上述的JavaScript腳本語言為例,當(dāng)機(jī)器執(zhí)行混淆后的代碼之后,如果報錯,則需要開發(fā)人員進(jìn)行調(diào)試。因此需要通過代碼美化工具進(jìn)行適度的還原,使得混淆后的代碼在結(jié)構(gòu)上看起來更清楚一些,但因為變量名/方法名的替換過程是不可逆的,因此不可能對代碼進(jìn)行完全還原,更不可能找到出錯信息對應(yīng)的源代碼中的位置,因此,開發(fā)人員仍無法根據(jù)機(jī)器報出的錯誤信息輕易地正確定位該錯誤在源文件中的位置,從而影響了分析并修復(fù)錯誤的效率。
發(fā)明內(nèi)容
鑒于上述問題,提出了本申請實施例以便提供一種克服上述問題或者至少部分地解決上述問題的針對混淆腳本語言的定位方法和系統(tǒng)。
為解決上述問題,本申請公開一種針對混淆腳本語言的定位方法,包括:
解析源代碼,并記錄所述源代碼中的元素名在所述源代碼中的位置;
替換所述解析后源代碼中的元素名,并記錄替換前的元素名與對應(yīng)的替換后元素名的對應(yīng)關(guān)系;
將替換后的源代碼生成可執(zhí)行代碼,并記錄所述替換后元素名在所述可執(zhí)行代碼中的位置;
獲取所述可執(zhí)行代碼在客戶端運(yùn)行中發(fā)生錯誤的錯誤報告;
根據(jù)所述錯誤報告中包含的替換后元素名以及所述替換后元素名的位置,確定所對應(yīng)的替換前的元素名以及所述替換前的元素名的位置。
本申請還公開一種針對混淆腳本語言的定位系統(tǒng),包括:
代碼解析單元,用于解析源代碼,并記錄所述源代碼中的元素名在所述源代碼中的位置;
代碼替換和記錄單元,用于替換所述解析后源代碼中的元素名,并記錄替換前的元素名與對應(yīng)的替換后元素名的對應(yīng)關(guān)系;
代碼生成和記錄單元,用于將替換后的源代碼生成可執(zhí)行代碼,并記錄所述替換后元素名在所述可執(zhí)行代碼中的位置;
錯誤報告獲取單元,用于獲取所述可執(zhí)行代碼在客戶端運(yùn)行中發(fā)生錯誤的錯誤報告;以及
錯誤定位單元,用于根據(jù)所述錯誤報告中包含的替換后元素名以及所述替換后元素名的位置,確定所對應(yīng)的替換前的元素名以及所述替換前的元素名的位置。
本申請實施例至少具有以下優(yōu)點:
本申請實施例提出的針對混淆腳本語言的定位方法和系統(tǒng),可以對混淆后代碼中的錯誤信息中的元素進(jìn)行定位,查找其在源代碼中的位置,從而便于分析并修復(fù)錯誤。
附圖說明
圖1是本申請第一實施例的針對混淆腳本語言的定位方法的流程圖。
圖2是本申請第二實施例的針對混淆腳本語言的定位方法的流程圖。
圖3是本申請第三實施例的針對混淆腳本語言的定位方法的流程圖。
圖4是本申請第四實施例的針對混淆腳本語言的定位系統(tǒng)的方框圖。
具體實施方式
下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實施例,都屬于本申請保護(hù)的范圍。
本申請的核心思想之一在于,由于現(xiàn)有技術(shù)在混淆腳本語言之后難以將執(zhí)行時的錯誤定位到源代碼,本申請?zhí)峁┑募夹g(shù)方案在源代碼解析的步驟中記錄源代碼中的元素名在源代碼中的位置,并記錄替換前后元素名的對應(yīng)關(guān)系,并在生成可執(zhí)行代碼的步驟中記錄替換后元素名在可執(zhí)行代碼中的位置。當(dāng)可執(zhí)行代碼在運(yùn)行中發(fā)生錯誤,可以根據(jù)錯誤報告中包含的替換后元素名及位置定位到源代碼中的元素名和位置,方便開發(fā)人員定位和分析執(zhí)行中遇到的錯誤。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于阿里巴巴集團(tuán)控股有限公司,未經(jīng)阿里巴巴集團(tuán)控股有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201510966901.0/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





