亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種代碼處理方法、裝置及計(jì)算設(shè)備與流程

文檔序號(hào):11951456閱讀:155來源:國知局
一種代碼處理方法、裝置及計(jì)算設(shè)備與流程

本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,具體涉及一種代碼處理方法、裝置及計(jì)算設(shè)備。



背景技術(shù):

在應(yīng)用開發(fā)過程中,為保護(hù)應(yīng)用的開發(fā)代碼,需將使用開發(fā)代碼編譯的代碼文件進(jìn)行代碼混淆處理,從而生成應(yīng)用的安裝文件,以增加應(yīng)用的安裝文件被反編譯的難度,實(shí)現(xiàn)對(duì)開發(fā)代碼的保護(hù);如開發(fā)一個(gè)APK(Android Package,Android安裝包),為了更好地保護(hù)APK的開發(fā)代碼,則在編譯生成APK安裝文件時(shí),需對(duì)開發(fā)代碼編譯好的代碼文件進(jìn)行代碼混淆處理,如將開發(fā)代碼對(duì)應(yīng)的類名、函數(shù)名和變量名等混淆為字母。

目前為實(shí)現(xiàn)應(yīng)用的漏洞檢測、代碼定位等目的,通常需要對(duì)應(yīng)用的安裝文件進(jìn)行代碼分析;在對(duì)應(yīng)用的安裝文件進(jìn)行代碼分析時(shí),主要使用反編譯技術(shù),對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,分析反編譯后的代碼,從而實(shí)現(xiàn)代碼分析的目的。

本發(fā)明的發(fā)明人在研究過程中發(fā)現(xiàn),使用反編譯技術(shù),對(duì)應(yīng)用的安裝文件進(jìn)行反編譯后,反編譯后的代碼處于代碼混淆狀態(tài);這使得反編譯后的代碼的分析難度較大,導(dǎo)致分析得出的分析結(jié)果的準(zhǔn)確性不高。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明實(shí)施例提供一種代碼處理方法、裝置及計(jì)算設(shè)備,以為減小應(yīng)用安裝文件的代碼分析難度,提升分析結(jié)果的準(zhǔn)確性提供基礎(chǔ)。

為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供如下技術(shù)方案:

一種代碼處理方法,包括:

對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,得到反編譯后的代碼,所述反編譯后的代碼處于代碼混淆狀態(tài);

確定所述反編譯后的代碼中需分析的目標(biāo)代碼;

根據(jù)設(shè)定的映射文件對(duì)所述目標(biāo)代碼進(jìn)行反混淆處理,得到所述目標(biāo)代碼對(duì)應(yīng)的開發(fā)代碼;其中,所述映射文件記錄有開發(fā)代碼和對(duì)所述開發(fā)代碼進(jìn)行混淆處理后的混淆代碼的映射關(guān)系。

本發(fā)明實(shí)施例還提供一種代碼處理裝置,包括:

反編譯模塊,用于對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,得到反編譯后的代碼,所述反編譯后的代碼處于代碼混淆狀態(tài);

目標(biāo)代碼確定模塊,用于確定所述反編譯后的代碼中需分析的目標(biāo)代碼;

反混淆模塊,用于根據(jù)設(shè)定的映射文件對(duì)所述目標(biāo)代碼進(jìn)行反混淆處理,得到所述目標(biāo)代碼對(duì)應(yīng)的開發(fā)代碼;其中,所述映射文件記錄有開發(fā)代碼和對(duì)所述開發(fā)代碼進(jìn)行混淆處理后的混淆代碼的映射關(guān)系。

本發(fā)明實(shí)施例還提供一種計(jì)算設(shè)備,包括上述所述的代碼處理裝置。

