午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種文件轉(zhuǎn)換方法和裝置與流程

文檔序號(hào):12906370閱讀:522來(lái)源:國(guó)知局
一種文件轉(zhuǎn)換方法和裝置與流程

本發(fā)明涉及信息安全技術(shù)領(lǐng)域,具體涉及一種文件轉(zhuǎn)換方法和裝置。



背景技術(shù):

隨著互聯(lián)網(wǎng)技術(shù)和移動(dòng)終端技術(shù)的發(fā)展,移動(dòng)終端安全問(wèn)題和安全隱患也隨之愈來(lái)愈嚴(yán)重。尤其是安裝了android系統(tǒng)的移動(dòng)終端,基于android系統(tǒng)源代碼的開(kāi)放性,其開(kāi)發(fā)的應(yīng)用程序存在的風(fēng)險(xiǎn)更是備受關(guān)注。android系統(tǒng)雖然也有精心設(shè)計(jì)的安全體系,但是攻擊者仍然可以利用漏洞來(lái)繞過(guò)某些防護(hù)機(jī)制。

由于這個(gè)特性,大量惡意代碼和安全事件往往圍繞安全漏洞展開(kāi),由此可見(jiàn)安全漏洞是影響android安全性的關(guān)鍵因素,而如何有效挖掘android系統(tǒng)的安全漏洞,是技術(shù)人員面臨的亟需解決的技術(shù)問(wèn)題。



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

本發(fā)明提供了一種文件轉(zhuǎn)換方法和裝置,以對(duì)android系統(tǒng)的安全漏洞進(jìn)行挖掘,增強(qiáng)安裝了android系統(tǒng)的移動(dòng)終端的安全性,保護(hù)用戶(hù)隱私數(shù)據(jù)免遭攻擊者竊取。

根據(jù)本發(fā)明的一個(gè)方面,提供了一種文件轉(zhuǎn)換方法,應(yīng)用于二進(jìn)制文件分析框架angr中,包括:

獲取待檢測(cè)的android應(yīng)用的dex文件;

將所述dex文件轉(zhuǎn)換為所述angr框架支持的二進(jìn)制格式的第一文件;

加載所述第一文件到所述angr框架中并對(duì)所述第一文件進(jìn)行符號(hào)執(zhí)行分析,根據(jù)所述符號(hào)執(zhí)行分析結(jié)果輔助判斷所述android應(yīng)用是否存在漏洞。

根據(jù)本發(fā)明的另一個(gè)方面,提供了一種文件轉(zhuǎn)換裝置,應(yīng)用于二進(jìn)制文件分析框架angr中,包括:

文件獲取模塊,用于獲取待檢測(cè)的android應(yīng)用的dex文件;

文件轉(zhuǎn)換模塊,用于將所述dex文件轉(zhuǎn)換為所述angr框架支持的二進(jìn)制格式的第一文件;

檢測(cè)確定模塊,用于加載所述第一文件到所述angr框架中并對(duì)所述第一文件進(jìn)行符號(hào)執(zhí)行分析,根據(jù)所述符號(hào)執(zhí)行分析結(jié)果輔助判斷所述android應(yīng)用是否存在漏洞。

本發(fā)明的有益效果是:本發(fā)明實(shí)施例的文件轉(zhuǎn)換方法和裝置,應(yīng)用于二進(jìn)制文件分析框架angr中,通過(guò)獲取待檢測(cè)android應(yīng)用的dex文件,將dex文件轉(zhuǎn)換為angr框架支持的二進(jìn)制格式的第一文件,然后加載第一文件到angr框架中對(duì)第一文件進(jìn)行符號(hào)執(zhí)行分析,根據(jù)符號(hào)執(zhí)行分析結(jié)果輔助判斷待檢測(cè)android應(yīng)用是否存在漏洞。如此,解決了由于現(xiàn)有angr框架不支持android應(yīng)用的字節(jié)碼文件進(jìn)而不能利用angr框架對(duì)android應(yīng)用進(jìn)行符號(hào)執(zhí)行分析的問(wèn)題。而且,為android應(yīng)用的漏洞檢測(cè)提供了新的解決方案,增強(qiáng)了安裝android系統(tǒng)的移動(dòng)終端的安全性,保護(hù)用戶(hù)隱私數(shù)據(jù)免遭竊取和泄露,改善了移動(dòng)終端的用戶(hù)體驗(yàn)。

附圖說(shuō)明

圖1是本發(fā)明一個(gè)實(shí)施例的一種文件轉(zhuǎn)換方法的流程示意圖;

