專利名稱::對(duì)可執(zhí)行文件源代碼保護(hù)的方法及裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及文件加密
技術(shù)領(lǐng)域:
,尤其涉及一種對(duì)可執(zhí)行文件源代碼保護(hù)的方法及直O(jiān)
背景技術(shù):
:眾所周知,軟件防盜版、防修改一直是計(jì)算機(jī)安全領(lǐng)域的一個(gè)重要課題。在眾多的軟件保護(hù)技術(shù)中,軟件加殼技術(shù)是軟件保護(hù)的重要手段,但當(dāng)前互聯(lián)網(wǎng)上很多黑客工具仍能夠破解軟件,因此擁有一個(gè)獨(dú)特的加殼程序很有必要?,F(xiàn)有的軟件加殼技術(shù)通常使用較多的是嵌入方式。該方式是向目標(biāo)可執(zhí)行文件ELF(ExecutableandLinkableR)rmat,可執(zhí)行鏈接格式)中直接注入一段二進(jìn)制代碼,再將程序的入口地址改為這段被插入的二進(jìn)制代碼的地址,在其后才跳轉(zhuǎn)到程序原始的入口地址,執(zhí)行真正的程序部分。注入的這一段二進(jìn)制代碼是該方法的核心,一般含有解密或解壓縮程序,花指令代碼和一些反動(dòng)態(tài)跟蹤的代碼。這種方法可以有效地防止靜態(tài)分析,但其反動(dòng)態(tài)跟蹤的能力一般。
發(fā)明內(nèi)容本發(fā)明的主要目的在于提供一種對(duì)可執(zhí)行文件源代碼保護(hù)的方法及裝置,旨在提高反動(dòng)態(tài)跟蹤能力。為了實(shí)現(xiàn)發(fā)明目的,本發(fā)明提供一種對(duì)可執(zhí)行文件源代碼保護(hù)的方法,包括以下步驟獲取需要加殼的目標(biāo)可執(zhí)行鏈接格式ELF文件;提取目標(biāo)ELF文件中的核心部分;所述核心部分包括數(shù)據(jù)段、代碼段、對(duì)棧段及動(dòng)態(tài)鏈接表;創(chuàng)建新的ELF文件框架;將目標(biāo)ELF文件的核心部分和加殼部分整合;將整合結(jié)果按ELF結(jié)構(gòu)填入到新的ELF文件框架中;完成重構(gòu)新的ELF文件并設(shè)置其屬性為可執(zhí)行。優(yōu)選地,所述將目標(biāo)文件的核心部分和加殼部分整合包括分別計(jì)算出加殼部分和目標(biāo)文件核心部分所占物理文件的大小和所占內(nèi)存的大??;將目標(biāo)文件核心部分中段/節(jié)的內(nèi)容續(xù)寫(xiě)到加殼部分對(duì)應(yīng)段/節(jié)的后面;將程序頭表及節(jié)頭表的段/節(jié)屬性中與大小相關(guān)的參數(shù)設(shè)置成新計(jì)算出的大小。優(yōu)選地,所述創(chuàng)建新的ELF文件框架包括按照ELF文件標(biāo)準(zhǔn),創(chuàng)建一個(gè)新的文件,其文件結(jié)構(gòu)符合ELF文件規(guī)范,并完成ELF文件頭部信息的填寫(xiě),將相關(guān)段落暫時(shí)空出,以供后續(xù)填充使用。優(yōu)選地,所述將整合結(jié)果按ELF結(jié)構(gòu)填入到新的ELF文件框架中包括重新計(jì)算段/節(jié)屬性參數(shù);修改新的ELF文件,將計(jì)算好的屬性參數(shù)填入新的ELF文件頭中,再將整合好的段/節(jié)按照ELF文件規(guī)范填入新的ELF文件對(duì)應(yīng)位置。優(yōu)選地,所述將目標(biāo)文件的核心部分和加殼部分整合還包括當(dāng)將目標(biāo)文件的核心部分和加殼部分整合失敗時(shí),刪除生成的臨時(shí)文件和新的ELF文件,并釋放相應(yīng)的空間。本發(fā)明還提供一種對(duì)可執(zhí)行文件源代碼保護(hù)的裝置,包括文件獲取單元,用于獲取需要加殼的目標(biāo)可執(zhí)行鏈接格式ELF文件;核心部分提取單元,用于提取目標(biāo)ELF文件中的核心部分;所述核心部分包括數(shù)據(jù)段、代碼段、對(duì)棧段及動(dòng)態(tài)鏈接表;文件框架創(chuàng)建單元,用于創(chuàng)建新的ELF文件框架;加密單元,用于將目標(biāo)ELF文件的核心部分和加殼部分整合;整合結(jié)果讀寫(xiě)單元,用于將整合結(jié)果按ELF結(jié)構(gòu)填入到新的ELF文件框架中;屬性設(shè)置單元,用于完成重構(gòu)新的ELF文件并設(shè)置其屬性為可執(zhí)行。優(yōu)選地,所述加密單元包括運(yùn)算模塊,用于分別計(jì)算出加殼部分和目標(biāo)文件核心部分所占物理文件的大小和所占內(nèi)存的大??;續(xù)寫(xiě)模塊,用于將目標(biāo)文件核心部分中段/節(jié)的內(nèi)容續(xù)寫(xiě)到加殼部分對(duì)應(yīng)段/節(jié)的后面;參數(shù)設(shè)置模塊,用于將程序頭表及節(jié)頭表的段/節(jié)屬性中與大小相關(guān)的參數(shù)設(shè)置成新計(jì)算出的大小。優(yōu)選地,所述文件框架創(chuàng)建單元具體用于按照ELF文件標(biāo)準(zhǔn),創(chuàng)建一個(gè)新的文件,其文件結(jié)構(gòu)符合ELF文件規(guī)范,并完成ELF文件頭部信息的填寫(xiě),將相關(guān)段落暫時(shí)空出,以供后續(xù)填充使用。優(yōu)選地,所述整合結(jié)果讀寫(xiě)單元具體用于重新計(jì)算段/節(jié)屬性參數(shù);修改新的ELF文件,將計(jì)算好的屬性參數(shù)填入新的ELF文件頭中,再將整合好的段/節(jié)按照ELF文件規(guī)范填入新的ELF文件對(duì)應(yīng)位置。優(yōu)選地,所述加密單元還包括刪除模塊,用于當(dāng)將目標(biāo)文件的核心部分和加殼部分整合失敗時(shí),刪除生成的臨時(shí)文件和新的ELF文件,并釋放相應(yīng)的空間。本發(fā)明所提供的對(duì)可執(zhí)行文件源代碼保護(hù)的方法或裝置,將目標(biāo)系統(tǒng)的可執(zhí)行文件中的核心部分提取出來(lái),再和準(zhǔn)備好的解密或解壓縮程序,將反靜態(tài)分析和反動(dòng)態(tài)跟蹤程序結(jié)合在一起,按照目標(biāo)系統(tǒng)可執(zhí)行文件標(biāo)準(zhǔn)格式重新構(gòu)造一個(gè)全新的可執(zhí)行文件,可將加殼的各項(xiàng)功能程序和目標(biāo)程序很好的融合為一體,從而提高文件保護(hù)技術(shù)的反動(dòng)態(tài)跟蹤言旨力O圖1為本發(fā)明一實(shí)施方式中對(duì)可執(zhí)行文件源代碼保護(hù)的方法的流程5圖2為本發(fā)明一實(shí)施方式中對(duì)可執(zhí)行文件源代碼保護(hù)的裝置的結(jié)構(gòu)示意圖;圖3為本發(fā)明一實(shí)施例中對(duì)可執(zhí)行文件源代碼保護(hù)的裝置的工作流程圖。本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。具體實(shí)施例方式應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。圖1示出了本發(fā)明的一個(gè)實(shí)施方式中可執(zhí)行文件源代碼保護(hù)的方法的步驟流程。該流程包括以下步驟步驟S10,獲取需要加殼的目標(biāo)可執(zhí)行鏈接格式ELF文件;在一實(shí)施例中,可先獲取需要加殼的目標(biāo)文件,并判斷該目標(biāo)文件是否是標(biāo)準(zhǔn)的ELF可執(zhí)行文件。通過(guò)將目標(biāo)文件頭部文件提取,按照ELF文件結(jié)構(gòu),解析出每一個(gè)字段,確保該目標(biāo)文件是可以進(jìn)行加殼保護(hù)的文件。步驟S20,提取目標(biāo)ELF文件中的核心部分;所述核心部分包括數(shù)據(jù)段、代碼段、對(duì)棧段及動(dòng)態(tài)鏈接表;提取核心部分也就是將這些部分單獨(dú)復(fù)制出來(lái),用以后面代碼整合中使用。這里以.text節(jié)為例,說(shuō)明如何提取核心部分。該節(jié)保存著程序的正文或者說(shuō)是可執(zhí)行指令。首先,根據(jù)ELF文件頭中的信息,首先定位到程序頭表,在程序頭表中在定位到代碼段(整個(gè)代碼段都是需要的核心部分)。然后,再定位到.text位置,將其中的數(shù)據(jù)代碼復(fù)制出來(lái),其他段或節(jié)都以同樣的方法獲得。步驟S30,創(chuàng)建新的ELF文件框架;在一實(shí)施例中,步驟S30可包括按照ELF文件標(biāo)準(zhǔn),創(chuàng)建一個(gè)新的文件,其文件結(jié)構(gòu)符合ELF文件規(guī)范,并完成ELF文件頭部信息的填寫(xiě),將數(shù)據(jù)段、代碼段和堆棧段等相關(guān)段落暫時(shí)空出,以供后續(xù)填充使用。步驟S40,將目標(biāo)ELF文件的核心部分和加殼部分整合;該步驟是整個(gè)方法的核心,需要進(jìn)行精確的計(jì)算,來(lái)正確的設(shè)置ELF文件頭、程序頭表以及節(jié)頭表等數(shù)據(jù),這樣新生成的ELF文件才能正常運(yùn)行。在一實(shí)施例中,該步驟可具體包括分別計(jì)算出加殼部分和目標(biāo)文件核心部分所占物理文件的大小和所占內(nèi)存的大小;將目標(biāo)文件核心部分中段/節(jié)的內(nèi)容續(xù)寫(xiě)到加殼部分對(duì)應(yīng)段/節(jié)的后面;將程序頭表及節(jié)頭表的段/節(jié)屬性中與大小相關(guān)的參數(shù)設(shè)置成新計(jì)算出的大小。此處還是以.text節(jié)為例詳細(xì)說(shuō)明該步驟流程。首先,分別計(jì)算出加殼部分.text節(jié)占物理文件的大小和載入內(nèi)存所占內(nèi)存的大小,以及目標(biāo)文件核心部分.text節(jié)占物理文件的大小和載入內(nèi)存所占內(nèi)存的大?。蝗缓?,將目標(biāo)文件核心部分.text節(jié)內(nèi)容續(xù)寫(xiě)到加殼部分.text節(jié)的后面,使得程序在載入內(nèi)存執(zhí)行時(shí)順序執(zhí)行;再將程序頭表、節(jié)頭表中.text節(jié)屬性中與大小相關(guān)的參數(shù)對(duì)應(yīng)設(shè)置成新計(jì)算出的大小。至此,.text節(jié)部分的整合完成,其他段或節(jié)都以同樣的方法整合。本步驟中所實(shí)現(xiàn)的功能便是將目標(biāo)文件的核心部分加密,且在程序執(zhí)行時(shí)在內(nèi)存中解密;并且對(duì)于各種外部中斷進(jìn)行監(jiān)控,完成反靜態(tài)編譯和動(dòng)態(tài)跟蹤的目的。方法中并沒(méi)有對(duì)于加殼程序的加密算法做規(guī)定,但是由于殼本身在時(shí)間和空間上要求較高,所以應(yīng)選取算法復(fù)雜度適中、程序執(zhí)行效率高的方法。同時(shí),由于殼程序是一段直接嵌入到可執(zhí)行文件中的二進(jìn)制數(shù),故其對(duì)于目標(biāo)文件所使用的硬件平臺(tái)依賴性很高,根據(jù)不同硬件平臺(tái)和操作系統(tǒng),其殼程序的二進(jìn)制編碼大有不同。另外,對(duì)于安全系統(tǒng)而言,其實(shí)是通過(guò)各種不同的算法來(lái)阻止非法用戶的破解,使用的方法越復(fù)雜,其破解難度就越大,安全性越高,同時(shí)用戶也會(huì)明顯的感覺(jué)到程序運(yùn)行效率的影響。因而實(shí)際情況中,可根據(jù)用戶不同的需求實(shí)現(xiàn)不同的安全策略。步驟S50,將整合結(jié)果按ELF結(jié)構(gòu)填入到新的ELF文件框架中;重新整合好的ELF文件,僅僅是可執(zhí)行文件的數(shù)據(jù)段、代碼段等部分,將殼程序完整的融入了原有程序的代碼中,但是還并不能使用。要使其能夠使用,還需重新計(jì)算該部分內(nèi)容大小、需要的空間等屬性參數(shù),修改構(gòu)造的空ELF文件,將計(jì)算好的屬性參數(shù)填入ELF文件頭中,再將整合好的部分按照ELF文件規(guī)范填入新的ELF文件對(duì)應(yīng)位置。步驟S60,完成重構(gòu)新的ELF文件并設(shè)置其屬性為可執(zhí)行。例如,將該ELF文件屬性設(shè)置為可執(zhí)行,并運(yùn)行測(cè)試,判斷是否成功加殼。上述步驟流程中,步驟S10、30、40還可以進(jìn)一步對(duì)異常的情況進(jìn)行處理,例如,在執(zhí)行步驟S10、30或40出現(xiàn)失敗時(shí),程序進(jìn)入失敗處理程序,刪除生成的臨時(shí)文件和新創(chuàng)建的文件,并釋放相應(yīng)的空間。本發(fā)明還提供一種對(duì)可執(zhí)行文件源代碼保護(hù)的裝置,參照?qǐng)D2,在一實(shí)施例中,該裝置包括文件獲取單元10,用于獲取需要加殼的目標(biāo)可執(zhí)行鏈接格式ELF文件;在一實(shí)施例中,文件獲取單元10可先獲取需要加殼的目標(biāo)文件,并判斷該目標(biāo)文件是否是標(biāo)準(zhǔn)的ELF可執(zhí)行文件。通過(guò)將目標(biāo)文件頭部文件提取,按照ELF文件結(jié)構(gòu),解析出每一個(gè)字段,確保該目標(biāo)文件是可以進(jìn)行加殼保護(hù)的文件。核心部分提取單元20,用于提取目標(biāo)ELF文件中的核心部分;所述核心部分包括數(shù)據(jù)段、代碼段、對(duì)棧段及動(dòng)態(tài)鏈接表;核心部分提取單元提取文件的具體操作流程可參照前述方法中步驟S20所述實(shí)施例。文件框架創(chuàng)建單元30,用于創(chuàng)建新的ELF文件框架;在一實(shí)施例中,文件框架創(chuàng)建單元30可按照ELF文件標(biāo)準(zhǔn),創(chuàng)建一個(gè)新的文件,其文件結(jié)構(gòu)符合ELF文件規(guī)范,并完成ELF文件頭部信息的填寫(xiě),將數(shù)據(jù)段、代碼段和堆棧段等相關(guān)段落暫時(shí)空出,以供后續(xù)填充使用。加密單元40,用于將目標(biāo)ELF文件的核心部分和加殼部分整合;加密單元40是整個(gè)裝置的核心,需要進(jìn)行精確的計(jì)算,來(lái)正確的設(shè)置ELF文件頭、程序頭表以及節(jié)頭表等數(shù)據(jù),這樣新生成的ELF文件才能正常運(yùn)行。在一實(shí)施例中,加密單元40可具體包括運(yùn)算模塊41,用于分別計(jì)算出加殼部分和目標(biāo)文件核心部分所占物理文件的大小和所占內(nèi)存的大??;續(xù)寫(xiě)模塊42,用于將目標(biāo)文件核心部分中段/節(jié)的內(nèi)容續(xù)寫(xiě)到加殼部分對(duì)應(yīng)段/節(jié)的后面;參數(shù)設(shè)置模塊43,用于將程序頭表及節(jié)頭表的段/節(jié)屬性中與大小相關(guān)的參數(shù)設(shè)置成新計(jì)算出的大小。此處還是以.text節(jié)為例詳細(xì)說(shuō)明加密單元40的處理流程。首先,運(yùn)算模塊41分別計(jì)算出加殼部分.text節(jié)占物理文件的大小和載入內(nèi)存所占內(nèi)存的大小,以及目標(biāo)文件核心部分.text節(jié)占物理文件的大小和載入內(nèi)存所占內(nèi)存的大小;然后,續(xù)寫(xiě)模塊42將目標(biāo)文件核心部分.text節(jié)內(nèi)容續(xù)寫(xiě)到加殼部分.text節(jié)的后面,使得程序在載入內(nèi)存執(zhí)行時(shí)順序執(zhí)行;參數(shù)設(shè)置模塊43再將程序頭表、節(jié)頭表中.text節(jié)屬性中與大小相關(guān)的參數(shù)對(duì)應(yīng)設(shè)置成新計(jì)算出的大小。至此,.text節(jié)部分的整合完成,其他段或節(jié)都以同樣的方法整合。加密單元40所要實(shí)現(xiàn)的功能便是將目標(biāo)文件的核心部分加密,且在程序執(zhí)行時(shí)在內(nèi)存中解密;并且對(duì)于各種外部中斷進(jìn)行監(jiān)控,完成反靜態(tài)編譯和動(dòng)態(tài)跟蹤的目的。加密單元40中并沒(méi)有對(duì)于加殼程序的加密算法做規(guī)定,但是由于殼本身在時(shí)間和空間上要求較高,所以應(yīng)選取算法復(fù)雜度適中、程序執(zhí)行效率高的方法。同時(shí),由于殼程序是一段直接嵌入到可執(zhí)行文件中的二進(jìn)制數(shù),故其對(duì)于目標(biāo)文件所使用的硬件平臺(tái)依賴性很高,根據(jù)不同硬件平臺(tái)和操作系統(tǒng),其殼程序的二進(jìn)制編碼大有不同。另外,對(duì)于安全系統(tǒng)而言,其實(shí)是通過(guò)各種不同的算法來(lái)阻止非法用戶的破解,使用的方法越復(fù)雜,其破解難度就越大,安全性越高,同時(shí)用戶也會(huì)明顯的感覺(jué)到程序運(yùn)行效率的影響。因而實(shí)際情況中,可根據(jù)用戶不同的需求實(shí)現(xiàn)不同的安全策略。在一實(shí)施例中,加密單元40還可包括刪除模塊44,用于當(dāng)將目標(biāo)文件的核心部分和加殼部分整合失敗時(shí),刪除生成的臨時(shí)文件和新的ELF文件,并釋放相應(yīng)的空間。整合結(jié)果讀寫(xiě)單元50,用于將整合結(jié)果按ELF結(jié)構(gòu)填入到新的ELF文件框架中;在一實(shí)施例中,整合結(jié)果讀寫(xiě)單元50具體用于重新計(jì)算段/節(jié)屬性參數(shù);修改新的ELF文件,將計(jì)算好的屬性參數(shù)填入新的ELF文件頭中,再將整合好的段/節(jié)按照ELF文件規(guī)范填入新的ELF文件對(duì)應(yīng)位置。屬性設(shè)置單元60,用于完成重構(gòu)新的ELF文件并設(shè)置其屬性為可執(zhí)行。例如,屬性設(shè)置單元60將該ELF文件屬性設(shè)置為可執(zhí)行,并運(yùn)行測(cè)試,判斷是否成功加殼。本發(fā)明上述對(duì)可執(zhí)行文件源代碼保護(hù)的裝置的具體工作流程可參照?qǐng)D3所示。以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的
技術(shù)領(lǐng)域:
,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。權(quán)利要求1.一種對(duì)可執(zhí)行文件源代碼保護(hù)的方法,其特征在于,包括以下步驟獲取需要加殼的目標(biāo)可執(zhí)行鏈接格式ELF文件;提取目標(biāo)ELF文件中的核心部分;所述核心部分包括數(shù)據(jù)段、代碼段、對(duì)棧段及動(dòng)態(tài)鏈接表;創(chuàng)建新的ELF文件框架;將目標(biāo)ELF文件的核心部分和加殼部分整合;將整合結(jié)果按ELF結(jié)構(gòu)填入到新的ELF文件框架中;完成重構(gòu)新的ELF文件并設(shè)置其屬性為可執(zhí)行。2.如權(quán)利要求1所述的對(duì)可執(zhí)行文件源代碼保護(hù)的方法,其特征在于,所述將目標(biāo)文件的核心部分和加殼部分整合包括分別計(jì)算出加殼部分和目標(biāo)文件核心部分所占物理文件的大小和所占內(nèi)存的大?。粚⒛繕?biāo)文件核心部分中段/節(jié)的內(nèi)容續(xù)寫(xiě)到加殼部分對(duì)應(yīng)段/節(jié)的后面;將程序頭表及節(jié)頭表的段/節(jié)屬性中與大小相關(guān)的參數(shù)設(shè)置成新計(jì)算出的大小。3.如權(quán)利要求2所述的對(duì)可執(zhí)行文件源代碼保護(hù)的方法,其特征在于,所述創(chuàng)建新的ELF文件框架包括按照ELF文件標(biāo)準(zhǔn),創(chuàng)建一個(gè)新的文件,其文件結(jié)構(gòu)符合ELF文件規(guī)范,并完成ELF文件頭部信息的填寫(xiě),將相關(guān)段落暫時(shí)空出,以供后續(xù)填充使用。4.如權(quán)利要求1至3中任一項(xiàng)所述的對(duì)可執(zhí)行文件源代碼保護(hù)的方法,其特征在于,所述將整合結(jié)果按ELF結(jié)構(gòu)填入到新的ELF文件框架中包括重新計(jì)算段/節(jié)屬性參數(shù);修改新的ELF文件,將計(jì)算好的屬性參數(shù)填入新的ELF文件頭中,再將整合好的段/節(jié)按照ELF文件規(guī)范填入新的ELF文件對(duì)應(yīng)位置。5.如權(quán)利要求4所述的對(duì)可執(zhí)行文件源代碼保護(hù)的方法,其特征在于,所述將目標(biāo)文件的核心部分和加殼部分整合還包括當(dāng)將目標(biāo)文件的核心部分和加殼部分整合失敗時(shí),刪除生成的臨時(shí)文件和新的ELF文件,并釋放相應(yīng)的空間。6.一種對(duì)可執(zhí)行文件源代碼保護(hù)的裝置,其特征在于,包括文件獲取單元,用于獲取需要加殼的目標(biāo)可執(zhí)行鏈接格式ELF文件;核心部分提取單元,用于提取目標(biāo)ELF文件中的核心部分;所述核心部分至少包括數(shù)據(jù)段、代碼段、對(duì)棧段及動(dòng)態(tài)鏈接表;文件框架創(chuàng)建單元,用于創(chuàng)建新的ELF文件框架;加密單元,用于將目標(biāo)ELF文件的核心部分和加殼部分整合;整合結(jié)果讀寫(xiě)單元,用于將整合結(jié)果按ELF結(jié)構(gòu)填入到新的ELF文件框架中;屬性設(shè)置單元,用于完成重構(gòu)新的ELF文件并設(shè)置其屬性為可執(zhí)行。7.如權(quán)利要求6所述的裝置,其特征在于,所述加密單元包括運(yùn)算模塊,用于分別計(jì)算出加殼部分和目標(biāo)文件核心部分所占物理文件的大小和所占內(nèi)存的大?。焕m(xù)寫(xiě)模塊,用于將目標(biāo)文件核心部分中段/節(jié)的內(nèi)容續(xù)寫(xiě)到加殼部分對(duì)應(yīng)段/節(jié)的后參數(shù)設(shè)置模塊,用于將程序頭表及節(jié)頭表的段/節(jié)屬性中與大小相關(guān)的參數(shù)設(shè)置成新計(jì)算出的大小。8.如權(quán)利要求7所述的裝置,其特征在于,所述文件框架創(chuàng)建單元具體用于按照ELF文件標(biāo)準(zhǔn),創(chuàng)建一個(gè)新的文件,其文件結(jié)構(gòu)符合ELF文件規(guī)范,并完成ELF文件頭部信息的填寫(xiě),將相關(guān)段落暫時(shí)空出,以供后續(xù)填充使用。9.如權(quán)利要求6至8中任一項(xiàng)所述的裝置,其特征在于,所述整合結(jié)果讀寫(xiě)單元具體用于重新計(jì)算段/節(jié)屬性參數(shù);修改新的ELF文件,將計(jì)算好的屬性參數(shù)填入新的ELF文件頭中,再將整合好的段/節(jié)按照ELF文件規(guī)范填入新的ELF文件對(duì)應(yīng)位置。10.如權(quán)利要求10所述的裝置,其特征在于,所述加密單元還包括刪除模塊,用于當(dāng)將目標(biāo)文件的核心部分和加殼部分整合失敗時(shí),刪除生成的臨時(shí)文件和新的ELF文件,并釋放相應(yīng)的空間。全文摘要本發(fā)明提供了一種對(duì)可執(zhí)行文件源代碼保護(hù)的方法,包括以下步驟獲取需要加殼的目標(biāo)可執(zhí)行鏈接格式ELF文件;提取目標(biāo)ELF文件中的核心部分;所述核心部分包括數(shù)據(jù)段、代碼段、對(duì)棧段及動(dòng)態(tài)鏈接表;創(chuàng)建新的ELF文件框架;將目標(biāo)文件的核心部分和加殼部分整合,為目標(biāo)ELF文件的核心部分加密;將整合結(jié)果按ELF結(jié)構(gòu)填入到新的ELF文件框架中;完成重構(gòu)新的ELF文件并設(shè)置其屬性為可執(zhí)行。本發(fā)明還提供了一種對(duì)可執(zhí)行文件源代碼保護(hù)的裝置,本發(fā)明所提供的方法或裝置,可提高文件保護(hù)技術(shù)的反動(dòng)態(tài)跟蹤能力。文檔編號(hào)G06F21/24GK102136053SQ201110060458公開(kāi)日2011年7月27日申請(qǐng)日期2011年3月14日優(yōu)先權(quán)日2011年3月14日發(fā)明者王宇申請(qǐng)人:中興通訊股份有限公司