国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于殼技術的軟件保護方法

      文檔序號:6398699閱讀:614來源:國知局
      專利名稱:一種基于殼技術的軟件保護方法
      技術領域
      本發(fā)明涉及軟件加密技術領域,具體涉及一種基于殼技術的軟件保護方法。
      背景技術
      隨著計算機軟件技術的發(fā)展,惡意軟件感染破壞能力的增強、破解者水平的大幅提升,傳統(tǒng)的軟加密和硬加密方案對于安全性要求高的軟件來說,保護效果不明顯,現(xiàn)在已經(jīng)發(fā)展到其他很多成熟的方式注冊驗證、軟件水印、反跟蹤技術、加殼技術等。其中殼加密技術是軟件加密中最常見、最安全的一種技術。加殼技術保護方式是指利用某種算法,對可移植的可執(zhí)行文件PE進行加密、壓縮,給PE文件加上一個外殼。軟件殼其實是一段為了防止軟件被非法使用、篡改、拷貝等的程序。通常這部分代碼比原程序優(yōu)先執(zhí)行并且取得控制權,這樣就起到保護軟件的作用。加了殼的PE文件仍然能直接運行,這個外殼程序負責把PE文件原程序解密解壓到內(nèi)存里,并且把控制權還給解壓解密后的原程序。整個過程都是運行在內(nèi)存里,并且程序運行速度基本沒有影響,解密、解壓過程完全透明。PE文件格式
      PE 二進制文件格式是微軟操作系統(tǒng)系列中的子集。PE文件格式二進制數(shù)據(jù)流是線性的。它從一個MS-DOS頭部結構開始,一個模式的程序殘余緊隨其后,接著就是PE文件頭,其中PE文件頭包含映像文件頭(File Header)和可選文件頭部(Optional Header),這部分后面的結構就是區(qū)塊表頭,緊跟在區(qū)塊表頭之后就是全部的區(qū)塊(Selection),PE文件的尾部是其他數(shù)據(jù),其中包含Code View調(diào)試信息、COFF符號表信息、COFF行號信息等。PE文件格式總體結構從大體上分為五大部分DOS首部(DOS Header)、PE文件頭(PE Header)、區(qū)塊塊表(Section Table)、塊(Section)、調(diào)試信息。其中,PE文件格式結構包含三個非常重要的表頭D0S Header :為了兼容以前的平臺;PE Header PE文件相關配置信息;SeCtion Header PE文件各個區(qū)塊的相關信息。PE裝載器加載PE文件的時候,就是根據(jù)這個三個表頭所提供的文件信息把文件各部分加載映射到內(nèi)存中各自相應的位置,保證與磁盤數(shù)據(jù)結構布局的一致性。通過遍歷在磁盤里PE文件內(nèi)部信息來決定哪一部分被映射,一旦文件被加載到內(nèi)存里之后,內(nèi)存中的數(shù)據(jù)結構布局與外存(磁盤)上的數(shù)據(jù)結構布局的一致性。因此,如果清楚在外存(磁盤)中數(shù)據(jù)結構中存在的內(nèi)容,那么基本上都可以在內(nèi)存映射文件里找到一樣的數(shù)據(jù);但是在內(nèi)存映像文件中,通常已經(jīng)改變了這些數(shù)據(jù)之間的相對位置,數(shù)據(jù)偏移地址已經(jīng)和在外存上不一樣了,無論如何,這些全部的數(shù)據(jù)都可以將外存文件偏移與內(nèi)存映像文件偏移進行轉(zhuǎn)換。加了殼的PE文件如果要實現(xiàn)脫殼,第一步也是最重要的一步就是找到PE文件原程序入口地址,然后抓取內(nèi)存PE文件的映像,還原程序。

      發(fā)明內(nèi)容
      針對上述現(xiàn)有技術,本發(fā)明要解決的技術問題是現(xiàn)有加了殼的PE文件,殼加載本身就提供了一個明顯斷點給脫殼者,即無論什么殼最終都要轉(zhuǎn)的原程序的入口地址,然后成功脫掉外殼;其最終都要把控制權還給原程序,因此不能夠?qū)⑷肟诘刂愤@個分界點進行隱藏,因此只能針對脫殼的第二步,采取一定保護措施讓脫殼者即使得到的內(nèi)存PE文件映像也沒有很好的辦法還原成原程序。為了解決上述技術問題,本發(fā)明采用如下技術方案
      一種基于殼技術的軟件保護方法,其特征在于,包括以下步驟,
      一、加密步驟對內(nèi)存中映像文件的區(qū)塊數(shù)據(jù)、資源數(shù)據(jù)進行加密;
      二、外殼步驟外殼程序首先運行,解密被加密的數(shù)據(jù),修改相關信息,還原PE文件的原程序。三、外殼添加步驟在PE文件中新建用于存放外殼部分數(shù)據(jù)的區(qū)塊,同時將PE文件的原區(qū)塊表部分添加到該區(qū)塊表頭;
      四、PE文件處理步驟JfPE文件讀入的內(nèi)存,然后對PE文件內(nèi)存映像的附加數(shù)據(jù)、Import Tabel、資源數(shù)據(jù)進行處理。作為本發(fā)明進一步的改進,將所述外殼步驟中的PE文件原程序進行亂序處理。更進一步地,所述亂序處理包括如下三步
      ①找出程序代碼中的跳轉(zhuǎn)指令jmp、函數(shù)調(diào)用指令call和條件專用指令jcc;②篩選步驟①中指令地址,如果跳轉(zhuǎn)16位以下的直接不考慮,如果等于16位,看偏移是否足夠跳轉(zhuǎn)到花指令的VAR。如果高于16位,直接跳轉(zhuǎn);
      ③當遇到偏移的時候,保存原指令要跳轉(zhuǎn)的地址。然后跳轉(zhuǎn)到花指令空間,然后在花指令執(zhí)行完的地方增添一個跳轉(zhuǎn)到原先要跳轉(zhuǎn)的那個地址。作為本發(fā)明進一步的改進,在所述亂序處理時的同時加入用來防御靜態(tài)反編譯的花指令;
      作為本發(fā)明進一步的改進,在外殼程序中使用了 SHE技術來反動態(tài)跟蹤。所述加密步驟的詳細處理過程為將要加殼的PE文件從磁盤加載到內(nèi)存里面,接著對PE文件內(nèi)存映像每個相關頭、區(qū)塊進行處理,主要是對映像文件區(qū)塊數(shù)據(jù)進行加密。所述外殼添加步驟的詳細處理過程為計算代碼段的CRC32值并寫入到PE文件的頭里面,特殊數(shù)據(jù)處理,輸入表的構建,最終把外殼程序附加到該PE文件的內(nèi)存映像里,這樣就組成了新的加了殼的PE文件。最后,加了殼的PE文件開始運行殼程序的部分,它將對原PE文件程序就行CRC32校驗,解密區(qū)塊數(shù)據(jù),輸入表的重建,程序亂序,最后跳轉(zhuǎn)到原程序入口,把控制權移交給原程序。VAR 是variable變量、可變物的簡寫,在多種計算機編程語言中,var被用作定義變量的關鍵字。與現(xiàn)有技術相比,本發(fā)明具有以下有益效果
      一、本發(fā)明將原程序和外殼代碼進行亂序,到達原程序與外殼的融合,大大增強保護軟件的能力;通過本發(fā)明加密保護的軟件,即使脫殼者找到了原程序入口地址,抓取了 PE文件內(nèi)存映像,將把殼脫掉,也很難還原PE文件原程序;因為一旦把殼脫掉,那么原程序的一部分也給脫掉了,那么這樣就不能將原程序還原了,從而到達保護軟件的目的;
      二、本發(fā)明在實現(xiàn)的加殼過程中還可以結合多種軟件保護技術來增強抵御分析、破解的能力,到達更好的保護軟件的目的。


      圖1為本發(fā)明的總設計圖2為本發(fā)明的框架結構圖3為基于融合的軟件保護模型。
      具體實施例方式下面將結合附圖及具體實施方式
      對本發(fā)明作進一步的描述。本發(fā)明包括原PE文件處理和外殼程序,所述原PE文件處理包括加殼程序和PE文件的重組過程將要加殼的PE文件從磁盤加載到內(nèi)存里面,接著對PE文件內(nèi)存映像每個相關頭、區(qū)塊進行處理,主要是對映像文件區(qū)塊數(shù)據(jù)進行加密,計算代碼段的CRC32值并寫入到PE文件的頭里面,特殊數(shù)據(jù)處理,輸入表的構建,最終把外殼程序附加到該PE文件的內(nèi)存映像里,這樣就組成了新的加了殼PE文件了。所述外殼程序,加了殼的PE文件開始運行殼程序的部分,它將對原PE文件程序就行CRC32校驗,解密區(qū)塊數(shù)據(jù),輸入表的重建,程序亂序,最后跳轉(zhuǎn)到原程序入口,把控制權移交給原程序。從文件格式分布角度來看,加了殼的PE文件由四部分組成。分別是PE文件頭、被加密的文件區(qū)塊數(shù)據(jù)、外殼程序、附加數(shù)據(jù)。原PE文件的區(qū)塊數(shù)據(jù)以加密的方式存放。原PE文件將新增一個區(qū)塊,用來存放外殼程序數(shù)據(jù)。其中在該新增的區(qū)塊數(shù)據(jù)中,以ShellEndO為界線,在這之前的數(shù)據(jù)(主要是資源中的一些數(shù)據(jù)如圖標等)以加密的方式存放,而在之后的數(shù)據(jù)沒有做任何處理,也就是以明文的方式存放的。加了殼的PE文件程序入口地址指向外殼的入口地址ShellStartO。引導部分進行一些初始化工作,有時如果加密了后面一部分外殼程序,那在這里將進行解壓。之后利用來進行校驗PE文件的完整性,防止脫殼者動態(tài)跟蹤、脫殼、反匯編。如果校驗成功,那么外殼程序繼續(xù)執(zhí)行解壓還原PE文件程序、代碼亂序、輸入表處理等等。
      實施例所述亂序處理中的亂序指令的結構體如下typedef struct —CODE—FLOW—NODE
      {
      struct —CODE—FLOW—NODE *pNext;//下一個節(jié)點
      BOOL bGoDown; //是否向下跳
      DWORD dwBits;//跳轉(zhuǎn)范圍
      DWORD dwType; // 指令類型
      BOOL bFar;//是否是遠跳
      DWORD dwMemoryAddress; // 當前內(nèi)存地址
      LPBYTE pFiIeAddress;// 當前文件地址
      DWORD dwGotoMemoryAddress; // 跳轉(zhuǎn)后的內(nèi)存地址
      權利要求
      1.一種基于殼技術的軟件保護方法,其特征在于,包括以下步驟,一、加密步驟對內(nèi)存中映像文件的區(qū)塊數(shù)據(jù)、資源數(shù)據(jù)進行加密;二、外殼步驟外殼程序首先運行,解密被加密的數(shù)據(jù),修改相關信息,還原PE文件的原程序。三、外殼添加步驟在PE文件中新建用于存放外殼部分數(shù)據(jù)的區(qū)塊,同時將PE文件的原區(qū)塊表部分添加到該區(qū)塊表頭;四、PE文件處理步驟將PE文件讀入的內(nèi)存,然后對PE文件內(nèi)存映像的附加數(shù)據(jù)、Import Tabel、資源數(shù)據(jù)進行處理。
      2.根據(jù)權利要求1所述的基于殼技術的軟件保護方法,其特征在于,將所述外殼步驟中的PE文件原程序進行亂序處理。
      3.根據(jù)權利要求2所述的基于殼技術的軟件保護方法,其特征在于,所述亂序處理包括如下三步①找出程序代碼中的跳轉(zhuǎn)指令jmp、函數(shù)調(diào)用指令call和條件專用指令jcc;②篩選步驟①中的指令地址,如果跳轉(zhuǎn)16位以下的直接不考慮,如果等于16位,看偏移是否足夠跳轉(zhuǎn)到花指令的VAR,如果高于16位,直接跳轉(zhuǎn);③當遇到偏移的時候,保存原指令要跳轉(zhuǎn)的地址。然后跳轉(zhuǎn)到花指令空間,然后在花指令執(zhí)行完的地方增添一個跳轉(zhuǎn)到原先要跳轉(zhuǎn)的那個地址。
      4.根據(jù)權利要求3所述的基于殼技術的軟件保護方法,其特征在于,在所述亂序處理時的同時加入用來防御靜態(tài)反編譯的花指令。
      5.根據(jù)權利要求1所述的基于殼技術的軟件保護方法,其特征在于,在外殼程序中使用SHE技術來反動態(tài)跟蹤。
      6.根據(jù)權利要求1所述的基于殼技術的軟件保護方法,其特征在于,所述加密步驟的詳細處理過程為將要加殼的PE文件從磁盤加載到內(nèi)存里面,接著對PE文件內(nèi)存映像每個相關頭、區(qū)塊進行處理,主要是對映像文件區(qū)塊數(shù)據(jù)進行加密。
      7.根據(jù)權利要求1所述的基于殼技術的軟件保護方法,其特征在于,所述外殼添加步驟的詳細處理過程為計算代碼段的CRC32值并寫入到PE文件的頭里面,特殊數(shù)據(jù)處理,輸入表的構建,最終把外殼程序附加到該PE文件的內(nèi)存映像里組成新的加了殼的PE文件。
      全文摘要
      本發(fā)明公開了一種基于殼技術的軟件保護方法,涉及軟件加密技術領域,本發(fā)明基于代碼亂序的機制,將原程序與外殼程序代碼進行亂序來到達融合的目的,并且在代碼亂序的同時加入花指令來防御靜態(tài)反編譯;并在外殼程序中使用SHE技術來反動態(tài)跟蹤。通過本發(fā)明保護的軟件,當破解者將外殼脫掉的同時,也除去了部分的原程序,從而達到保護軟件的目的。
      文檔編號G06F21/10GK103065069SQ20131003152
      公開日2013年4月24日 申請日期2013年1月28日 優(yōu)先權日2013年1月28日
      發(fā)明者陳文宇, 李文, 劉貴松, 歐睿杰, 符明晟, 袁野, 朱建 申請人:電子科技大學
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1