圖2是本發(fā)明一個(gè)實(shí)施例的文件獲取流程示意圖;

圖3是apk文件轉(zhuǎn)換的流程示意圖;

圖4是dex文件的轉(zhuǎn)換流程示意圖;

圖5是本發(fā)明一個(gè)實(shí)施例的一種文件轉(zhuǎn)換裝置的結(jié)構(gòu)框圖。

具體實(shí)施方式

本發(fā)明的設(shè)計(jì)構(gòu)思在于:angr框架可以對(duì)不同類(lèi)型的二進(jìn)制文件進(jìn)行符號(hào)執(zhí)行分析,它的加載器可以加載多種類(lèi)型的二進(jìn)制文件,并且可以根據(jù)二進(jìn)制文件的類(lèi)型自動(dòng)識(shí)別和匹配合適的后端裝載器。但是由于android字節(jié)碼的特殊性(即,android字節(jié)碼運(yùn)行在dalvik虛擬機(jī)中,與java不同,java字節(jié)碼運(yùn)行在jvm虛擬機(jī)中),angr框架的加載器不能識(shí)別android應(yīng)用的可執(zhí)行文件,即,android應(yīng)用的可執(zhí)行文件dex文件無(wú)法被angr成功加載。由于上述原因的存在,導(dǎo)致angr框架無(wú)法對(duì)android應(yīng)用進(jìn)行符號(hào)執(zhí)行分析進(jìn)而不能檢測(cè)android應(yīng)用是否存在漏洞。

本發(fā)明實(shí)施例主要是通過(guò)對(duì)android應(yīng)用的可執(zhí)行文件進(jìn)行處理,使其能夠成功加載到angr框架,從而使angr能夠適用于移動(dòng)終端的android系統(tǒng),對(duì)其進(jìn)行基于符號(hào)執(zhí)行的漏洞檢測(cè),幫助提升android系統(tǒng)的安全性。

為便于理解,這里對(duì)本發(fā)明實(shí)施例中的幾個(gè)技術(shù)名詞進(jìn)行簡(jiǎn)要說(shuō)明。

angr框架:angr是二進(jìn)制自動(dòng)化分析框架,其中集成了很多二進(jìn)制分析技術(shù),具備對(duì)二進(jìn)制程序的動(dòng)態(tài)符號(hào)執(zhí)行能力和靜態(tài)分析能力。angr起初是用來(lái)尋找程序中的后門(mén),現(xiàn)在可以應(yīng)用于漏洞分析領(lǐng)域。angr基于python架構(gòu),其兼容性較好,同時(shí)支持跨平臺(tái)、跨架構(gòu),目前可以分析多種二進(jìn)制文件。

符號(hào)執(zhí)行:符號(hào)執(zhí)行是一種代碼執(zhí)行空間遍歷技術(shù),在軟件安全、惡意代碼分析、程序調(diào)試等領(lǐng)域有著重要應(yīng)用。符號(hào)執(zhí)行是用抽象符號(hào)代替程序變量,根據(jù)程序的語(yǔ)義,在每條路徑上通過(guò)符號(hào)計(jì)算引擎對(duì)抽象符號(hào)等做語(yǔ)義操作,模擬程序執(zhí)行。符號(hào)執(zhí)行分為過(guò)程內(nèi)分析和過(guò)程間分析,基于是否實(shí)際執(zhí)行也可分為靜態(tài)符號(hào)執(zhí)行與動(dòng)態(tài)符號(hào)執(zhí)行。

angr框架符號(hào)執(zhí)行包括四個(gè)部分:可以加載幾乎任何二進(jìn)制文件的加載工具;將二進(jìn)制文件轉(zhuǎn)換為中間語(yǔ)言的轉(zhuǎn)換工具;對(duì)中間語(yǔ)言進(jìn)行符號(hào)執(zhí)行的符號(hào)執(zhí)行工具以及約束求解工具。

android應(yīng)用:android是一種基于linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦。android應(yīng)用是指運(yùn)行于android操作系統(tǒng)的應(yīng)用程序,包括系統(tǒng)應(yīng)用和普通應(yīng)用。

圖1是本發(fā)明一個(gè)實(shí)施例的一種文件轉(zhuǎn)換方法的流程示意圖,參見(jiàn)圖1,本實(shí)施例的文件轉(zhuǎn)換方法,應(yīng)用于二進(jìn)制文件分析框架angr中,包括:

步驟s101,獲取待檢測(cè)的android應(yīng)用的dex文件;

