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

一種帶殼軟件脫殼的方法及裝置與流程

文檔序號(hào):12720743閱讀:555來源:國知局
一種帶殼軟件脫殼的方法及裝置與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種帶殼軟件脫殼的方法及裝置。



背景技術(shù):

軟件加殼是一種常用的軟件保護(hù)技術(shù),首先對(duì)軟件的原始程序進(jìn)行加密或者以某種形式隱藏原始程序入口,之后在軟件中加入一個(gè)預(yù)啟動(dòng)程序,即殼程序。當(dāng)軟件開始運(yùn)行時(shí),首先運(yùn)行的是殼程序,殼程序?qū)υ汲绦蜻M(jìn)行解密或獲得原始程序入口,之后將運(yùn)行權(quán)交給原始程序,此時(shí),原始程序開始運(yùn)行,而殼程序運(yùn)行結(jié)束。軟件加殼技術(shù)可以有效的對(duì)原始軟件進(jìn)行保護(hù),是一種通用的,效果較好的軟件保護(hù)方法。

相比于普通軟件開發(fā)者,很多病毒、木馬程序的開發(fā)者更加傾向于使用加殼技術(shù)保護(hù)自己的惡意軟件,從而在較長的時(shí)間內(nèi)達(dá)到非法目的。對(duì)于加殼保護(hù)的惡意軟件,惡意代碼檢測系統(tǒng)往往只能檢測到殼程序的代碼,無法檢測到原始程序中被隱藏的惡意代碼,而殼程序中一般不含有惡意代碼,因此軟件加殼也成為了繞過軟件安全檢測的途徑。

目前,現(xiàn)有的脫殼方案一般是對(duì)某種殼程序的邏輯進(jìn)行破解,或通過動(dòng)態(tài)調(diào)試,跟蹤殼程序的運(yùn)行流程,跟蹤到殼程序運(yùn)行之后,從系統(tǒng)內(nèi)存中獲取開始運(yùn)行的原始程序。

然而,現(xiàn)有的脫殼方案一般具有極強(qiáng)的針對(duì)性,每種殼程序的加殼方法、運(yùn)行流程、采用的算法都存在差異。因此每種脫殼方法可能只對(duì)一種殼或一種殼的某個(gè)版本有效,通用性較差。



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

本發(fā)明提供了一種帶殼軟件脫殼的方法及裝置,其目的是為了解決現(xiàn)有的軟件脫殼方案具有極強(qiáng)的針對(duì)性,而通用性較差的問題。

為了達(dá)到上述目的,本發(fā)明的實(shí)施例提供了一種帶殼軟件脫殼的方法,該方法包括:

在脫殼系統(tǒng)上運(yùn)行待脫殼的帶殼軟件時(shí),通過脫殼系統(tǒng)的加載接口將帶殼軟件的原始程序的明文數(shù)據(jù)存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息;

通過加載接口獲取存儲(chǔ)信息;

根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù)。

優(yōu)選地,在脫殼系統(tǒng)上運(yùn)行待脫殼的帶殼軟件之前,該方法還包括:

獲取原始的脫殼系統(tǒng)的源代碼;

在源代碼中增加一獲取指令,獲取指令用于將脫殼系統(tǒng)的加載接口配置具有獲取內(nèi)存地址并讀取內(nèi)存的功能;

對(duì)增加獲取指令的源代碼進(jìn)行編譯,得到編譯后的脫殼系統(tǒng)的系統(tǒng)文件,并運(yùn)行脫殼系統(tǒng)。

優(yōu)選地,通過脫殼系統(tǒng)的加載接口將帶殼軟件的原始程序的明文數(shù)據(jù)存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息,包括:

若帶殼軟件的原始程序只有一次加密過程,則將帶殼軟件的原始程序的明文數(shù)據(jù)一次性存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息;或

