本申請涉及互聯(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ù)錯誤的效率。
技術(shù)實現(xiàn)要素:
鑒于上述問題,提出了本申請實施例以便提供一種克服上述問題或者至少部分地解決上述問題的針對混淆腳本語言的定位方法和系統(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)點(diǎn):
本申請實施例提出的針對混淆腳本語言的定位方法和系統(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í)行中遇到的錯誤。
第一實施例
本申請第一實施例提出一種針對混淆腳本語言的定位方法,如圖1所示為本申請第一實施例提出一種針對混淆腳本語言的定位方法的流程圖。
步驟101,解析源代碼,并記錄所述源代碼中的元素名在所述源代碼中的位置;
源代碼中的元素名可以包括局部變量名、全局變量名、常量名、方法名、類名等,在本實施例步驟101中,可以對元素中局部變量名和方法名在源代碼中的位置進(jìn)行記錄。
以現(xiàn)有的JavaScript腳本語言為例進(jìn)行說明,解析源代碼可以是通過例 如代碼解析器將JavaScript源代碼解析為抽象語法樹,抽象語法樹中的每一節(jié)點(diǎn)與JavaScript源代碼中的每一元素對應(yīng)。因此,在這一步驟中可以確定與每一個局部變量名和方法名對應(yīng)的節(jié)點(diǎn),并將該局部變量名或方法名在源代碼中的位置(例如行號、列號)記錄在該局部變量名或方法名對應(yīng)的節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中。
作為另一實施例,該元素名在源代碼中的位置也可以記錄在服務(wù)器的其他存儲位置,例如新建的文檔等,這一記錄的位置只要能夠關(guān)聯(lián)到解析后該元素名對應(yīng)的節(jié)點(diǎn)即可,并不特別限定其存儲位置。
步驟102,替換所述解析后源代碼中的元素名,并記錄所述源代碼中替換前的元素名與對應(yīng)的替換后元素名的對應(yīng)關(guān)系;
在這一步驟中,以JavaScript腳本語言為例,可以用最短的可用名替換解析后源代碼中的元素名,同時將替換前的元素名記錄在抽象語法樹中對應(yīng)于替換后元素名的節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中。
此時,在抽象語法樹的對應(yīng)于JavaScript源文件的每一個元素名的節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中,存儲有該元素名在源代碼中的位置以及替換后的元素名。由于替換后的元素名與節(jié)點(diǎn)相關(guān)聯(lián),這一步驟中能夠建立存儲在對應(yīng)節(jié)點(diǎn)的替換后元素名與存儲在該節(jié)點(diǎn)中的替換前元素名的對應(yīng)關(guān)系。
另外,作為另一種實施例,替換后的元素名也可以被記錄在服務(wù)器的其他位置,例如新建的文檔等,然而這一記錄的位置也必須能夠關(guān)聯(lián)到解析后該元素名對應(yīng)的節(jié)點(diǎn)。
在這一步驟中,通常遵循如下替換規(guī)則:1.當(dāng)前作用域不同變量混淆后的變量名不能重復(fù),同時混淆后的名字不能是關(guān)鍵字;2.子作用域混淆的變量名不能與父作用域沖突;3.不能混淆全局變量名。
通過上述替換之后,所述抽象語法樹的元素名被混淆,讓惡意的使用者無法輕易復(fù)用上述源代碼。
步驟103,將替換后的源代碼生成可執(zhí)行代碼,并記錄所述替換后元素名在所述可執(zhí)行代碼中的位置;
在這一步驟中,可以通過遍歷抽象語法樹的方式,將其節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu) 中存儲的替換前元素名及位置、以及替換后元素名按順序?qū)懭氪a文件,形成可執(zhí)行代碼文件。在此過程中將會獲得替換后元素名在可執(zhí)行代碼文件中的位置,之后可以將替換前的變元素名及其位置與替換后元素名及其位置寫入元素位置對照表。
在本申請的另一優(yōu)選的實施例中,元素位置對照表例如包括:
文件名,新元素名稱,新元素行號,新元素列號,舊元素名稱,舊元素行號,舊元素列號。
步驟104,獲取所述可執(zhí)行代碼在客戶端運(yùn)行中發(fā)生錯誤的錯誤報告;
在這一步驟中,如果可執(zhí)行代碼在被機(jī)器執(zhí)行過程中發(fā)生錯誤,可以通過在瀏覽器中安裝插件,攔截該錯誤報告。當(dāng)使用者通過瀏覽器訪問服務(wù)器時,可以通過例如彈出對話框的方式提示使用者安裝插件。當(dāng)插件安裝完成之后,如對應(yīng)的網(wǎng)頁運(yùn)行中發(fā)生錯誤,該插件可以攔截錯誤,并上報至服務(wù)器。
步驟105,根據(jù)所述錯誤報告中包含的替換后元素名以及所述替換后元素名的位置,確定所對應(yīng)的替換前的元素名以及所述替換前的元素名的位置。
在這一步驟中,上述錯誤中包含了替換后元素名及其位置,可以從上述的元素位置對照表中查找確定替換后元素名和位置對應(yīng)的源代碼中的替換前的元素名和元素名的位置,并將查詢得到的源代碼中的替換前的元素名和元素名的位置顯示給開發(fā)人員,便于開發(fā)員人定位并進(jìn)行問題分析。
優(yōu)選地,在步驟104的獲取所述可執(zhí)行代碼在客戶端運(yùn)行中發(fā)生錯誤的錯誤報告之后,以及步驟105的根據(jù)所述錯誤報告中包含的替換后元素名以及所述替換后元素名的位置,確定所對應(yīng)的替換前的元素名以及所述替換前的元素名的位置的步驟之前,所述方法還包括:
驗證所述上報至服務(wù)器的行為是否有效。
在這一步驟中,這一步驟可以通過在瀏覽器插件中安裝驗證信息,例如AccessKey,進(jìn)行驗證。只有驗證通過,才能進(jìn)行步驟105,即獲取所述錯誤報告中包含的替換后元素名以及所述替換后元素名的位置,查找確定所對應(yīng) 的源代碼的元素名以及所述源代碼的元素的位置,從服務(wù)器中查找并顯示對應(yīng)的源代碼的元素名以及所述源代碼的元素的位置。以避免惡意的使用者竊取服務(wù)器中存儲的元素位置對應(yīng)表。
綜上所述,本申請實施例提出的針對混淆腳本語言的定位方法,能夠?qū)﹀e誤信息中的元素進(jìn)行定位,查找其在源代碼中的位置,避免了現(xiàn)有技術(shù)中代碼運(yùn)行發(fā)生錯誤后開發(fā)人員無法輕易定位到原始解析前的代碼中的位置的問題,為開發(fā)人員分析并修復(fù)錯誤提供了便利。
第二實施例
圖2所示為本申請第二實施例提出一種針對混淆腳本語言的定位方法的流程圖。如圖2所示,該實施例中針對混淆腳本語言的定位方法包括如下步驟:
步驟201,解析源代碼,并記錄所述源代碼中的元素名在所述源代碼中的位置;
步驟202,替換所述解析后源代碼中的元素名,并記錄替換前的元素名與對應(yīng)的替換后元素名的對應(yīng)關(guān)系;
上述兩個步驟與上一實施例中的步驟101和步驟102相同或相似,在此不再贅述。
步驟203,壓縮所述解析后的源代碼,并去除注釋、空格和/或回車符。
在這一步驟中,為了進(jìn)一步混淆解析后的源代碼,可以將解析后的源代碼中的注釋、空格和/或回車符去掉,進(jìn)一步降低代碼的可讀性。壓縮之后的解析后源代碼(例如抽象語法樹)可以只有一行。
步驟203可以先于步驟202執(zhí)行,也可以同時或后于步驟202執(zhí)行,在此并不特別限定。
步驟204,將替換后的所述源代碼生成可執(zhí)行代碼,并記錄所述替換后元素名在所述可執(zhí)行代碼中的位置;
這一步驟可以與上述第一實施例的步驟103相同或相似,在此不再贅述。
值得注意的是,在一本申請的一實施例中,若壓縮后的抽象語法樹中回 車符已被刪除,所有的新元素可能位于同一行中,因此,可以顯示新元素行號為1,或者元素位置對照表中可以不包括新元素行號。
步驟205,獲取所述可執(zhí)行代碼在客戶端運(yùn)行中發(fā)生錯誤的錯誤報告;
步驟206,根據(jù)所述錯誤中包含的替換后元素名以及所述替換后元素名的位置,確定對應(yīng)的替換前的源代碼的元素名以及所述替換前的元素名的位置。
上述步驟205和206也可以與上一實施例中步驟104和105相同或相似,在此不再贅述。
通過上述實施例提出的針對混淆腳本語言的定位方法,能夠?qū)﹀e誤信息中的元素進(jìn)行定位,查找其在源代碼中的位置,避免了現(xiàn)有技術(shù)中代碼運(yùn)行發(fā)生錯誤后開發(fā)人員無法輕易定位到原始解析前的代碼中的位置的問題,為開發(fā)人員分析并修復(fù)錯誤提供了便利。
第三實施例
圖3所示為本申請第三實施例提出一種針對混淆腳本語言的定位方法的流程圖。如圖3所示,該實施例中針對混淆腳本語言的定位方法包括如下步驟:
步驟301,解析源代碼,并記錄所述源代碼中的元素名在所述源代碼中的位置;
步驟302,替換所述解析后源代碼中的元素名,并記錄替換前的元素名與對應(yīng)的替換后元素名的對應(yīng)關(guān)系;
上述兩個步驟與上一實施例中的步驟101和步驟102相同或相似,在此不再贅述。
步驟303,壓縮所述解析后的源代碼,去除注釋、空格和/或回車符。
這一步驟與第二實施例中的步驟203相同或相似,在此不再贅述。同樣地,步驟303可以先于步驟302執(zhí)行,也可以同時或后于步驟302執(zhí)行,在此并不特別限定。
步驟304,將替換后的所述源代碼生成可執(zhí)行代碼,并記錄所述替換后 元素名在所述可執(zhí)行代碼中的位置;
在這一步驟中,可與第一實施例步驟103相同或相似,在此不再贅述。
步驟305,記錄可執(zhí)行代碼的版本信息;
在這一步驟中,可以將該可執(zhí)行代碼的版本信息記錄在元素位置對照表中。生成版本信息的步驟例如可以使用現(xiàn)有的UUID軟件來實現(xiàn),然而本申請并不特別限制。
在這一實施例中,元素位置對照表例如包括:
文件名、版本號、新元素名稱、新元素行號、新元素列號、舊元素名稱、舊元素行號、舊元素列號。
值得注意的是,在本申請一實施例中,若壓縮后的抽象語法樹中回車符可能已被刪除,因此所有新元素可能位于同一行中,因此,可以顯示新元素行號為1,或者元素位置對照表中不包括新元素行號。
步驟306,獲取所述可執(zhí)行代碼在客戶端運(yùn)行中發(fā)生錯誤的錯誤報告;以及
步驟307,根據(jù)所述錯誤報告中包含的替換后元素名以及所述替換后元素名的位置,確定所對應(yīng)的源代碼的元素名以及所述源代碼的元素的位置。
這一步驟也可以與上一實施例中步驟104和105相同或相似,在此不再贅述。
優(yōu)選地,在步驟306的獲取所述可執(zhí)行代碼在客戶端運(yùn)行中發(fā)生錯誤的錯誤報告之后,以及步驟307的根據(jù)所述錯誤報告中包含的替換后元素名以及所述替換后元素名的位置,確定所對應(yīng)的替換前的元素名以及所述替換前的元素名的位置的步驟之前,所述方法還包括:
驗證所述上報至服務(wù)器的行為是否有效。
在這一步驟中,這一步驟可以通過在瀏覽器插件中安裝驗證信息,例如AccessKey,進(jìn)行驗證。只有驗證通過,才能進(jìn)行步驟307,即獲取所述錯誤報告中包含的替換后元素名以及所述替換后元素名的位置,查找確定所對應(yīng)的源代碼的元素名以及所述源代碼的元素的位置。如此可避免惡意的使用者竊取服務(wù)器中存儲的元素位置對應(yīng)表。
綜上所述,本申請實施例提出的針對混淆腳本語言的定位方法,能夠?qū)﹀e誤信息中的元素進(jìn)行定位,查找其在源代碼中的位置,避免了現(xiàn)有技術(shù)中代碼運(yùn)行發(fā)生錯誤后開發(fā)人員無法輕易定位到原始解析前的代碼中的位置的問題,為開發(fā)人員分析并修復(fù)錯誤提供了便利。
第四實施例
圖4所示為本申請第四實施例的針對混淆腳本語言的定位系統(tǒng)的方框圖。如圖4所示,本申請實施例提出的對混淆腳本語言的定位系統(tǒng)100可以包括:
代碼解析單元11,用于解析源代碼,并記錄所述源代碼中的元素名在所述源代碼中的位置;
代碼替換和記錄單元12,用于替換所述解析后源代碼中的元素名,并記錄替換前的元素名與對應(yīng)的替換后元素名的對應(yīng)關(guān)系;
代碼生成和記錄單元13,用于將替換后的源代碼生成可執(zhí)行代碼,并記錄所述替換后元素名在所述可執(zhí)行代碼中的位置;
錯誤報告獲取單元14,用于獲取所述可執(zhí)行代碼在客戶端運(yùn)行中發(fā)生錯誤的錯誤報告;以及
錯誤定位單元15,用于根據(jù)所述錯誤報告中包含的替換后元素名以及所述替換后元素名的位置,確定所對應(yīng)的替換前的元素名以及所述替換前的元素名的位置。
在本申請的另一優(yōu)選的實施例中,所述元素名可以包括:局部變量名和方法名。
在本申請的另一優(yōu)選的實施例中,所述代碼解析單元11具體用于將所述源代碼解析為抽象語法樹,并將所述源代碼中的元素名在所述源代碼中的位置記錄在所述抽象語法樹中對應(yīng)于所述元素的節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)內(nèi)。
在本申請的另一優(yōu)選的實施例中,所述代碼替換和記錄單元12具體用于:
替換所述解析后源代碼中的元素名;以及
將所述替換后元素名記錄在所述抽象語法樹中對應(yīng)于所述替換前的元素名的節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)內(nèi)。
在本申請的另一優(yōu)選的實施例中,所述代碼生成和記錄單元13具體用于:
將替換后的源代碼生成可執(zhí)行代碼;以及
在元素位置對照表中記錄所述替換后元素名在所述可執(zhí)行代碼中的位置,同時將所述替換后元素名對應(yīng)的替換前的元素名以及所述替換前的元素名的位置寫入所述元素位置對照表。
在本申請的另一優(yōu)選的實施例中,所述系統(tǒng)還包括:
代碼壓縮單元,用于壓縮所述解析后的源代碼,去除注釋、空格和/或回車符。
在本申請的另一優(yōu)選的實施例中,所述系統(tǒng)還包括:
代碼版本信息記錄單元,用于記錄可執(zhí)行代碼的版本信息。
在本申請的另一優(yōu)選的實施例中,所述代碼生成和記錄單元13具體用于:
在元素位置對照表中記錄所述替換后元素名在所述可執(zhí)行代碼中的位置,同時將所述替換后元素名對應(yīng)的替換前的元素名、所述替換前的元素名的位置、所述可執(zhí)行代碼的版本信息寫入所述元素位置對照表。
在本申請的另一優(yōu)選的實施例中,所述元素名的位置包括所述元素所在的行號和列號,所述元素位置對照表包括:
文件名、版本號、替換后元素名、替換后元素行號、替換后元素列號、源代碼中元素名、源代碼中元素行號以及源代碼中元素列號。
在本申請的另一優(yōu)選的實施例中,所述定位系統(tǒng)還包括:
驗證單元,用于驗證所述上報至服務(wù)器的行為是否有效。
通過上述實施例提出的針對混淆腳本語言的定位系統(tǒng),能夠?qū)﹀e誤信息中的元素進(jìn)行定位,查找其在源代碼中的位置,避免了現(xiàn)有技術(shù)中代碼運(yùn)行發(fā)生錯誤后開發(fā)人員無法輕易定位到原始解析前的代碼中的位置的問題,為開發(fā)人員分析并修復(fù)錯誤提供了便利。
對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
本說明書中的各個實施例均采用遞進(jìn)的方式描述,每個實施例重點(diǎn)說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請實施例的實施例可提供為方法、裝置、或計算機(jī)程序產(chǎn)品。因此,本申請實施例可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請實施例可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
在一個典型的配置中,所述計算機(jī)設(shè)備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內(nèi)存是計算機(jī)可讀介質(zhì)的示例。計算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信號存儲。信號可以是計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機(jī)的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲器(SRAM)、動態(tài)隨機(jī)存取存儲器(DRAM)、其他類型的隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信號。按照本文中的界定,計算機(jī)可讀介質(zhì)不包括非持續(xù)性的電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。
本申請實施例是參照根據(jù)本申請實施例的方法、終端設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令 實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備上,使得在計算機(jī)或其他可編程終端設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程終端設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本申請實施例的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請實施例范圍的所有變更和修改。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設(shè)備中還存在另外的相同要素。
以上對本申請所提供的一種針對混淆腳本語言的定位方法和系統(tǒng),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本申請的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本申請的限制。