• 
    

    
    

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

      軟件保護(hù)機(jī)制研究

      2014-07-13 18:51:11蘭勇龔捷劉亦歆
      電腦知識(shí)與技術(shù) 2014年5期
      關(guān)鍵詞:脫殼加密

      蘭勇 龔捷 劉亦歆

      摘要:計(jì)算機(jī)安全領(lǐng)域中,軟件保護(hù)一直是很熱門(mén)的研究課題,針對(duì)軟件開(kāi)發(fā)者來(lái)說(shuō)希望自己的軟件在采用軟件和硬件加密的技術(shù)后不能夠被修改或破解。但是任何的軟件破解者只要花費(fèi)足夠的資源和精力,幾乎所有的軟件都能夠被破解和修改。如何提高軟件的保護(hù)能力,提高軟件的安全性是一個(gè)迫在眉睫的問(wèn)題。該文主要分析常見(jiàn)的軟件保護(hù)方法,以及介紹PE文件格式,同時(shí)提出了基于混合的軟件殼保護(hù)模型。

      關(guān)鍵詞:加密;加殼;脫殼;MAC;PE文件

      中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)05-1081-05

      常見(jiàn)的軟件保護(hù)方式包括硬加密和軟加密兩種方式。硬件加密主要是采用加密狗、盤(pán)保護(hù)兩種方式。軟加密保護(hù)主要是充分利用計(jì)算機(jī)硬盤(pán)序列號(hào)、CPU序列號(hào)、MAC等唯一性,利用軟件將硬件的唯一性綁定到一起,有效的形成軟件保護(hù)。常見(jiàn)的軟件保護(hù)包括:軟件水印、注冊(cè)驗(yàn)證、反跟蹤、軟件加殼保護(hù);隨著目前軟件技術(shù)的發(fā)展,以及惡意軟件感染能力的增強(qiáng),采用傳統(tǒng)的軟件保護(hù)方式針對(duì)安全性要求高的軟件來(lái)說(shuō)保護(hù)效果不夠明顯,所以需要提出新的軟件保護(hù)方式。軟件開(kāi)發(fā)者通常會(huì)自主開(kāi)發(fā)軟件加密算法和用戶賬號(hào)統(tǒng)一管理工具來(lái)提高軟件的安全性。

      1 硬加密方式

      常用的硬加密通常采用的方式是將被保護(hù)的軟件與硬件加密鎖有效的綁定到一起,比如一些重要的敏感數(shù)據(jù)、key file授權(quán)文件、加密算法等都存儲(chǔ)到硬件加密鎖中。一般根據(jù)使用CPU的不同分為普通加密鎖和智能加密鎖。

      硬加密雖然從安全性上來(lái)說(shuō)比較高,但是缺點(diǎn)還是比較明顯:

      1)對(duì)于升級(jí)、維護(hù)比較難以管理;

      2)由于需要硬件設(shè)備,所以成本偏高,主要包括生產(chǎn)、運(yùn)輸、安裝等成本;

      3)影響用戶體驗(yàn),因?yàn)樾枰惭b相應(yīng)硬件的設(shè)備驅(qū)動(dòng)和硬件設(shè)備。

      2 軟加密方式

      軟加密是指使用軟件方法來(lái)進(jìn)行各種加密保護(hù),隨著軟件保護(hù)技術(shù)的發(fā)展越來(lái)越多的軟加密技術(shù)已經(jīng)出現(xiàn),比如常見(jiàn)的:注冊(cè)碼保護(hù)方式、功能菜單限制保護(hù)、使用時(shí)間限制保護(hù)、采用網(wǎng)絡(luò)驗(yàn)證機(jī)制、驗(yàn)證文件保護(hù)、反跟蹤技術(shù)保護(hù)、軟件加殼保護(hù)機(jī)制等。

      2.1基于注冊(cè)碼保護(hù)機(jī)制

      注冊(cè)碼其實(shí)就是序列號(hào)保護(hù)機(jī)制,本質(zhì)為防止軟件被盜版而采取的保護(hù)措施。用戶通常從網(wǎng)絡(luò)上下載一個(gè)試用版本的軟件,在使用時(shí)間上有限制,如果時(shí)間過(guò)期后,就必須注冊(cè)才能夠繼續(xù)使用,使用者必須將自己的身份證號(hào)碼或手機(jī)號(hào)提供給軟件公司,然后軟件開(kāi)發(fā)公司利用用戶的信息通過(guò)注冊(cè)機(jī)計(jì)算出一個(gè)有效的、唯一的序列號(hào)。用戶再利用計(jì)算出的序列號(hào)和用戶信息輸入軟件中,如果信息合法那么相應(yīng)的限制被取消。整個(gè)過(guò)程從數(shù)學(xué)的角度看其實(shí)就是映射關(guān)系。常見(jiàn)的映射關(guān)系有四種,如表1:

      表1 序列號(hào)映射函數(shù)

      2.2基于菜單功能限制保護(hù)機(jī)制

      基于菜單功能限制保護(hù)的軟件保護(hù)機(jī)制,主要用于軟件的demo版本,部分菜單功能被限制不能夠使用,通常有兩種方式方法一:使用版本的軟件和正式版本的軟件本身完全不同,使用版本的軟件在菜單中對(duì)于的功能實(shí)現(xiàn)函數(shù)根本就沒(méi)有,也就是只有正式版本中才有相應(yīng)的功能處理函數(shù)。方法二:使用版本和正式版本實(shí)質(zhì)上是一樣的,只是將功能菜單設(shè)置為非激活狀態(tài)或隱藏,只有用戶成功升級(jí)為正式用戶后,被限制的功能才會(huì)解除。對(duì)于破解者來(lái)說(shuō),只需要想辦法如何打開(kāi)這些受限的菜單功能模塊代碼上。

      2.3基于時(shí)間限制保護(hù)策略

      基于時(shí)間限制的軟件保護(hù)機(jī)制主要包括兩種方式:1、總使用時(shí)間限制;2單次使用時(shí)間限制。

      總使用時(shí)間限制主要是針對(duì)試用版本的軟件在試用時(shí)間上的限制,比如某個(gè)軟件試用期限為30天,如果用戶超過(guò)軟件試用期的時(shí)間,此軟件用戶就不能夠再使用了。

      第二種方式,主要是指用戶單次使用試用版過(guò)程中的使用時(shí)間的限制,比如使用版本的軟件單次使用的時(shí)間為20分鐘,20分鐘后就不停的彈出提示用戶購(gòu)買(mǎi)升級(jí)為正式用戶。

      2.4基于key-file文件保護(hù)機(jī)制

      Key-file(注冊(cè)文件保護(hù))文件保護(hù)機(jī)制,用戶不需要輸入序列號(hào)或注冊(cè)碼等信息,充分利用文件來(lái)保存驗(yàn)證信息實(shí)現(xiàn)軟件安全性保護(hù)。這種方式其實(shí)是序列號(hào)保護(hù)機(jī)制的變形,只是驗(yàn)證信息保存在文件中,通常key-file文件中的文件格式都是軟件開(kāi)發(fā)者自行定義的,從原理上來(lái)說(shuō)通常與軟件的配置文件(通常xml格式)有點(diǎn)類(lèi)似。用戶升級(jí)為正式用戶后,軟件開(kāi)發(fā)者會(huì)提供一個(gè)key-file文件,你只需要把這個(gè)文件放到特定的目錄安裝目錄下面,下次啟動(dòng)軟件的時(shí)候會(huì)自動(dòng)尋找驗(yàn)證用戶的合法性。

      2.5基于軟件保護(hù)殼的保護(hù)機(jī)制

      基于加殼技術(shù)的軟件保護(hù)主要是對(duì)可執(zhí)行文件進(jìn)行加密、壓縮。對(duì)要保護(hù)的軟件加上一個(gè)外殼,同時(shí)PE文件任然能夠正常運(yùn)行。外殼程序主要負(fù)責(zé)把受保護(hù)的軟件解壓解密到內(nèi)存中,并且控制權(quán)交還給原程序。整個(gè)過(guò)程用戶不清楚也不并清楚該執(zhí)行過(guò)程,并且程序的運(yùn)行速度也沒(méi)有明顯的影響。整過(guò)過(guò)程針對(duì)用戶來(lái)說(shuō)是透明的。

      3 PE文件結(jié)構(gòu)

      PE文件對(duì)于研究軟件保護(hù),分析、掌握可執(zhí)行文件的組織結(jié)構(gòu)及其執(zhí)行原理是很有必要的。Windows系統(tǒng)中的“WINNT.H”文件中包含PE文件的詳細(xì)格式,常見(jiàn)的PE文件包括:.EXE、.DLL、.OCX、.SYS、.COM 等類(lèi)型的文件。這種類(lèi)型的文件在磁盤(pán)上的存儲(chǔ)格式是有一定的規(guī)律的。

      從總體上看PE文件分為五大部分:1、Dos Header;2、PE Header;3、Section Table;4、Section;5 調(diào)試信息。如圖1所示:

      圖1 IPE文件結(jié)構(gòu)圖

      可執(zhí)行文件加載器加載文件的時(shí)候,并不是一次把可執(zhí)行文件一次性裝入內(nèi)存中,而是通過(guò)循環(huán)遍歷文件的內(nèi)部結(jié)構(gòu)來(lái)判斷那一部分的內(nèi)容被映射到內(nèi)存中。當(dāng)文件被加載到內(nèi)存中,內(nèi)存和外存中的文件數(shù)據(jù)結(jié)構(gòu)已經(jīng)發(fā)生了變化。通??蓤?zhí)行文件在內(nèi)存映射文件中各數(shù)據(jù)塊之間的相對(duì)偏移地址已經(jīng)發(fā)生了改變,同時(shí)科技將內(nèi)存映射文件偏移與外存文件偏移進(jìn)行轉(zhuǎn)換(如圖2):

      圖2 外存與內(nèi)存映像結(jié)構(gòu)圖

      4 加殼軟件保護(hù)模型

      軟件殼其實(shí)就是一段可執(zhí)行代碼用于防止軟件被非法的使用、修改、拷貝等的程序,當(dāng)可執(zhí)行文件加載到內(nèi)存后,外殼程序首選獲得程序的控制權(quán),然后解壓加密還原PE文件,最后把控制權(quán)交還給原PE文件。此模型除了采用代碼亂序,還有加密算法和防破解的分析技術(shù),增強(qiáng)了防止破解者修改程序的能力。

      從技術(shù)層面上分析目前殼軟件的發(fā)展現(xiàn)狀:

      1)多次加殼。從語(yǔ)義上來(lái)說(shuō)就是對(duì)PE文件進(jìn)行多次加殼,達(dá)到增強(qiáng)軟件的保護(hù)強(qiáng)度。就軟件保護(hù)而言,并不是加殼的次數(shù)與保護(hù)強(qiáng)度成正比的。

      2)偽裝加殼。通常通過(guò)改變文件自身的特征屬性來(lái)偽裝自己,從而干擾軟件破解者的分析能力,如果用戶沒(méi)有正確的分辨出外殼的類(lèi)型,破解的時(shí)候?qū)⒒ㄙM(fèi)巨大的資源和時(shí)間,TrickySigner是目前比較流行的偽裝加殼工具。

      3)代碼混淆加殼?,F(xiàn)在JAVA中間代碼的保護(hù)就采用的這種方法,目前.net Obfuscator程序上也采用這種保護(hù)方式。

      4)代碼變化加殼。這種方式主要是采取合適的算法對(duì)代碼進(jìn)行代碼變化,原程序運(yùn)行的時(shí)候外殼程序就需要把亂序的原程序恢復(fù)為正常的。從靜態(tài)反匯編后看到的代碼全是亂序的。

      4.1 加殼原理

      加殼的原理:1)對(duì)PE文件各section區(qū)塊壓縮和加密;2)添加解密和解壓程序到新的section區(qū)塊中,以及添加區(qū)塊頭到區(qū)塊表中;3)最后修改原程序的入口地址;加殼結(jié)構(gòu)如圖3:

      圖3 加殼結(jié)構(gòu)

      4.2外殼加載

      外殼的加載過(guò)程如圖4:

      1)保存程序的入口參數(shù)

      2)獲取殼要用的API地址

      3)解密原程序中的所有區(qū)塊的數(shù)據(jù)

      4)初始化IAT

      5) 重定位

      6)HOOK-API

      7) 跳轉(zhuǎn)到源程序的入口地址

      圖4 加殼可執(zhí)行文件的執(zhí)行過(guò)程

      4.3基于混合的軟件保護(hù)模型

      常見(jiàn)的脫殼步驟為:首先找到可執(zhí)行原程序的入口地址,再dump可執(zhí)行文件的映像,從加殼后的可執(zhí)行文件自身來(lái)看不管什么時(shí)候最終都要轉(zhuǎn)入原程序的入口地址。由于殼技術(shù)本身的要求我們不可能隱藏入口點(diǎn)的地址。那么我們可以采取的方式是讓脫殼者即使dump了可執(zhí)行文件也沒(méi)法還原程序?;谶@個(gè)特性本文采用了基于混合的軟件加殼保護(hù)模型,將原程序和外殼有效的混合到一起。

      圖5 基于混合的軟件保護(hù)模型

      從圖5中可以看出即使脫殼者查找到程序的入口地址,同時(shí)dump可執(zhí)行文件的內(nèi)存映像,也很難還原原程序文件。因?yàn)橐坏┌褮っ摿嗽绦虿糠执a也脫掉了。這樣就很難還原原代碼從而達(dá)到保護(hù)軟件的目的。

      此模型主要是采用代碼亂序的技術(shù)。此技術(shù)就是把原程序打亂,讓脫殼者很難分析和破解。達(dá)到外殼和原程序相互混合的目的,增加軟件的安全性。此模型除了采用代碼亂序技術(shù)以外,也結(jié)合花指令技術(shù)、反-反匯編技術(shù)、以及結(jié)構(gòu)化異常處理技術(shù)等來(lái)增強(qiáng)被分析、破解的軟件保護(hù)技術(shù)。

      4.3.1模型系統(tǒng)架構(gòu)圖

      原可執(zhí)行文件處理包括添加殼程序和可執(zhí)行文件重組工程:將需要加殼的文件從磁盤(pán)加載到內(nèi)存中去,接著對(duì)可執(zhí)行文件內(nèi)存映射每個(gè)相關(guān)頭、區(qū)塊進(jìn)行處理。

      外殼程序: 加殼后的PE文件首先運(yùn)行殼程序時(shí)候,會(huì)對(duì)原來(lái)的可執(zhí)行文件進(jìn)行循環(huán)校驗(yàn),同時(shí)對(duì)原加密的區(qū)塊數(shù)據(jù)進(jìn)行解密,以及重建輸入表,原程序亂序處理,最后還是跳轉(zhuǎn)到原程序的入口地址。如上頁(yè)圖6。

      此保護(hù)模型主要由加密部分、外殼部分、外殼添加部分、可執(zhí)行文件處理部分構(gòu)成,詳細(xì)的加殼程序流程如圖7所示:

      圖7 系統(tǒng)加殼流程圖

      5 結(jié)論

      該文首先分析了軟件加密的兩種方式:硬加密和軟加密,同時(shí)詳細(xì)的介紹了當(dāng)前比較流行的軟件加密的幾種方式。然后采用軟件殼的軟件保護(hù)方式,分析PE文件的結(jié)構(gòu),提出基于混合的代碼保護(hù)模型。假如外殼程序與原程序融合的越緊密,那么起到保護(hù)軟件的作用就越顯著。

      參考文獻(xiàn):

      [1] 李文.基于殼技術(shù)的軟件保護(hù)研究[D].電子科技大學(xué),2012:43-44.

      [2] 楊新柱.可執(zhí)行文件格式分析與應(yīng)用[D].北京郵電大學(xué),2009:30-34.

      [3] 梁曉.惡意代碼行為自動(dòng)化分析的研究與實(shí)現(xiàn)[D].電子科技大學(xué),2008.

      [4] Bruce Schneier,“Security-FOCUS:Attack Trends”,QUEUE,June2005.

      [5] Hodong Lee,“The construction and principal of executable file of windows systems”,Hanvit Media,2005.6.

      猜你喜歡
      脫殼加密
      基于ARIZ理論的鹵蟲(chóng)卵脫殼問(wèn)題的研究
      頂管接收端脫殼及混凝土澆筑關(guān)鍵技術(shù)
      河蟹脫殼期間注意事項(xiàng)
      一種基于熵的混沌加密小波變換水印算法
      智慧農(nóng)業(yè)助上安村“脫殼”
      加密與解密
      一種基于LWE的同態(tài)加密方案
      認(rèn)證加密的研究進(jìn)展
      “空殼村”如何“脫殼”
      基于ECC加密的電子商務(wù)系統(tǒng)
      同仁县| 腾冲县| 定南县| 万州区| 景宁| 苗栗市| 阜城县| 繁昌县| 安丘市| 东源县| 襄樊市| 眉山市| 普定县| 沈阳市| 五莲县| 新邵县| 郸城县| 衡东县| 长寿区| 北票市| 突泉县| 永和县| 比如县| 屏边| 普陀区| 新巴尔虎左旗| 三门峡市| 鄄城县| 塔河县| 中超| 峨眉山市| 安远县| 抚顺市| 昌都县| 崇文区| 上林县| 和龙市| 锡林浩特市| 文安县| 邓州市| 洛浦县|