• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      軟件加殼技術(shù)的研究與實現(xiàn)

      2020-04-26 01:39:49李璇李林鵬李理
      科技視界 2020年4期
      關(guān)鍵詞:解密加密程序

      李璇 李林鵬 李理

      摘要

      從軟件保護(hù)角度出發(fā),研究對可執(zhí)行文件進(jìn)行加密與壓縮操作,僅在載入內(nèi)存后才對其進(jìn)行解密操作,能夠很好地保護(hù)軟件信息。提供多種軟件保護(hù)方案,兼顧用戶體驗與其實用性、安全性。既對軟件進(jìn)行加密保護(hù)措施,又不影響其使用。

      關(guān)鍵詞

      軟件保護(hù);加殼技術(shù);軟件水印

      中圖分類號: G633.6 ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼: A

      DOI:10.19694/j.cnki.issn2095-2457.2020.04.83

      0 引言

      隨著應(yīng)用軟件提供的服務(wù)越來越普及,各種惡意軟件往往附加在正常軟件上惡意傳播,危害信息安全;另一方面,為了保護(hù)軟件不隨意被他人“借鑒”,必須對軟件中的核心算法和機(jī)密數(shù)據(jù)進(jìn)行保護(hù)。那么研究軟件加殼技術(shù)實現(xiàn)反調(diào)試、反附加等功能,從而增加破解難度,阻礙逆向分析,實現(xiàn)軟件保護(hù)是相當(dāng)有必要的。

      就目前的破解技術(shù)來看,單一的軟件保護(hù)技術(shù)已經(jīng)無法抵擋破解技術(shù)的攻擊,因此我們需要進(jìn)行多種技術(shù)的糅合。目前最常用的保護(hù)技術(shù)是加殼,有加密殼和壓縮殼等,但最常用的還是兩者結(jié)合起來。此外,還有代碼虛擬技術(shù),通過構(gòu)造一個虛擬機(jī),產(chǎn)生一些模擬代碼來模擬被保護(hù)代碼的執(zhí)行,產(chǎn)生出與保護(hù)代碼相同的結(jié)果,這樣就很大程度上阻止了源代碼的泄露。這種代碼虛擬技術(shù)幾乎是目前最好的保護(hù)技術(shù),但其復(fù)雜程度與開發(fā)難度相當(dāng)高。

      1 軟件加殼系統(tǒng)的總體設(shè)計

      軟件加殼系統(tǒng)主要包括三個部分,即Shell部分、加殼部分和水印部分。下面將具體介紹他們的結(jié)構(gòu)與相關(guān)技術(shù)。

      1.1 Shell部分設(shè)計

      Shell需要先于源程序獲取控制權(quán),Shell可以修改源可執(zhí)行文件的組織結(jié)構(gòu),從而能更早控制該程序,對加密后的原程序進(jìn)行解密,且不影響源程序代碼的正常運(yùn)行。Shell的作用是模擬操作系統(tǒng)裝載PE文件,在這個過程中,額外添加解密、解壓縮等步驟的過程。所以在運(yùn)行被保護(hù)程序時,實際是先運(yùn)行了Shell部分的程序代碼。

      Shell部分獲取了程序控制權(quán)后,需要將加密后的部分依次解密、解壓縮,確保其在內(nèi)存中可以被操作系統(tǒng)識別并執(zhí)行,在Shell部分處理完畢后,再將程序控制權(quán)轉(zhuǎn)給源程序,繼續(xù)執(zhí)行源程序部分的代碼。

      1.2 加殼部分設(shè)計

      加殼部分主要對PE文件進(jìn)行操作,對各區(qū)段結(jié)構(gòu)內(nèi)容進(jìn)行壓縮混淆,增加靜態(tài)分析難度。加殼確保被保護(hù)軟件在計算機(jī)上存儲時是加密狀態(tài)的,雖然加殼不能完全防止靜態(tài)分析,但是可以對其進(jìn)行混淆。靜態(tài)分析加殼后的程序時,不能直接獲取被保護(hù)軟件的總體結(jié)構(gòu)與具體函數(shù)等信息。這樣就可以提高被保護(hù)程序的安全性。

      但是加殼后的程序需要先進(jìn)行解密與解壓操作,才可正常使用。因此采用的加密與壓縮算法就需要根據(jù)實際情況來選擇,有的軟件需求強(qiáng)度高一些的算法,這樣就會使運(yùn)行時等候時間變長;有的軟件對啟動速度有要求,就可以選擇加密流程較為簡單的算法,即起到了一定的保護(hù)作用,又不影響程序的正常啟動。在本程序中,也提供了多種加密與壓縮算法可供選擇。

      進(jìn)行加殼操作時,需要先判斷其是否是PE文件。若是,就使用PE解析器對其進(jìn)行解析,方便后續(xù)操作。程序中的一些特殊數(shù)據(jù),如TLS(Thread Local Storage)、數(shù)字證書信息等,在運(yùn)行的時候是不會被加載進(jìn)入內(nèi)存的,因此在加殼時,需要隔離這部分?jǐn)?shù)據(jù),使后續(xù)加密壓縮時不影響數(shù)據(jù)。接下來需要對IAT進(jìn)行處理,首先需要破壞源程序的IAT和重定位表,將其換一個形式存儲。由于修復(fù)IAT和重定位表是脫殼時的重要步驟,因此對于IAT和重定位表,破壞得越徹底,脫殼難度就越大。對于源程序的各個區(qū)段,對其進(jìn)行加密壓縮操作,可以選擇不同的加密算法和壓縮算法。隨后需要對資源段中的數(shù)據(jù)進(jìn)行處理,將如圖標(biāo)版本信息等特殊數(shù)據(jù)隔離,其他資源段的數(shù)據(jù)進(jìn)行壓縮。待各區(qū)段處理完畢后,將所有區(qū)段進(jìn)行融合,進(jìn)行統(tǒng)一處理,這樣就減少了區(qū)塊間隙的個數(shù),進(jìn)一步縮小文件體積。最后,將shell引導(dǎo)段寫入PE文件,以保shell代碼在源程序之前運(yùn)行。

      1.3 水印部分總體設(shè)計

      水印部分采用動態(tài)水印技術(shù)。動態(tài)水印技術(shù)主要分為執(zhí)行狀態(tài)水印、數(shù)據(jù)結(jié)構(gòu)水印和復(fù)活節(jié)彩蛋水印。

      執(zhí)行狀態(tài)水印對內(nèi)存地址走向進(jìn)行編碼生成水印,有時也會根據(jù)指令執(zhí)行順序來生成水印,通過控制地址和操作碼順序的統(tǒng)計特性來執(zhí)行水印檢測。實施起來較為困難。數(shù)據(jù)結(jié)構(gòu)水印通過輸入特定信息激發(fā)程序?qū)⑺⌒畔㈦[藏在諸如堆、?;蛘呷肿兞坑虻某绦驙顟B(tài)中當(dāng)所有信息都輸入完成之后,通過檢測程序變量的當(dāng)前值來進(jìn)行水印提取。但是這種水印無法承受迷亂變換的攻擊。復(fù)活節(jié)彩蛋水印不需要檢測,通過可以顯示版權(quán)信息的輸入產(chǎn)生輸出。但水印隱蔽性較差,可以通過調(diào)試軟件輕松跟蹤和刪除。

      綜合上述三種動態(tài)水印技術(shù),本系統(tǒng)選擇將水印嵌入到函數(shù)中。通過想要加入的版權(quán)信息生成等長的數(shù)據(jù),將數(shù)據(jù)與原代碼中的常量結(jié)合,只有給定一定輸入,水印信息才能被產(chǎn)生并計算出來。由于這種水印是隨著程序的運(yùn)行才產(chǎn)生的,能承受各種變形攻擊。并且,在源程序函數(shù)數(shù)量較多時,很難定位到該水印函數(shù),即使被發(fā)現(xiàn)了,如果試圖修改,程序性能也會受到影響。

      水印算法分為水印信息處理、水印分割、構(gòu)造水印函數(shù)、水印嵌入和水印提取五個部分。

      設(shè)計水印信息包括軟件指紋、軟件所有者、發(fā)行方信息、授權(quán)方信息、時間戳、備注。由于信息不等長,不便于之后對數(shù)據(jù)的處理,所以需要對水印信息進(jìn)行一些提前處理,將其變?yōu)榈乳L的數(shù)據(jù)。由此想到可以計算信息的MD5摘要值后嵌入程序。

      2 軟件加殼技術(shù)的應(yīng)用

      2.1 游戲產(chǎn)業(yè)的應(yīng)用

      在當(dāng)前的計算機(jī)游戲產(chǎn)業(yè)中,盜版程序或一些外掛程序?qū)⒃谟螒虬l(fā)布后的幾天或幾周內(nèi)出現(xiàn)。玩家希望可以盡快地體驗新的游戲玩法,這使得游戲的大部分線上收入是在游戲上市后的較短時間內(nèi)獲得的。如果盜版游戲很快出現(xiàn),就會嚴(yán)重影響游戲的收入。同時外掛插件程序會影響游戲的公平性,導(dǎo)致外掛泛濫、玩家流失。因此,游戲的開發(fā)商們?yōu)榱俗陨硎找媾c玩家的體驗,總是在游戲中應(yīng)用軟件保護(hù)技術(shù)。

      2.2 軟件注冊的應(yīng)用

      如果程序的價值很高,且主要銷售途徑是向公司銷售。公司盜版的損失遠(yuǎn)大于個人盜版。如果公司購買了一份軟件,卻能讓100人同時使用,就大大影響了軟件收入。因此需要軟件保護(hù)技術(shù),來阻止對軟件的惡意破解行為,使其只能按正規(guī)形式購買軟件并使用。這樣就有效地保護(hù)了開發(fā)者的合法權(quán)益。

      2.3 電子授權(quán)技術(shù)

      電子授權(quán)技術(shù)是基于軟件的加密方式,分為序列號和軟件許可兩種。該方法的優(yōu)點是不需要硬件設(shè)備,就可以實現(xiàn)軟件的電子發(fā)行。缺點是受網(wǎng)絡(luò)限制較大,如果沒有網(wǎng)絡(luò),就需要手動計算相關(guān)信息,再獲取序列號導(dǎo)入系統(tǒng)。

      軟件加密行業(yè)的發(fā)展與軟件行業(yè)的發(fā)展是密不可分的。大的發(fā)展環(huán)境下,提供軟件產(chǎn)品的方式已經(jīng)從線下轉(zhuǎn)為線上。因此,軟件加密技術(shù)也要向著線上發(fā)展。就目前的情況而言,加密鎖技術(shù)的發(fā)展空間較小,基于硬件的不便利性使其將會漸漸被電子授權(quán)方式所取代。

      電子授權(quán)技術(shù)正在從序列號方式轉(zhuǎn)向軟件許可的方式,認(rèn)證方法也從手動驗證變?yōu)樽詣域炞C。提出的授權(quán)管理概念,使電子授權(quán)技術(shù)發(fā)展為授權(quán)認(rèn)證、授權(quán)管理和信息統(tǒng)計的綜合平臺,軟件開發(fā)商的授權(quán)信息化能力有了很大的提高。

      3 結(jié)語

      本系統(tǒng)使用C語言編寫,內(nèi)聯(lián)匯編代碼,在Windows 10操作系統(tǒng)下運(yùn)行。提供軟件加殼功能,對可執(zhí)行文件進(jìn)行加密與壓縮操作,僅在載入內(nèi)存后才對其進(jìn)行解密操作,能夠很好地保護(hù)軟件信息。同時添加了軟件水印與軟件指紋技術(shù),使被保護(hù)程序帶有軟件所有者身份信息與軟件開發(fā)授權(quán)信息等,進(jìn)一步保障軟件所有者版權(quán)。

      參考文獻(xiàn)

      [1]段鋼.加密與解密第四版[M].北京:電子工業(yè)出版社,2018.

      [2]范潔.軟件特征和軟件水印在軟件保護(hù)中的應(yīng)用研究[J].計算機(jī)應(yīng)用與軟件,2018.

      [3]李志飛.一種基于安全注冊碼的加密軟件設(shè)計[J].中國科技信息,2018.

      [4]許金超.基于內(nèi)存操作的動態(tài)軟件水印算法[J].通信學(xué)報,2017.

      [5]林小華.基于加密和即時解密的軟件保護(hù)分析[J].自動化與儀器儀表,2016.

      猜你喜歡
      解密加密程序
      解密“熱脹冷縮”
      解密“一包三改”
      少先隊活動(2020年9期)2020-12-17 06:17:31
      炫詞解密
      試論我國未決羈押程序的立法完善
      “程序猿”的生活什么樣
      英國與歐盟正式啟動“離婚”程序程序
      認(rèn)證加密的研究進(jìn)展
      創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
      基于ECC加密的電子商務(wù)系統(tǒng)
      解密“大調(diào)解”
      吴忠市| 阿图什市| 新津县| 叙永县| 寿阳县| 枣强县| 溧水县| 鄂伦春自治旗| 湖南省| 滨州市| 宜章县| 中山市| 梧州市| 十堰市| 新郑市| 秦皇岛市| 天峻县| 武胜县| 甘孜县| 铜梁县| 韶关市| 亳州市| 乌拉特中旗| 江源县| 九龙城区| 元阳县| 许昌市| 河津市| 普定县| 赣榆县| 和静县| 鱼台县| 军事| 灵山县| 兴城市| 仲巴县| 余姚市| 宁强县| 调兵山市| 临洮县| 密山市|