基于上述技術(shù)方案,本發(fā)明實(shí)施例提供的代碼處理方法包括:對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,得到反編譯后的代碼;確定所述反編譯后的代碼中需分析的目標(biāo)代碼;根據(jù)設(shè)定的映射文件對(duì)所述目標(biāo)代碼進(jìn)行反混淆處理,得到所述目標(biāo)代碼對(duì)應(yīng)的開發(fā)代碼;其中,所述映射文件映射有開發(fā)代碼和對(duì)所述開發(fā)代碼進(jìn)行混淆處理后的混淆代碼的映射關(guān)系。采用本發(fā)明實(shí)施例提供的代碼處理方法,可得到應(yīng)用的開發(fā)代碼,通過分析所得到的開發(fā)代碼,可較為容易的對(duì)應(yīng)用的安裝文件中的代碼進(jìn)行分析,并且分析結(jié)果的準(zhǔn)確性較高;本發(fā)明實(shí)施例提供的代碼處理方法,可為減小應(yīng)用安裝文件的代碼分析難度,提升分析結(jié)果的準(zhǔn)確性提供基礎(chǔ),使得后續(xù)對(duì)應(yīng)用的安裝文件進(jìn)行代碼分析時(shí),可降低分析難度,且提升分析結(jié)果的準(zhǔn)確性。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不 付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。

圖1為本發(fā)明實(shí)施例提供的代碼處理方法的流程圖;

圖2為本發(fā)明實(shí)施例提供的設(shè)定映射文件的方法流程圖;

圖3為本發(fā)明實(shí)施例提供的代碼處理方法的另一流程圖;

圖4為本發(fā)明實(shí)施例提供的應(yīng)用的漏洞位置定位方法的流程圖;

圖5為本發(fā)明實(shí)施例提供的應(yīng)用例的示意圖;

圖6為本發(fā)明實(shí)施例提供的代碼處理裝置的結(jié)構(gòu)框圖;

圖7為本發(fā)明實(shí)施例提供的代碼處理裝置的另一結(jié)構(gòu)框圖;

圖8為本發(fā)明實(shí)施例提供的反混淆模塊的結(jié)構(gòu)框圖;

圖9為本發(fā)明實(shí)施例提供的反混淆模塊的另一結(jié)構(gòu)框圖;

圖10為本發(fā)明實(shí)施例提供的目標(biāo)代碼確定模塊的結(jié)構(gòu)框圖;

圖11為本發(fā)明實(shí)施例提供的代碼處理裝置的再一結(jié)構(gòu)框圖;

圖12為本發(fā)明實(shí)施例提供的計(jì)算設(shè)備的硬件結(jié)構(gòu)框圖。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

圖1為本發(fā)明實(shí)施例提供的代碼處理方法的流程圖,該方法可應(yīng)用于具有數(shù)據(jù)處理能力的計(jì)算設(shè)備中,如手機(jī)、筆記本電腦、PC(個(gè)人計(jì)算機(jī))等用戶設(shè)備,也可以如服務(wù)器等網(wǎng)絡(luò)側(cè)設(shè)備;參照?qǐng)D1,該方法可以包括:

步驟S100、對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,得到反編譯后的代碼;

由于應(yīng)用的安裝文件為經(jīng)過代碼混淆處理后生成的,因此對(duì)應(yīng)用的安裝文件進(jìn)行反編譯后,所得到的反編譯后的代碼也是處于代碼混淆狀態(tài)的;

可選的,反編譯后的代碼可以為smali代碼或者Java代碼等,本發(fā)明實(shí)施例可選用特定代碼類型的反編譯器對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,從而得到特定代碼類型的反編譯后的代碼。

步驟S110、確定所述反編譯后的代碼中需分析的目標(biāo)代碼;

可選的,目標(biāo)代碼的選取可視實(shí)際需求而定;

如本發(fā)明實(shí)施例提供的代碼處理方法的應(yīng)用需求為進(jìn)行應(yīng)用的漏洞位置定位,則目標(biāo)代碼可以為反編譯后的代碼中的漏洞代碼;

如本發(fā)明實(shí)施例提供的代碼處理方法的應(yīng)用需求為進(jìn)行代碼分析,則可指定反編譯后的代碼中的某部分用戶感興趣的代碼為目標(biāo)代碼,也可指定所有的反編譯后的代碼為目標(biāo)代碼。