dex是dalvikvmexecutes的簡(jiǎn)稱(chēng),dex是android平臺(tái)上(dalvik虛擬機(jī))的可執(zhí)行文件,相當(dāng)于windows平臺(tái)中的exe文件,每個(gè)apk(androidpackage)安裝包中都有dex文件,里面包含了該應(yīng)用的所有源碼,通過(guò)反編譯工具可以獲取到相應(yīng)的java源碼。

步驟s102,將所述dex文件轉(zhuǎn)換為所述angr框架支持的二進(jìn)制格式的第一文件;

步驟s103,加載所述第一文件到所述angr框架中并對(duì)所述第一文件進(jìn)行符號(hào)執(zhí)行分析,根據(jù)所述符號(hào)執(zhí)行分析結(jié)果輔助判斷所述android應(yīng)用是否存在漏洞。

由圖1所示可知,本實(shí)施例的文件轉(zhuǎn)換方法,獲取android應(yīng)用的dex文件,將dex文件轉(zhuǎn)換為angr框架支持的二進(jìn)制格式的第一文件,并加載到angr框架中,對(duì)第一文件進(jìn)行符號(hào)執(zhí)行分析,根據(jù)符號(hào)執(zhí)行分析結(jié)果輔助判斷待檢測(cè)android應(yīng)用是否存在漏洞。解決了目前angr框架不能識(shí)別android應(yīng)用的可執(zhí)行文件,無(wú)法對(duì)android應(yīng)用進(jìn)行符號(hào)執(zhí)行分析的問(wèn)題,為android應(yīng)用的漏洞檢測(cè)提供了新的解決方案,幫助提升android應(yīng)用的安全性,避免android移動(dòng)終端的用戶(hù)隱私數(shù)據(jù)被攻擊者竊取,改善android移動(dòng)終端的用戶(hù)體驗(yàn)。

下面結(jié)合圖2至圖4對(duì)本發(fā)明實(shí)施例的文件轉(zhuǎn)換方法進(jìn)行具體說(shuō)明。

針對(duì)現(xiàn)有的angr框架無(wú)法加載android應(yīng)用的可執(zhí)行文件的不足,本實(shí)施例根據(jù)android代碼的特點(diǎn),提出一種針對(duì)android應(yīng)用的可執(zhí)行文件的轉(zhuǎn)換方法,即,對(duì)android應(yīng)用的可執(zhí)行文件進(jìn)行格式轉(zhuǎn)換。

具體的,參見(jiàn)圖2,首先,獲取一個(gè)待檢測(cè)的android應(yīng)用;

然后,對(duì)該android應(yīng)用進(jìn)行文件轉(zhuǎn)換生成exe可執(zhí)行文件。

由于exe可執(zhí)行文件是angr框架支持的二進(jìn)制文件格式,從而能夠?qū)ndroid應(yīng)用對(duì)應(yīng)的exe可執(zhí)行文件加載到angr框架中。

最后,基于angr框架對(duì)exe可執(zhí)行文件進(jìn)行符號(hào)執(zhí)行分析,進(jìn)而輔助判斷待檢測(cè)android應(yīng)用是否存在漏洞。

文件轉(zhuǎn)換是本實(shí)施例的重點(diǎn),接下來(lái)進(jìn)行具體說(shuō)明。

參見(jiàn)圖3,首先,獲取android應(yīng)用的apk文件;android系統(tǒng)中apk文件是android安裝包。

其次,在得到apk文件之后,通過(guò)apk工具對(duì)其進(jìn)行解壓縮處理,得到一個(gè)完整的android項(xiàng)目。需要說(shuō)明的是,本實(shí)施例中是以通過(guò)apk工具對(duì)apk文件進(jìn)行解壓縮處理為例進(jìn)行的示意性說(shuō)明,但不限于此,實(shí)際應(yīng)用中可以使用任何能夠?qū)pk文件進(jìn)行解壓縮處理的工具。

參見(jiàn)圖3,解壓縮之后得到的android項(xiàng)目主要包括meta-inf文件、res文件、xml文件、dex文件以及arsc文件。

其中,meta-inf文件是apk簽名文件,用來(lái)保證apk包的完整性和系統(tǒng)的安全性。

res文件用來(lái)存放android項(xiàng)目的各種資源文件,并且不同的資源文件存放在不同的目錄中。res目錄下又有下一級(jí)目錄,例如,主要存放布局文件的layout目錄,主要存放菜單文件的menu目錄,主要存放應(yīng)用程序默認(rèn)的資源文件的values目錄。

xml文件主要是指androidmanifest.xml,androidmanifest.xml是android應(yīng)用的全局配置文件。

