亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        蘭勇 龔捷 劉亦歆

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

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

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

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

        1 硬加密方式

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

        硬加密雖然從安全性上來說比較高,但是缺點(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 軟加密方式

        軟加密是指使用軟件方法來進(jìn)行各種加密保護(hù),隨著軟件保護(hù)技術(shù)的發(fā)展越來越多的軟加密技術(shù)已經(jīng)出現(xià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í)間過期后,就必須注冊(cè)才能夠繼續(xù)使用,使用者必須將自己的身份證號(hào)碼或手機(jī)號(hào)提供給軟件公司,然后軟件開發(fā)公司利用用戶的信息通過注冊(cè)機(jī)計(jì)算出一個(gè)有效的、唯一的序列號(hào)。用戶再利用計(jì)算出的序列號(hào)和用戶信息輸入軟件中,如果信息合法那么相應(yīng)的限制被取消。整個(gè)過程從數(shù)學(xué)的角度看其實(shí)就是映射關(guān)系。常見的映射關(guān)系有四種,如表1:

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

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

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

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

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

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

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

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

        Key-file(注冊(cè)文件保護(hù))文件保護(hù)機(jī)制,用戶不需要輸入序列號(hào)或注冊(cè)碼等信息,充分利用文件來保存驗(yàn)證信息實(shí)現(xiàn)軟件安全性保護(hù)。這種方式其實(shí)是序列號(hào)保護(hù)機(jī)制的變形,只是驗(yàn)證信息保存在文件中,通常key-file文件中的文件格式都是軟件開發(fā)者自行定義的,從原理上來說通常與軟件的配置文件(通常xml格式)有點(diǎn)類似。用戶升級(jí)為正式用戶后,軟件開發(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è)過程用戶不清楚也不并清楚該執(zhí)行過程,并且程序的運(yùn)行速度也沒有明顯的影響。整過過程針對(duì)用戶來說是透明的。

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

        PE文件對(duì)于研究軟件保護(hù),分析、掌握可執(zhí)行文件的組織結(jié)構(gòu)及其執(zhí)行原理是很有必要的。Windows系統(tǒng)中的“WINNT.H”文件中包含PE文件的詳細(xì)格式,常見的PE文件包括:.EXE、.DLL、.OCX、.SYS、.COM 等類型的文件。這種類型的文件在磁盤上的存儲(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)存中,而是通過循環(huán)遍歷文件的內(nèi)部結(jié)構(gòu)來判斷那一部分的內(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)多次加殼。從語義上來說就是對(duì)PE文件進(jìn)行多次加殼,達(dá)到增強(qiáng)軟件的保護(hù)強(qiáng)度。就軟件保護(hù)而言,并不是加殼的次數(shù)與保護(hù)強(qiáng)度成正比的。

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

        3)代碼混淆加殼。現(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外殼加載

        外殼的加載過程如圖4:

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

        2)獲取殼要用的API地址

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

        4)初始化IAT

        5) 重定位

        6)HOOK-API

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

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

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

        常見的脫殼步驟為:首先找到可執(zhí)行原程序的入口地址,再dump可執(zhí)行文件的映像,從加殼后的可執(zhí)行文件自身來看不管什么時(shí)候最終都要轉(zhuǎn)入原程序的入口地址。由于殼技術(shù)本身的要求我們不可能隱藏入口點(diǎn)的地址。那么我們可以采取的方式是讓脫殼者即使dump了可執(zhí)行文件也沒法還原程序。基于這個(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ù)等來增強(qiáng)被分析、破解的軟件保護(hù)技術(shù)。

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

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

        外殼程序: 加殼后的PE文件首先運(yùn)行殼程序時(shí)候,會(huì)對(duì)原來的可執(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理論的鹵蟲卵脫殼問題的研究
        頂管接收端脫殼及混凝土澆筑關(guān)鍵技術(shù)
        河蟹脫殼期間注意事項(xiàng)
        一種基于熵的混沌加密小波變換水印算法
        智慧農(nóng)業(yè)助上安村“脫殼”
        加密與解密
        一種基于LWE的同態(tài)加密方案
        認(rèn)證加密的研究進(jìn)展
        “空殼村”如何“脫殼”
        基于ECC加密的電子商務(wù)系統(tǒng)
        最新中文字幕av无码不卡| 亚洲av日韩一区二三四五六七| 漂亮人妻被强中文字幕乱码| 日本久久精品视频免费| 久久久亚洲欧洲日产国码二区| 欧美人与动牲交a精品| 蜜桃臀无码内射一区二区三区| 日韩欧美精品有码在线观看 | 亚洲熟女少妇精品综合| 免费观看交性大片| 亚洲欧美日韩人成在线播放| 日韩五十路| 亚洲天堂av在线免费看| 青青河边草免费在线看的视频 | 91青青草免费在线视频| 熟女人妻在线中文字幕| 最新国产毛2卡3卡4卡| 亚洲中文字幕无码爆乳| 国产成人精品日本亚洲专区6 | 日韩人妻不卡一区二区三区| 又大又粗又爽18禁免费看| 毛片免费全部无码播放| 日韩精品一区二区av在线| av网站免费在线浏览| 亚洲av无码一区二区三区网址| 国精无码欧精品亚洲一区| 亚洲a人片在线观看网址| 国产偷闻女邻居av在线观看| 97人妻人人揉人人躁九色| 国产又色又爽又刺激在线播放| 无限看片在线版免费视频大全| 中文字幕精品一区二区日本 | 国产亚洲精品熟女国产成人 | 天干天干啦夜天干天2017| 欧美精品久久久久久三级| 中文字幕人妻av一区二区| 日韩av无码中文字幕| 精品亚洲成a人7777在线观看| 欧美久久中文字幕| 国产色视频在线观看了| 国产麻豆剧果冻传媒一区|