步驟S120、根據(jù)設(shè)定的映射文件對(duì)所述目標(biāo)代碼進(jìn)行反混淆處理,得到所述目標(biāo)代碼對(duì)應(yīng)的開發(fā)代碼;其中,所述映射文件記錄有開發(fā)代碼和對(duì)所述開發(fā)代碼進(jìn)行混淆處理后的混淆代碼的映射關(guān)系。

可選的,本發(fā)明實(shí)施例可在對(duì)應(yīng)用的開發(fā)代碼進(jìn)行代碼混淆處理時(shí),通過映射文件記錄開發(fā)代碼和混淆代碼的映射關(guān)系,所記錄的混淆代碼為對(duì)開發(fā)代碼進(jìn)行代碼混淆處理后生成的;

以代碼對(duì)應(yīng)的類名、變量名和函數(shù)名等元素為例,則在對(duì)開發(fā)代碼進(jìn)行代碼混淆處理時(shí),可通過映射文件記錄開發(fā)代碼對(duì)應(yīng)的類名及混淆處理后的類名、開發(fā)代碼對(duì)應(yīng)的變量名及混淆處理后的變量名、開發(fā)代碼對(duì)應(yīng)的函數(shù)名及混淆處理后的函數(shù)名;映射文件的基本格式如下,可參照:

開發(fā)代碼對(duì)應(yīng)的類名->混淆后類名:

開發(fā)代碼對(duì)應(yīng)的變量名->混淆后變量名

開發(fā)代碼對(duì)應(yīng)的函數(shù)名->混淆后函數(shù)名。

可選的,在設(shè)定所述映射文件后,可根據(jù)所述映射文件對(duì)處于代碼混淆狀態(tài)的目標(biāo)代碼進(jìn)行反混淆處理,得到代碼混淆狀態(tài)的目標(biāo)代碼所對(duì)應(yīng)的開發(fā)代碼(該開發(fā)代碼為應(yīng)用的源代碼,未經(jīng)過代碼混淆處理);

如對(duì)應(yīng)用的安裝文件進(jìn)行反編譯后,可從反編譯后的處于代碼混淆狀態(tài)的類名、變量名、函數(shù)名中確定目標(biāo)類名、目標(biāo)變量名、目標(biāo)函數(shù)名(目標(biāo)類名、目標(biāo)變量名、目標(biāo)函數(shù)名也處于代碼混淆狀態(tài));進(jìn)而根據(jù)所述映射文件對(duì)目標(biāo)類名、目標(biāo)變量名、目標(biāo)函數(shù)名進(jìn)行反混淆處理,得到對(duì)應(yīng)的開發(fā)代碼的類名、變量名、函數(shù)名;

由于對(duì)目標(biāo)代碼進(jìn)行反混淆處理后,所得到的是應(yīng)用的開發(fā)代碼,而開發(fā)代碼為應(yīng)用的源代碼,并沒有經(jīng)過代碼混淆處理;因此通過所得到的開發(fā)代碼,可較為容易的對(duì)應(yīng)用的安裝文件中的代碼進(jìn)行分析,并且分析結(jié)果的 準(zhǔn)確性較高。

本發(fā)明實(shí)施例提供的代碼處理方法包括:對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,得到反編譯后的代碼;確定所述反編譯后的代碼中需分析的目標(biāo)代碼;根據(jù)設(shè)定的映射文件對(duì)所述目標(biāo)代碼進(jìn)行反混淆處理,得到所述目標(biāo)代碼對(duì)應(yīng)的開發(fā)代碼;其中,所述映射文件映射有開發(fā)代碼和對(duì)所述開發(fā)代碼進(jìn)行混淆處理后的混淆代碼的映射關(guān)系。采用本發(fā)明實(shí)施例提供的代碼處理方法,可得到應(yīng)用的開發(fā)代碼,通過分析所得到的開發(fā)代碼,可較為容易的對(duì)應(yīng)用的安裝文件中的代碼進(jìn)行分析,并且分析結(jié)果的準(zhǔn)確性較高;本發(fā)明實(shí)施例提供的代碼處理方法,可為減小應(yīng)用安裝文件的代碼分析難度,提升分析結(jié)果的準(zhǔn)確性提供基礎(chǔ),使得后續(xù)對(duì)應(yīng)用的安裝文件進(jìn)行代碼分析時(shí),可降低分析難度,且提升分析結(jié)果的準(zhǔn)確性。