若帶殼軟件的原始程序被分段加密,則將帶殼軟件的原始程序的明文數(shù)據(jù)分段存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息以及分段數(shù)據(jù),分段數(shù)據(jù)至少包括帶殼軟件的原始程序的分段信息以及每個(gè)分段存儲(chǔ)至系統(tǒng)內(nèi)存的時(shí)間戳。

優(yōu)選地,根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù),包括:

若帶殼軟件的原始程序只有一次加密過程,則根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù),或使脫殼系統(tǒng)根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù),并從脫殼系統(tǒng)中讀取帶殼軟件的原始程序的明文數(shù)據(jù);或

若帶殼軟件的原始程序被分段加密,則根據(jù)分段信息、時(shí)間戳以及存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取每個(gè)分段對(duì)應(yīng)的明文數(shù)據(jù),并對(duì)每個(gè)分段對(duì)應(yīng)的明文數(shù)據(jù)進(jìn)行匯總,得到待脫殼軟件的原始程序的明文數(shù)據(jù)并存儲(chǔ)。

優(yōu)選地,通過加載接口獲取存儲(chǔ)信息,包括:

通過加載接口將存儲(chǔ)信息寫入文件或者實(shí)時(shí)輸出。

為了實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種帶殼軟件脫殼的裝置,該裝置包括:

存儲(chǔ)模塊,用于在脫殼系統(tǒng)上運(yùn)行待脫殼的帶殼軟件時(shí),通過脫殼系統(tǒng)的加載接口將帶殼軟件的原始程序的明文數(shù)據(jù)存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息;

獲取模塊,用于通過加載接口獲取存儲(chǔ)信息;

數(shù)據(jù)讀取模塊,用于根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù)。

優(yōu)選地,該裝置還包括:

編譯模塊,用于存儲(chǔ)模塊在脫殼系統(tǒng)上運(yùn)行待脫殼的帶殼軟件之前,

獲取原始的脫殼系統(tǒng)的源代碼;

在源代碼中增加一獲取指令,獲取指令用于將脫殼系統(tǒng)的加載接口配置具有獲取內(nèi)存地址并讀取內(nèi)存的功能;

對(duì)增加獲取指令的源代碼進(jìn)行編譯,得到編譯后的脫殼系統(tǒng)的系統(tǒng)文件,并運(yùn)行脫殼系統(tǒng)。

優(yōu)選地,存儲(chǔ)模塊包括:

第一存儲(chǔ)子模塊,用于若帶殼軟件的原始程序只有一次加密過程時(shí),將帶殼軟件的原始程序的明文數(shù)據(jù)一次性存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息;

第二存儲(chǔ)子模塊,用于若帶殼軟件的原始程序被分段加密時(shí),將帶殼軟件的原始程序的明文數(shù)據(jù)分段存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息以及分段數(shù)據(jù),分段數(shù)據(jù)至少包括帶殼軟件的原始程序的分段信息以及每個(gè)分段存儲(chǔ)至系統(tǒng)內(nèi)存的時(shí)間戳。

優(yōu)選地,數(shù)據(jù)讀取模塊包括:

第一讀取子模塊,用于若帶殼軟件的原始程序只有一次加密過程時(shí),根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù),或使脫殼系統(tǒng)根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù),并從脫殼系統(tǒng)中讀取帶殼軟件的原始程序的明文數(shù)據(jù);

第二讀取子模塊,用于若帶殼軟件的原始程序被分段加密時(shí),根據(jù)分段信息、時(shí)間戳以及存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取每個(gè)分段對(duì)應(yīng)的明文數(shù)據(jù),并對(duì)每個(gè)分段對(duì)應(yīng)的明文數(shù)據(jù)進(jìn)行匯總,得到待脫殼軟件的原始程序的明文數(shù)據(jù)并存儲(chǔ)。

優(yōu)選地,獲取模塊用于:

通過加載接口將存儲(chǔ)信息寫入文件或者實(shí)時(shí)輸出。