arsc文件用來(lái)存放編譯后的二進(jìn)制資源文件,并且記錄資源文件和資源id的映射關(guān)系。

dex文件是編譯生成的dalvik字節(jié)碼文件,它只能在dalvik虛擬機(jī)上運(yùn)行,并且dalvik虛擬機(jī)與java虛擬機(jī)并不兼容。

最后,從得到的android項(xiàng)目中提取出dex文件。

也就是說(shuō),本實(shí)施例中是從android項(xiàng)目中提取出可執(zhí)行文件dex文件以便后續(xù)進(jìn)行轉(zhuǎn)換處理。

在得到dex文件之后,參見(jiàn)圖4,圖4中示意了dex文件到windows系統(tǒng)的可執(zhí)行文件exe文件的轉(zhuǎn)換流程。即,通過(guò)將dex文件反編譯成java的jar文件之后,再將jar文件轉(zhuǎn)換為windows系統(tǒng)的可執(zhí)行文件exe文件。

圖4所示的文件轉(zhuǎn)換又可以細(xì)分反編譯和重新編譯兩部分。

反編譯是將android的可執(zhí)行文件dex文件反編譯為初始的java文件包,即,將classes.dex轉(zhuǎn)化成jar文件。

這一部分所使用的工具是dex2jar,dex2jar是一款針對(duì)android平臺(tái)dex文件的反編譯工具。經(jīng)過(guò)反編譯之后得到的jar文件雖然不是標(biāo)準(zhǔn)的java代碼文件,但是可以通過(guò)下一步的重新編譯將其編譯為exe文件。

重新編譯是將上一步所得到的jar文件編譯轉(zhuǎn)換為windows系統(tǒng)上的可執(zhí)行文件exe文件。

這一部分所使用的工具是jar2exe,jar2exe工具的工作原理是使用jni接口啟動(dòng)java虛擬機(jī),并在此基礎(chǔ)上提供其他高級(jí)功能,jar2exe可以生成控制臺(tái)程序、windows窗口程序以及windowsnt服務(wù)程序三種類(lèi)型的可執(zhí)行文件。在重新編譯的過(guò)程中通過(guò)使用控制臺(tái)程序便可實(shí)現(xiàn)從jar文件到exe可執(zhí)行文件的轉(zhuǎn)化。

windows系統(tǒng)上的可執(zhí)行文件exe文件可以直接加載到angr框架,之后在angr框架上進(jìn)行后續(xù)的符號(hào)執(zhí)行分析。

接下來(lái)對(duì)angr框架上的符號(hào)執(zhí)行分析過(guò)程進(jìn)行簡(jiǎn)要說(shuō)明。

angr框架集成了一些現(xiàn)有的漏洞分析技術(shù),同時(shí)使用不同的模塊實(shí)現(xiàn)不同的功能,因此,可以很容易對(duì)已有的分析技術(shù)進(jìn)行比較,并且能利用不同分析技術(shù)的優(yōu)勢(shì)。

其簡(jiǎn)要處理過(guò)程是:首先,將二進(jìn)制程序(例如,圖4所示的exe執(zhí)行文件)加載到angr框架中;再將二進(jìn)制文件的代碼轉(zhuǎn)換成中間語(yǔ)言(intermediaterepresentation,簡(jiǎn)稱(chēng)ir);接著進(jìn)一步分析程序,其中包括對(duì)程序的靜態(tài)分析或動(dòng)態(tài)符號(hào)執(zhí)行分析。

angr主要包括以下幾個(gè)模塊:

二進(jìn)制程序加載模塊(cle),其將一個(gè)二進(jìn)制程序加載到分析平臺(tái)中,其中包括exe可執(zhí)行文件;

中間表示模塊(ir),將二進(jìn)制代碼翻譯成中間語(yǔ)言,其中間語(yǔ)言vex使angr可以在不同架構(gòu)上分析二進(jìn)制程序;

程序狀態(tài)表示模塊(simuvex),表示程序的狀態(tài),并且simuvex中的simstate實(shí)現(xiàn)了一組狀態(tài)插件的集合,如寄存器、抽象內(nèi)存以及符號(hào)內(nèi)存等,這些插件的狀態(tài)可以由用戶(hù)指定;

數(shù)據(jù)模型模塊(claripy),其為存儲(chǔ)在simstate的寄存器或存儲(chǔ)器中的值提供抽象表示;

完整程序分析模塊,將所有的模塊組合起來(lái)使得angr可以進(jìn)行復(fù)雜且完整的程序分析。