可選的,在對(duì)開發(fā)代碼進(jìn)行代碼混淆處理的過程中,本發(fā)明實(shí)施例可生成記錄有開發(fā)代碼和對(duì)所述開發(fā)代碼進(jìn)行混淆處理后的混淆代碼的映射關(guān)系的映射文件;圖2示出了本發(fā)明實(shí)施例提供的設(shè)定映射文件的方法流程,參照?qǐng)D2,該方法可以包括:

步驟S200、在對(duì)所述應(yīng)用的開發(fā)代碼進(jìn)行代碼混淆處理時(shí),確定混淆處理的初始結(jié)果,所述初始結(jié)果包括混淆代碼和混淆過程參數(shù);其中,所述混淆過程參數(shù)用于標(biāo)識(shí)混淆代碼唯一對(duì)應(yīng)的開發(fā)代碼;

可選的,在對(duì)開發(fā)代碼進(jìn)行代碼混淆處理后,開發(fā)代碼將轉(zhuǎn)變?yōu)榛煜a和混淆過程參數(shù);其中混淆過程參數(shù)包括:混淆返回值,混淆使用參數(shù)類型,混淆使用參數(shù)數(shù)量等;而通過混淆返回值,混淆使用參數(shù)類型,混淆使用參數(shù)數(shù)量等混淆過程參數(shù)可唯一標(biāo)識(shí)混淆代碼,使得被混淆過程參數(shù)標(biāo)識(shí)的混淆代碼可對(duì)應(yīng)未被代碼混淆處理時(shí)的開發(fā)代碼;

如開發(fā)代碼為A,則對(duì)開發(fā)代碼A進(jìn)行代碼混淆處理后,可得到混淆返回值,混淆使用參數(shù)類型,混淆使用參數(shù)數(shù)量等混淆過程參數(shù),及混淆代碼a;通過混淆過程參數(shù)可標(biāo)識(shí)混淆代碼a唯一對(duì)應(yīng)的開發(fā)代碼A,而不會(huì)使得混淆代碼a對(duì)應(yīng)至其他的開發(fā)代碼。

步驟S210、隱藏所述混淆過程參數(shù),建立開發(fā)代碼與對(duì)應(yīng)的混淆代碼的映射關(guān)系。

在得到混淆代碼和混淆過程參數(shù)后,可對(duì)混淆過程參數(shù)進(jìn)行隱藏,得到 代碼混淆處理的最終結(jié)果,即混淆代碼,從而實(shí)現(xiàn)對(duì)應(yīng)用的開發(fā)代碼的保護(hù);本發(fā)明實(shí)施例可記錄并隱藏混淆過程參數(shù),并建立開發(fā)代碼與對(duì)應(yīng)的混淆代碼的映射關(guān)系,從而生成所述映射文件。

可選的,本發(fā)明實(shí)施例可直接使用映射文件所建立的開發(fā)代碼與對(duì)應(yīng)的混淆代碼的映射關(guān)系,實(shí)現(xiàn)對(duì)目標(biāo)代碼的反混淆處理;即在確定目標(biāo)代碼后,可根據(jù)映射文件所建立的開發(fā)代碼與對(duì)應(yīng)的混淆代碼的映射關(guān)系,確定所述目標(biāo)代碼所對(duì)應(yīng)的開發(fā)代碼;

如所確定的目標(biāo)代碼為a,而映射文件中記錄有混淆代碼a對(duì)應(yīng)的開發(fā)代碼為A,則直接可確定目標(biāo)代碼a對(duì)應(yīng)的開發(fā)代碼為A。

可選的,為提升對(duì)目標(biāo)代碼作反混淆處理的結(jié)果準(zhǔn)確性,本發(fā)明實(shí)施例可通過目標(biāo)代碼對(duì)應(yīng)的混淆過程參數(shù),對(duì)目標(biāo)代碼進(jìn)行反混淆處理,從而得到目標(biāo)代碼對(duì)應(yīng)的開發(fā)代碼。對(duì)應(yīng)的,圖3示出了本發(fā)明實(shí)施例提供的代碼處理方法的另一流程圖,參照?qǐng)D3,該方法可以包括:

步驟S300、對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,得到反編譯后的代碼,所述反編譯后的代碼處于代碼混淆狀態(tài);

步驟S310、確定所述反編譯后的代碼中需分析的目標(biāo)代碼;

步驟S320、根據(jù)設(shè)定的映射文件恢復(fù)所述目標(biāo)代碼對(duì)應(yīng)的混淆過程參數(shù),根據(jù)所述目標(biāo)代碼及對(duì)應(yīng)的混淆過程參數(shù),將所述目標(biāo)代碼反混淆處理為對(duì)應(yīng)的開發(fā)代碼。

如目標(biāo)代碼為a,映射文件中記錄有混淆代碼a及隱藏的對(duì)應(yīng)的混淆過程參數(shù);則可恢復(fù)所隱藏的混淆過程參數(shù),通過所恢復(fù)的混淆過程參數(shù)與目標(biāo)代碼a,將目標(biāo)代碼a反混淆處理為,該混淆過程參數(shù)所唯一標(biāo)識(shí)的目標(biāo)代碼a對(duì)應(yīng)的開發(fā)代碼A。

可選的,本發(fā)明實(shí)施例提供的代碼處理方法可應(yīng)用于應(yīng)用的漏洞檢測,從而定位到應(yīng)用的漏洞所在的位置(如漏洞所在文件、所在類、所在函數(shù)和變量名等)。圖4為本發(fā)明實(shí)施例提供的應(yīng)用的漏洞位置定位方法的流程圖,圖4所示方法示出了本發(fā)明實(shí)施例提供的代碼處理方法,在應(yīng)用的漏洞位置定位中的應(yīng)用;參照?qǐng)D4,該方法可以包括:

步驟S400、對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,得到反編譯后的代碼,所述反編譯后的代碼處于代碼混淆狀態(tài);

步驟S410、對(duì)所述反編譯后的代碼進(jìn)行漏洞分析,確定漏洞代碼;

可選的,漏洞代碼的分析方式包括靜態(tài)檢測分析和動(dòng)態(tài)檢測分析;

以靜態(tài)檢測分析為例,在得到所述反編譯后的代碼后,本發(fā)明實(shí)施例可調(diào)取設(shè)定的漏洞代碼特征,對(duì)所述反編譯后的代碼進(jìn)行掃描;將掃描得到的所述反編譯后的代碼中,與所述漏洞代碼特征對(duì)應(yīng)的代碼,確定為漏洞代碼。

步驟S420、根據(jù)設(shè)定的映射文件對(duì)所述漏洞代碼進(jìn)行反混淆處理,得到所述漏洞代碼對(duì)應(yīng)的開發(fā)代碼;其中,所述映射文件記錄有開發(fā)代碼和對(duì)所述開發(fā)代碼進(jìn)行混淆處理后的混淆代碼的映射關(guān)系;

可選的,開發(fā)代碼的具體反混淆處理過程,可參照上文相應(yīng)部分。

步驟S430、以所得到的所述漏洞代碼對(duì)應(yīng)的開發(fā)代碼定位所述應(yīng)用的漏洞位置。

可選的,可以所得到的開發(fā)代碼的所在文件、所在類、所在函數(shù)定位所述應(yīng)用的漏洞位置;顯然,根據(jù)實(shí)際情況,也可能僅是采用開發(fā)代碼的所在文件、所在類、所在函數(shù)中的至少一項(xiàng)來定位應(yīng)用的漏洞位置。

需要說明的是,目前應(yīng)用的漏洞定位方式主要為:對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,在從反編譯后的代碼中定位漏洞代碼后,直接以漏洞代碼的位置定位應(yīng)用的漏洞位置;然而由于反編譯后的代碼處于代碼混淆狀態(tài),因此以漏洞代碼的位置所定位的應(yīng)用漏洞位置的準(zhǔn)確性較低;同時(shí),同一應(yīng)用可能存在多個(gè)不同的版本,而同一應(yīng)用的不同版本的同一開發(fā)代碼的代碼混淆處理結(jié)果可能不同,這將導(dǎo)致同一應(yīng)用的不同版本的安裝文件的反編譯結(jié)果可能不同,而為保證應(yīng)用漏洞的定位準(zhǔn)確性,目前對(duì)同一應(yīng)用的不同版本的安裝文件需進(jìn)行重復(fù)的漏洞定位,這導(dǎo)致應(yīng)用漏洞定位的工作量較大。