本發(fā)明的上述方案至少包括以下有益效果:

本發(fā)明提供的帶殼軟件脫殼方法及裝置,直接通過加載接口獲取明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息并讀取原始程序文件的明文數(shù)據(jù),無需對(duì)每種殼程序進(jìn)行邏輯分析或者流程追蹤,脫殼效率較高;且本發(fā)明通過加載接口進(jìn)行軟件脫殼,可適用于相同接口的系統(tǒng)進(jìn)行多種帶殼軟件的脫殼,包括被分段加密的帶殼軟件,具有較強(qiáng)的通用性。

附圖說明

圖1為本發(fā)明的第一實(shí)施例提供的帶殼軟件脫殼的方法的基本步驟流程圖;

圖2為本發(fā)明的第二實(shí)施例提供的帶殼軟件脫殼的方法的基本步驟流程圖;

圖3為本發(fā)明的第三實(shí)施例提供的帶殼軟件脫殼的方法的基本步驟流程圖;

圖4為本發(fā)明的第四實(shí)施例提供的帶殼軟件脫殼的方法的基本步驟流程圖;

圖5為本發(fā)明的第五實(shí)施例提供的帶殼軟件脫殼的方法裝置的結(jié)構(gòu)示意圖。

具體實(shí)施方式

為使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例進(jìn)行詳細(xì)描述。

第一實(shí)施例

參見圖1,本發(fā)明的第一實(shí)施例提供了一種帶殼軟件脫殼的方法,該方法包括:

步驟101,在脫殼系統(tǒng)上運(yùn)行待脫殼的帶殼軟件時(shí),通過脫殼系統(tǒng)的加載接口將帶殼軟件的原始程序的明文數(shù)據(jù)存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息。

其中,加載接口用于將原始程序的明文數(shù)據(jù)存儲(chǔ)至系統(tǒng)內(nèi)存中,并記錄相應(yīng)的存儲(chǔ)信息(內(nèi)存中的起始地址、占用內(nèi)存大小等信息)。通常情況下,帶殼軟件的原始程序的明文數(shù)據(jù)存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存時(shí)都需經(jīng)過加載接口來實(shí)現(xiàn),因此,加載接口可有效地記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息。

步驟102,通過加載接口獲取存儲(chǔ)信息。

其中,通過加載接口獲取存儲(chǔ)信息,也就是使加載接口提供它所記錄的通過加載接口獲取存儲(chǔ)信息。

步驟103,根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù)。

其中,根據(jù)加載接口獲取的存儲(chǔ)信息,直接從內(nèi)存中讀取原始程序的明文數(shù)據(jù)。

通常情況下,殼程序?qū)υ汲绦蜃龅奶幚矸桨父鞑幌嗤?,但所有的殼程序都只是在原始程序之前運(yùn)行的一段程序,殼程序最終都要調(diào)用原始程序,并保證原始程序正常運(yùn)行。

殼程序的一般流程是,找到加密壓縮后的原始程序包(此時(shí)的原始程序以文件形式存在),對(duì)其進(jìn)行解密解壓縮等操作,殼程序通過加載接口將原始程序文件的明文數(shù)據(jù)載入系統(tǒng)內(nèi)存,之后系統(tǒng)開始運(yùn)行原始程序;然而,開發(fā)者難以不通過殼程序而直接從系統(tǒng)內(nèi)存中獲得原始程序的明文數(shù)據(jù)。

因此,本發(fā)明的實(shí)施例中,為了解決上述問題,直接通過加載接口獲取明 文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息并讀取原始程序文件的明文數(shù)據(jù),無需對(duì)每種殼程序進(jìn)行邏輯分析或者流程追蹤,脫殼效率較高;且本發(fā)明通過加載接口進(jìn)行軟件脫殼,可適用于相同接口的系統(tǒng)進(jìn)行多種帶殼軟件的脫殼,具有較強(qiáng)的通用性。