其中,二進(jìn)制程序加載模塊(cle)是angr框架的入口,通過(guò)cle模塊,可以將本實(shí)施例的android應(yīng)用的字節(jié)碼文件dex文件轉(zhuǎn)換成的exe可執(zhí)行文件加載到angr框架進(jìn)行后續(xù)的符號(hào)執(zhí)行分析。

符號(hào)執(zhí)行能夠在復(fù)雜的數(shù)據(jù)依賴(lài)關(guān)系中發(fā)現(xiàn)變量之間本質(zhì)的約束關(guān)系,比污點(diǎn)傳播分析以及模糊測(cè)試等方法精度高,這種精確的變量代數(shù)關(guān)系能幫助理解程序的內(nèi)在邏輯;在模擬程序運(yùn)行的過(guò)程中,符號(hào)執(zhí)行還會(huì)精確記錄執(zhí)行路徑上所有的約束條件,可以提高控制流分析中路徑可達(dá)性問(wèn)題判定的精確性。

需要說(shuō)明的是,基于angr框架的符號(hào)執(zhí)行分析是現(xiàn)有技術(shù),因而在將由android應(yīng)用的字節(jié)碼文件dex文件轉(zhuǎn)換成的exe可執(zhí)行文件加載到angr框架后的符號(hào)執(zhí)行分析可以參見(jiàn)現(xiàn)有技術(shù),這里不再贅述。

圖5是本發(fā)明一個(gè)實(shí)施例的一種文件轉(zhuǎn)換裝置的結(jié)構(gòu)框圖,參見(jiàn)圖5,本實(shí)施例的文件轉(zhuǎn)換裝置500,應(yīng)用于二進(jìn)制文件分析框架angr中,包括:

文件獲取模塊501,用于獲取待檢測(cè)的android應(yīng)用的dex文件;

文件轉(zhuǎn)換模塊502,用于將所述dex文件轉(zhuǎn)換為所述angr框架支持的二進(jìn)制格式的第一文件;

檢測(cè)確定模塊503,用于加載所述第一文件到所述angr框架中并對(duì)所述第一文件進(jìn)行符號(hào)執(zhí)行分析,根據(jù)所述符號(hào)執(zhí)行分析結(jié)果輔助判斷所述android應(yīng)用是否存在漏洞。

一個(gè)實(shí)施例中,文件獲取模塊501,具體用于獲取待檢測(cè)的android應(yīng)用的安裝包apk文件,解壓所述apk文件并提取其中的dex文件。

一個(gè)實(shí)施例中,文件轉(zhuǎn)換模塊502,具體用于反編譯所述dex文件得到j(luò)ava歸檔文件jar文件;重新編譯所述jar文件得到二進(jìn)制格式的exe文件。

需要說(shuō)明的是,本實(shí)施例的文件轉(zhuǎn)換裝置是和前述實(shí)施例中的文件轉(zhuǎn)換方法相對(duì)應(yīng)的,因此,本實(shí)施例中文件轉(zhuǎn)換裝置的工作過(guò)程可以參見(jiàn)前述方法實(shí)施例中的說(shuō)明,在此不再贅述。

綜上所述,本發(fā)明實(shí)施例的文件轉(zhuǎn)換方法和裝置實(shí)現(xiàn)了針對(duì)android應(yīng)用進(jìn)行文件轉(zhuǎn)換,將android應(yīng)用的字節(jié)碼文件dex轉(zhuǎn)換成windows平臺(tái)下的可執(zhí)行文件exe,加載到angr框架中進(jìn)行后續(xù)的符號(hào)執(zhí)行分析的有益效果。解決了angr框架因無(wú)法對(duì)android系統(tǒng)的安裝包apk文件以及可執(zhí)行文件dex導(dǎo)入和讀取而無(wú)法對(duì)android系統(tǒng)的應(yīng)用程序進(jìn)行符號(hào)執(zhí)行分析,進(jìn)而輔助進(jìn)行漏洞檢測(cè)的問(wèn)題,幫助提升了android系統(tǒng)的可靠性和安全性。

以上所述,僅為本發(fā)明的具體實(shí)施方式,在本發(fā)明的上述教導(dǎo)下,本領(lǐng)域技術(shù)人員可以在上述實(shí)施例的基礎(chǔ)上進(jìn)行其他的改進(jìn)或變形。本領(lǐng)域技術(shù)人員應(yīng)該明白,上述的具體描述只是更好的解釋本發(fā)明的目的,本發(fā)明的保護(hù)范圍以權(quán)利要求的保護(hù)范圍為準(zhǔn)。

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