而采用本發(fā)明實(shí)施例提供的應(yīng)用的漏洞位置定位方法,對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,確定反編譯后的代碼中的漏洞代碼后,并不是直接以所確定的漏洞代碼的位置進(jìn)行應(yīng)用的漏洞定位;而是再對(duì)所述漏洞代碼進(jìn)行反混淆處理,得到所述漏洞代碼對(duì)應(yīng)的開發(fā)代碼,通過開發(fā)代碼來定位應(yīng)用的漏洞位置;本發(fā)明實(shí)施例通過開發(fā)代碼來定位應(yīng)用的漏洞位置(可選的,可采用開發(fā)代碼的所在文件、所在類、所在函數(shù)定位應(yīng)用的漏洞位置),避免了由于定位應(yīng)用的漏洞位置的代碼處于代碼混淆狀態(tài),所帶來的定位準(zhǔn)確性較低的問題;同時(shí),同一應(yīng)用的不同版本的漏洞定位依據(jù)是相同的(均是采用開 發(fā)代碼),不會(huì)因?yàn)橥粦?yīng)用的不同版本的開發(fā)代碼的混淆處理結(jié)果不同,而出現(xiàn)重復(fù)定位應(yīng)用漏洞的情況。

以Andorid系統(tǒng)的漏洞位置定位為例,本發(fā)明實(shí)施例可將Andorid的安裝文件(APK)反編譯為Java代碼或者Smali代碼;對(duì)反編譯后的Java代碼或者Smali代碼進(jìn)行靜態(tài)檢測分析,確定反編譯后的Java代碼或者Smali代碼中的漏洞代碼(如檢測到的漏洞類名、方法名和變量名);根據(jù)設(shè)定的映射文件,將漏洞代碼反混淆處理為Andorid系統(tǒng)的開發(fā)代碼(如Andorid系統(tǒng)的源Java代碼等);以所得到的開發(fā)代碼的所在文件、所在類、所在函數(shù)等,來唯一認(rèn)定漏洞的所在位置,從而保證不同版本的同一應(yīng)用的漏洞所在位置相一致,減少重復(fù)認(rèn)定漏洞位置的情況。

下面對(duì)本發(fā)明實(shí)施例提供的應(yīng)用的漏洞位置定位的一個(gè)應(yīng)用例進(jìn)行介紹,如圖5所示,本發(fā)明實(shí)施例可設(shè)置漏洞檢測服務(wù)器10;

開發(fā)人員需對(duì)某一應(yīng)用進(jìn)行漏洞檢測時(shí),可將應(yīng)用安裝文件和相應(yīng)的映射文件提交至漏洞檢測服務(wù)器10;

漏洞檢測服務(wù)器10可對(duì)對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,得到反編譯后的代碼;對(duì)所述反編譯后的代碼進(jìn)行漏洞分析,確定漏洞代碼;根據(jù)設(shè)定的映射文件對(duì)所述漏洞代碼進(jìn)行反混淆處理,得到所述漏洞代碼對(duì)應(yīng)的開發(fā)代碼,以所得到的開發(fā)代碼定位所述應(yīng)用的漏洞位置;同時(shí)生成具有該開發(fā)代碼所定位的漏洞位置的安全檢測報(bào)告。安全檢測報(bào)告中對(duì)應(yīng)用的漏洞位置作了唯一認(rèn)定,可以減小后續(xù)重復(fù)認(rèn)定應(yīng)用的漏洞位置,及重復(fù)生成安全檢測報(bào)告的操作。