本發(fā)明的上述實(shí)施例中,步驟102包括:

通過加載接口將存儲(chǔ)信息寫入文件或者實(shí)時(shí)輸出。

其中,可加載接口將明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息寫入特定的文件或者實(shí)時(shí)輸出,用于軟件脫殼。

第二實(shí)施例

參見圖2,本發(fā)明的第二實(shí)施例提供了一種帶殼軟件脫殼的方法,該方法包括:

步驟201,獲取原始的脫殼系統(tǒng)的源代碼。

其中,源碼即編寫原始的脫殼系統(tǒng)的計(jì)算機(jī)語言。

步驟202,在源代碼中增加一獲取指令,獲取指令用于將脫殼系統(tǒng)的加載接口配置具有獲取內(nèi)存地址并讀取內(nèi)存的功能。

通常情況下,加載接口只用于將原始程序的明文數(shù)據(jù)存儲(chǔ)至系統(tǒng)內(nèi)存中,而本發(fā)明的實(shí)施例中,通過在在源代碼中增加獲取指令,使加載接口在執(zhí)行原有功能的過程中,同時(shí)執(zhí)行獲取內(nèi)存地址并讀取內(nèi)存的功能,以便于脫殼系統(tǒng)得到相應(yīng)的內(nèi)存地址。

步驟203,對(duì)增加獲取指令的源代碼進(jìn)行編譯,得到編譯后的脫殼系統(tǒng)的系統(tǒng)文件,并運(yùn)行脫殼系統(tǒng)。

其中,源代碼進(jìn)行編譯后才能得到系統(tǒng)文件并運(yùn)行。

通常情況下,對(duì)源代碼進(jìn)行編譯得到的是系統(tǒng)鏡像文件(比如安卓系統(tǒng)),將系統(tǒng)鏡像文件安裝到硬件環(huán)境或者虛擬機(jī)上,便可正常運(yùn)行脫殼系統(tǒng)。

步驟204,在脫殼系統(tǒng)上運(yùn)行待脫殼的帶殼軟件時(shí),通過脫殼系統(tǒng)的加載接口將帶殼軟件的原始程序的明文數(shù)據(jù)存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息。

步驟205,通過加載接口獲取存儲(chǔ)信息,

步驟206,根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù) 據(jù)。

本發(fā)明的上述實(shí)施例中,通過對(duì)脫殼系統(tǒng)的源代碼進(jìn)行修改,增加獲取指令,使加載接口具有獲取內(nèi)存地址并讀取內(nèi)存的功能,可直接在系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù),無需對(duì)每種殼程序進(jìn)行邏輯分析或者流程追蹤,脫殼效率較高。

第三實(shí)施例

參見圖3,本發(fā)明的第三實(shí)施例提供了一種帶殼軟件脫殼的方法,該方法包括:

步驟301,在脫殼系統(tǒng)上運(yùn)行待脫殼的帶殼軟件時(shí),若帶殼軟件的原始程序只有一次加密過程,則將帶殼軟件的原始程序的明文數(shù)據(jù)一次性存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息。

其中,若帶殼軟件的原始程序只有一次加密過程,則將原始程序的明文數(shù)據(jù)一次性存儲(chǔ)至系統(tǒng)內(nèi)存中,并記錄一次存儲(chǔ)信息即可。

步驟302,在脫殼系統(tǒng)上運(yùn)行待脫殼的帶殼軟件時(shí),若帶殼軟件的原始程序被分段加密,則將帶殼軟件的原始程序的明文數(shù)據(jù)分段存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息以及分段數(shù)據(jù),分段數(shù)據(jù)至少包括帶殼軟件的原始程序的分段信息以及每個(gè)分段存儲(chǔ)至系統(tǒng)內(nèi)存的時(shí)間戳。

其中,時(shí)間戳通常是一個(gè)字符序列,用于唯一地標(biāo)識(shí)某一刻的時(shí)間。