上文介紹了本發(fā)明實(shí)施例提供的代碼處理方法在應(yīng)用的漏洞位置定位中的應(yīng)用,顯然本發(fā)明實(shí)施例提供的代碼處理方法的應(yīng)用不限于應(yīng)用的漏洞位置定位,還可適用于其他的代碼分析場景;根據(jù)實(shí)際的代碼分析場景,本發(fā)明實(shí)施例還可設(shè)置相應(yīng)的代碼分析邏輯,以對(duì)通過本發(fā)明實(shí)施例提供的代碼處理方法所得到的開發(fā)代碼進(jìn)行分析。

下面對(duì)本發(fā)明實(shí)施例提供的代碼處理裝置進(jìn)行介紹,下文描述的代碼處理裝置可與上文描述的代碼處理方法相互對(duì)應(yīng)參照。

圖6為本發(fā)明實(shí)施例提供的代碼處理裝置的結(jié)構(gòu)框圖,該代碼處理裝置可 應(yīng)用于計(jì)算設(shè)備中,計(jì)算設(shè)備可如手機(jī)、筆記本電腦、PC(個(gè)人計(jì)算機(jī))等用戶設(shè)備,也可以如服務(wù)器等網(wǎng)絡(luò)側(cè)設(shè)備;參照?qǐng)D6,該代碼處理裝置可以包括:

反編譯模塊100,用于對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,得到反編譯后的代碼,所述反編譯后的代碼處于代碼混淆狀態(tài);

目標(biāo)代碼確定模塊200,用于確定所述反編譯后的代碼中需分析的目標(biāo)代碼;

反混淆模塊300,用于根據(jù)設(shè)定的映射文件對(duì)所述目標(biāo)代碼進(jìn)行反混淆處理,得到所述目標(biāo)代碼對(duì)應(yīng)的開發(fā)代碼;其中,所述映射文件記錄有開發(fā)代碼和對(duì)所述開發(fā)代碼進(jìn)行混淆處理后的混淆代碼的映射關(guān)系。

可選的,圖7示出了本發(fā)明實(shí)施例提供的代碼處理裝置的另一結(jié)構(gòu),結(jié)合圖6和圖7所示,該代碼處理裝置還可以包括:

映射文件生成模塊400,用于在對(duì)所述應(yīng)用的開發(fā)代碼進(jìn)行代碼混淆處理時(shí),確定混淆處理的初始結(jié)果,所述初始結(jié)果包括混淆代碼和混淆過程參數(shù);其中,所述混淆過程參數(shù)用于標(biāo)識(shí)混淆代碼唯一對(duì)應(yīng)的開發(fā)代碼;隱藏所述混淆過程參數(shù),建立開發(fā)代碼與對(duì)應(yīng)的混淆代碼的映射關(guān)系。

對(duì)應(yīng)的,圖8示出了本發(fā)明實(shí)施例提供的反混淆模塊300的一種可選結(jié)構(gòu),參照?qǐng)D8,反混淆模塊300可以包括:

第一反混淆執(zhí)行單元310,用于根據(jù)所建立的開發(fā)代碼與對(duì)應(yīng)的混淆代碼的映射關(guān)系,確定所述目標(biāo)代碼所對(duì)應(yīng)的開發(fā)代碼。

圖9示出了本發(fā)明實(shí)施例提供的反混淆模塊300的另一種可選結(jié)構(gòu),參照?qǐng)D9,反混淆模塊300可以包括:

第二反混淆執(zhí)行單元320,用于恢復(fù)所述目標(biāo)代碼對(duì)應(yīng)的混淆過程參數(shù),根據(jù)所述目標(biāo)代碼及對(duì)應(yīng)的混淆過程參數(shù),將所述目標(biāo)代碼反混淆處理為對(duì)應(yīng)的開發(fā)代碼。

可選的,本發(fā)明實(shí)施例提供的代碼處理裝置可應(yīng)用于應(yīng)用的漏洞位置定位場景,對(duì)應(yīng)的,所述目標(biāo)代碼為所述應(yīng)用中的漏洞代碼;

圖10示出了本發(fā)明實(shí)施例提供的目標(biāo)代碼確定模塊200的一種可選結(jié)構(gòu),參照?qǐng)D10,目標(biāo)代碼確定模塊200可以包括:

漏洞代碼確定單元210,用于對(duì)所述反編譯后的代碼進(jìn)行漏洞分析,確定 漏洞代碼。

可選的,圖11示出了本發(fā)明實(shí)施例提供的代碼處理裝置的再一結(jié)構(gòu)框圖,結(jié)合圖6和圖11所示,該代碼處理裝置還可以包括:

位置定位模塊500,用于以所得到的所述漏洞代碼對(duì)應(yīng)的開發(fā)代碼定位所述應(yīng)用的漏洞位置。

可選的,可以所得到的開發(fā)代碼的所在文件、所在類、所在函數(shù)定位所述應(yīng)用的漏洞位置;顯然,根據(jù)實(shí)際情況,也可能僅是采用開發(fā)代碼的所在文件、所在類、所在函數(shù)中的至少一項(xiàng)來定位應(yīng)用的漏洞位置。

可選的,漏洞代碼確定單元210在確定漏洞代碼時(shí)具體可用于,根據(jù)設(shè)定的漏洞代碼特征,對(duì)所述反編譯后的代碼進(jìn)行掃描;將掃描得到的所述反編譯后的代碼中,與所述漏洞代碼特征對(duì)應(yīng)的代碼,確定為漏洞代碼。

采用本發(fā)明實(shí)施例提供的代碼處理裝置,可得到應(yīng)用的開發(fā)代碼,通過分析所得到的開發(fā)代碼可較為容易的對(duì)應(yīng)用安裝文件中的代碼進(jìn)行分析,并且分析結(jié)果的準(zhǔn)確性較高;因此本發(fā)明實(shí)施例提供的代碼處理裝置,可為減小應(yīng)用安裝文件的代碼分析難度,提升分析結(jié)果的準(zhǔn)確性提供基礎(chǔ),使得后續(xù)對(duì)應(yīng)用的安裝文件進(jìn)行代碼分析時(shí),可降低分析難度,且提升分析結(jié)果的準(zhǔn)確性。

本發(fā)明實(shí)施例還提供一種計(jì)算設(shè)備,該計(jì)算設(shè)備可以包括上述所述的代碼處理裝置。

圖12示出了本發(fā)明實(shí)施例提供的計(jì)算設(shè)備的硬件結(jié)構(gòu)框圖,該計(jì)算設(shè)備可以如手機(jī)、筆記本電腦、PC(個(gè)人計(jì)算機(jī))等用戶設(shè)備,也可以如服務(wù)器等網(wǎng)絡(luò)側(cè)設(shè)備;參照?qǐng)D12,該計(jì)算設(shè)備可以包括:處理器1,通信接口2,存儲(chǔ)器3和通信總線4;

其中處理器1、通信接口2、存儲(chǔ)器3通過通信總線4完成相互間的通信;

可選的,通信接口2可以為通信模塊的接口,如GSM模塊的接口;

處理器1,用于執(zhí)行程序;

存儲(chǔ)器3,用于存放程序;

程序可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。

處理器1可能是一個(gè)中央處理器CPU,或者是特定集成電路ASIC(Application Specific Integrated Circuit),或者是被配置成實(shí)施本發(fā)明實(shí)施例 的一個(gè)或多個(gè)集成電路。

存儲(chǔ)器3可能包含高速RAM存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤存儲(chǔ)器。

其中,程序可具體用于:

對(duì)應(yīng)用的安裝文件進(jìn)行反編譯,得到反編譯后的代碼,所述反編譯后的代碼處于代碼混淆狀態(tài);

確定所述反編譯后的代碼中需分析的目標(biāo)代碼;

根據(jù)設(shè)定的映射文件對(duì)所述目標(biāo)代碼進(jìn)行反混淆處理,得到所述目標(biāo)代碼對(duì)應(yīng)的開發(fā)代碼;其中,所述映射文件記錄有開發(fā)代碼和對(duì)所述開發(fā)代碼進(jìn)行混淆處理后的混淆代碼的映射關(guān)系。

本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對(duì)于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。

專業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。

結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。

對(duì)所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例, 而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1