其中,若帶殼軟件的原始程序被分段加密,則明文數(shù)據(jù)可能在不同時(shí)段分別被載入系統(tǒng)內(nèi)存中,也就是說,存儲(chǔ)過程也分段進(jìn)行,并且需記錄分段信息以及時(shí)間戳,以便脫殼系統(tǒng)對(duì)被分段的明文數(shù)據(jù)進(jìn)行整合。

步驟303,通過加載接口獲取存儲(chǔ)信息;

步驟304,根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù)。

本發(fā)明的上述實(shí)施例中,對(duì)一次性加密的帶殼軟件進(jìn)行一次性存儲(chǔ)至系統(tǒng)內(nèi)存;對(duì)分段加密的帶殼程序進(jìn)行分段存儲(chǔ),并記錄原始程序的分段信息以及每個(gè)分段存儲(chǔ)至系統(tǒng)內(nèi)存的時(shí)間戳,以便于對(duì)被分段的明文數(shù)據(jù)進(jìn)行整合;本發(fā)明通過對(duì)一次性加密的帶殼軟件以及分段加密的帶殼程序采用不同的處理 流程,具有較強(qiáng)的通用性。

第四實(shí)施例

參見圖4,本發(fā)明的第四實(shí)施例提供了一種帶殼軟件脫殼的方法,該方法包括:

步驟401,在脫殼系統(tǒng)上運(yùn)行待脫殼的帶殼軟件時(shí),若帶殼軟件的原始程序只有一次加密過程,則將帶殼軟件的原始程序的明文數(shù)據(jù)一次性存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息。

步驟402,在脫殼系統(tǒng)上運(yùn)行待脫殼的帶殼軟件時(shí),若帶殼軟件的原始程序被分段加密,則將帶殼軟件的原始程序的明文數(shù)據(jù)分段存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息以及分段數(shù)據(jù),分段數(shù)據(jù)至少包括帶殼軟件的原始程序的分段信息以及每個(gè)分段存儲(chǔ)至系統(tǒng)內(nèi)存的時(shí)間戳。

步驟403,通過加載接口獲取存儲(chǔ)信息。

步驟404,若帶殼軟件的原始程序只有一次加密過程,則根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù),或使脫殼系統(tǒng)根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù),并從脫殼系統(tǒng)中讀取帶殼軟件的原始程序的明文數(shù)據(jù)。

其中,對(duì)于一次性加密的帶殼軟件,可直接從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù);或者待脫殼系統(tǒng)讀取之后,對(duì)系統(tǒng)的讀取結(jié)果進(jìn)行攔截(從脫殼系統(tǒng)中讀取帶殼軟件的原始程序的明文數(shù)據(jù))。

步驟405,若帶殼軟件的原始程序被分段加密,則根據(jù)分段信息、時(shí)間戳以及存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取每個(gè)分段對(duì)應(yīng)的明文數(shù)據(jù),并對(duì)每個(gè)分段對(duì)應(yīng)的明文數(shù)據(jù)進(jìn)行匯總,得到待脫殼軟件的原始程序的明文數(shù)據(jù)并存儲(chǔ)。

其中,對(duì)于分段加密的帶殼軟件,需根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取每個(gè)分段對(duì)應(yīng)的明文數(shù),并根據(jù)分段信息、時(shí)間戳對(duì)每個(gè)分段對(duì)應(yīng)的明文數(shù)據(jù)進(jìn)行匯總,以得到完整的明文數(shù)據(jù)并存儲(chǔ)。

本發(fā)明的上述實(shí)施例中,通過對(duì)一次性加密的帶殼軟件進(jìn)行一次性讀取;對(duì)分段加密的帶殼程序進(jìn)行分段讀取并依據(jù)分段信息以及時(shí)間戳進(jìn)行匯總,最終得到完整的明文數(shù)據(jù),具有較強(qiáng)的通用性。

第五實(shí)施例

參見圖5,本發(fā)明的第五實(shí)施例提供了一種帶殼軟件脫殼的裝置,該裝置包括:

存儲(chǔ)模塊501,用于在脫殼系統(tǒng)上運(yùn)行待脫殼的帶殼軟件時(shí),通過脫殼系統(tǒng)的加載接口將帶殼軟件的原始程序的明文數(shù)據(jù)存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息;

獲取模塊502,用于通過加載接口獲取存儲(chǔ)信息;

數(shù)據(jù)讀取模塊503,用于根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù)。

本發(fā)明的上述實(shí)施例中,直接通過加載接口獲取明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息并讀取原始程序文件的明文數(shù)據(jù),無需對(duì)每種殼程序進(jìn)行邏輯分析或者流程追蹤,脫殼效率較高;且本發(fā)明通過加載接口進(jìn)行軟件脫殼,可適用于相同接口的系統(tǒng)進(jìn)行多種帶殼軟件的脫殼,具有較強(qiáng)的通用性。

優(yōu)選地,該裝置還包括:

編譯模塊,用于存儲(chǔ)模塊501在脫殼系統(tǒng)上運(yùn)行待脫殼的帶殼軟件之前,

獲取原始的脫殼系統(tǒng)的源代碼;

在源代碼中增加一獲取指令,獲取指令用于將脫殼系統(tǒng)的加載接口配置具有獲取內(nèi)存地址并讀取內(nèi)存的功能;

對(duì)增加獲取指令的源代碼進(jìn)行編譯,得到編譯后的脫殼系統(tǒng)的系統(tǒng)文件,并運(yùn)行脫殼系統(tǒng)。

優(yōu)選地,存儲(chǔ)模塊501包括:

第一存儲(chǔ)子模塊,用于若帶殼軟件的原始程序只有一次加密過程時(shí),將帶殼軟件的原始程序的明文數(shù)據(jù)一次性存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息;

第二存儲(chǔ)子模塊,用于若帶殼軟件的原始程序被分段加密時(shí),將帶殼軟件的原始程序的明文數(shù)據(jù)分段存儲(chǔ)至脫殼系統(tǒng)的系統(tǒng)內(nèi)存中,并記錄明文數(shù)據(jù)存儲(chǔ)在系統(tǒng)內(nèi)存中的存儲(chǔ)信息以及分段數(shù)據(jù),分段數(shù)據(jù)至少包括帶殼軟件的原始程序的分段信息以及每個(gè)分段存儲(chǔ)至系統(tǒng)內(nèi)存的時(shí)間戳。

優(yōu)選地,數(shù)據(jù)讀取模塊503包括:

第一讀取子模塊,用于若帶殼軟件的原始程序只有一次加密過程時(shí),根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù),或使脫殼系統(tǒng)根據(jù)存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取帶殼軟件的原始程序的明文數(shù)據(jù),并從脫殼系統(tǒng)中讀取帶殼軟件的原始程序的明文數(shù)據(jù);

第二讀取子模塊,用于若帶殼軟件的原始程序被分段加密時(shí),根據(jù)分段信息、時(shí)間戳以及存儲(chǔ)信息從系統(tǒng)內(nèi)存中讀取每個(gè)分段對(duì)應(yīng)的明文數(shù)據(jù),并對(duì)每個(gè)分段對(duì)應(yīng)的明文數(shù)據(jù)進(jìn)行匯總,得到待脫殼軟件的原始程序的明文數(shù)據(jù)并存儲(chǔ)。

優(yōu)選地,獲取模塊502用于:

通過加載接口將存儲(chǔ)信息寫入文件或者實(shí)時(shí)輸出。

需要說明的是,本發(fā)明實(shí)施例提供的帶殼軟件脫殼的裝置是應(yīng)用上述方法的裝置,即上述方法的所有實(shí)施例均適用于該裝置,且均能達(dá)到相同或相似的有益效果。

以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。

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