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

        ?

        軟件安全Shell的實現(xiàn)

        2016-06-17 09:48:17李龍許夢磊張可佳
        電子設(shè)計工程 2016年7期
        關(guān)鍵詞:斷點區(qū)段調(diào)試

        李龍,許夢磊,張可佳

        (東北石油大學(xué)計算機(jī)與信息技術(shù)學(xué)院,黑龍江大慶163318)

        ?

        軟件安全Shell的實現(xiàn)

        李龍,許夢磊,張可佳

        (東北石油大學(xué)計算機(jī)與信息技術(shù)學(xué)院,黑龍江大慶163318)

        摘要:本文基于防止軟件被破解與逆向的目的,通過對PE文件導(dǎo)入表、導(dǎo)出表、重定位表的處理實現(xiàn)She11增加區(qū)段的功能。通過將IsDebuggerPresent與Tjmjng Attacks技術(shù)的融合實現(xiàn)She11自身的反調(diào)試,同時采用She11Code的編碼方式存儲一些敏感信息以及通過“無效操作碼”這一后門接口實現(xiàn)She11自身的反虛擬機(jī)功能。最后通過對Notepad的加She11試驗說明She11具有反調(diào)試與反虛擬機(jī)功能,證明了對軟件加She11具有防止被破解與逆向的功能。

        關(guān)鍵詞:She11;PE文件;IsDebuggerPresent;Tjmjng Attacks技術(shù);無效操作碼

        現(xiàn)在計算機(jī)實現(xiàn)所采用的體系結(jié)構(gòu)是“馮·諾依曼”體系結(jié)構(gòu)[1],正是這種體系結(jié)構(gòu)為了追求執(zhí)行速度而忽略了圖靈機(jī)模型中對程序和數(shù)據(jù)的區(qū)分,將程序(規(guī)則集)和數(shù)據(jù)(狀態(tài)集)同時放到了內(nèi)存中,即使引用了區(qū)段的概念,也沒有明確的區(qū)分?jǐn)?shù)據(jù)與指令,這一天然的瑕疵就是漏洞的本質(zhì)。所以,我們應(yīng)該清醒的認(rèn)識到基于馮·諾依曼機(jī)架構(gòu)的現(xiàn)代電子計算機(jī)取得巨大成功的背后,是圖靈關(guān)于程序不可計算性的預(yù)言[2]。針對圖靈機(jī)停機(jī)問題,我們應(yīng)該意識到軟件漏洞是不可避免的,所以如何使漏洞很少被利用來逆向攻擊軟件就顯得尤為重要。

        一般來說,一個軟件一旦被加殼就有了一定的安全保障,通過對She11中加密算法的研究,來增加She11的反分析性,也就在一定程度上保護(hù)了軟件,使得軟件變得更加安全。

        1 Shell實現(xiàn)的基本原理

        She11作為程序的引導(dǎo)部分著先于預(yù)加殼程序執(zhí)行的基本功能,在She11執(zhí)行過程中通過對預(yù)加殼程序的加密與解密操作,起到了保護(hù)預(yù)加殼程序進(jìn)而減少其被反匯編、逆向的幾率。從理論上說給程序加殼的底線是不能破壞預(yù)加殼程序的執(zhí)行,也就是說預(yù)加殼程序與加殼程序在“正常環(huán)境”下執(zhí)行的效果應(yīng)當(dāng)是一致的。

        從PE文件角度來說,單純的給程序入口點添加外殼而不做任何處理,程序是無法正常執(zhí)行的,主要原因在于破壞了原程序的導(dǎo)入表以及重定位表。微軟的Wjndows操作系統(tǒng)發(fā)展至今其強(qiáng)大的消息映射、事件驅(qū)動機(jī)制[3]使得軟件開發(fā)人員望塵莫及,但是好在Wjndows操作系統(tǒng)提供了強(qiáng)大的動態(tài)鏈接庫機(jī)制,否則一個對話框都要從底層寫起,那么軟件的開發(fā)周期就會長的令人無法忍受。由于有動態(tài)鏈接庫的程序就會有導(dǎo)入表對其處理,程序中如果有兩個以上的動態(tài)鏈接庫那么就會有重定位表。所以對程序加殼需要處理一下幾個問題:

        1.1如何為預(yù)加殼程序添加一個新的區(qū)段

        無論從內(nèi)存的分頁管理還是從磁盤的扇區(qū)調(diào)度來說PE文件總是存在空隙的,正是由于PE文件文件空隙的存在為添加新區(qū)段提供了可能。

        1.2如何修改PE文件的重定位表

        通過解析PE文件獲取文件中的.re1oc區(qū)段,通過對-IMAGE-BASE-RELOCATION結(jié)構(gòu)體的處理,獲取TypeOffset數(shù)組。數(shù)組中每一項DWORD的低12位就是重定位地址。

        1.3如何將外殼程序?qū)懭胍龑?dǎo)段并且改變預(yù)加殼程序的入口點

        將外殼程序編寫成動態(tài)鏈接庫,將動態(tài)鏈接庫以資源的形式寫到引導(dǎo)段中。通過對PE文件的解析,進(jìn)而修改PE文件中-IMAGE-OPTIONAL-HEADER結(jié)構(gòu)體里的程序入口點成員的數(shù)值即可。

        1.4如何處理外殼導(dǎo)入表

        導(dǎo)入表段在可執(zhí)行段中會導(dǎo)致一些諸如訪問受限等權(quán)限問題,導(dǎo)入表段是可讀可寫的,但可執(zhí)行段不是可寫的,所以應(yīng)該將導(dǎo)入表段單獨放到一個區(qū)段中。

        1.5如何實現(xiàn)反調(diào)試技術(shù)

        同時采用兩種方法對程序進(jìn)行反調(diào)試:一種是采用IsDebuggerPresent;另一種方法是采用Tjmjng Attacks[4]技術(shù),

        1.6如何實現(xiàn)反虛擬機(jī)技術(shù)

        虛擬機(jī)中數(shù)據(jù)的交換是靠著Wjndows下無效操作碼[5]異常來實現(xiàn)的,采用截獲后門接口所發(fā)的出特有無效操作碼這一異常中斷來使She11具有判斷程序是否在虛擬機(jī)中運(yùn)行的這個功能。

        2 Shell的總體功能設(shè)計

        2.1系統(tǒng)框圖設(shè)計

        根據(jù)She11的編寫需要設(shè)計一個引導(dǎo)區(qū)段名為.stup段,在.stup段中放入She11代碼。加殼前,程序由DOS頭開始執(zhí)行,之后跳轉(zhuǎn)到.text段執(zhí)行;加殼后程序由DOS頭執(zhí)行后跳到引導(dǎo)段.stup段開始執(zhí)行,執(zhí)行完引導(dǎo)段后跳轉(zhuǎn)到.text段開始執(zhí)行預(yù)加殼程序。如圖1所示。

        圖1 加殼前后程序的對比框圖

        2.2系統(tǒng)主要類的設(shè)計

        本She11設(shè)計操作PE文件的4個類:LPEFj1e、LPEImport、LPEExport、LPERe1oca1類。其中LPEFj1e是所有操作PE文件類的父類,其包含對PE文件的一些基本操作,例如:加載PE文件、判斷加載文件是否為PE文件、獲取某個RVA下的內(nèi)容、獲取某個區(qū)段等;LPEImport類設(shè)計實現(xiàn)獲得某個以名稱導(dǎo)出的函數(shù)的值、獲得某個以函數(shù)名稱導(dǎo)出的函數(shù)、獲得第一個以名稱導(dǎo)出的函數(shù)等;LPEExport類設(shè)計實現(xiàn)獲得某個以名稱導(dǎo)出的函數(shù)的值、獲得某個以函數(shù)名稱導(dǎo)出的函數(shù)、獲得第一個以名稱導(dǎo)出的函數(shù)、獲得某個導(dǎo)出函數(shù)、獲得某個導(dǎo)出函數(shù)的值等;LPERe1oca1類實現(xiàn)重載等號運(yùn)算符、獲得第一個重定位表中內(nèi)容指針、獲得重定位表的個數(shù)、獲得某個重定位表將該重定位表的RVA作為返回參數(shù)等。4 個PE操作類的類關(guān)系圖如圖2所示。

        圖2 軟件安全類外殼類關(guān)系圖

        2.3系統(tǒng)相關(guān)功能設(shè)計

        1)反調(diào)試設(shè)計

        對于一個逆向工程師來說,主要會采用3種斷點:硬件斷點、內(nèi)存斷點以及0xCC斷點,那么如何判斷你的程序中是否存在上述3種斷點就顯得尤為重要了。當(dāng)然了,為了簡單起見的話可以采用Wjndows自帶的判斷程序是否處在調(diào)試狀態(tài)的API函數(shù),比如:IsDebuggerPresent、CheckRemoteDebuggerPresent 和NtQueryInformatjonProcess。當(dāng)然最好不要采用這些比較常規(guī)的技術(shù),本文采用Tjmjng Attacks技術(shù),通過判斷一段代碼執(zhí)行的時間大小來判斷程序是否處于被調(diào)試狀態(tài),當(dāng)然一般會選取比較重要的函數(shù)作為判斷。對于程序的入口點的部分代碼采用異或區(qū)段的方式進(jìn)行加密,異或區(qū)段的密匙本程序通過用戶輸入來獲得。

        2)反虛擬機(jī)設(shè)計

        虛擬機(jī)是一種采用軟件模擬計算機(jī)硬件體系的軟件,在虛擬機(jī)中執(zhí)行代碼就如同在真實計算機(jī)里一樣。但虛擬機(jī)不是萬能的,有一些特權(quán)指令是無法用軟件徹底虛擬的,因此有許多高級病毒會檢測當(dāng)前是否在真實的操作系統(tǒng)(宿主)中運(yùn)行。如何檢測虛擬機(jī)呢?就要從虛擬機(jī)的原理入手。每一個計算機(jī)都有自己定義的指令集,當(dāng)一個無效指令發(fā)生的時候,計算機(jī)就會產(chǎn)生一個“無效操作碼”類型的異常。軟件既可以自己通過(try/catch)捕獲異?;蛘咦尣僮飨到y(tǒng)捕獲異常,也可以讓計算機(jī)崩潰,那么虛擬機(jī)正是運(yùn)用了這個異常在虛擬機(jī)與虛擬軟件之間建立通道接口進(jìn)而傳遞數(shù)據(jù)。所以本文通過捕獲“無效操作碼”來實現(xiàn)反虛擬機(jī)的設(shè)計。

        3)She11Code的設(shè)計

        采用Hash API方法進(jìn)行編寫,這樣的好處是可以用兩個字節(jié)也就是一個DWORD來存儲任何的API,這樣不僅可以減少She11Code的大小還能加快執(zhí)行查找API的速度,進(jìn)而加快She11Code的執(zhí)行速度[6]。

        3 Shell的相關(guān)測試實例

        3.1加殼前后程序區(qū)段比較

        既然不能改變預(yù)加殼程序的執(zhí)行效果,但可以在預(yù)加殼程序的區(qū)段末尾增加一個區(qū)段用來放入She11代碼。本文以Notepad.exe程序加殼為例,加She11前后用LordPE觀察如圖3所示,加殼后程序增加區(qū)段,dream、.rdream,同時Notepad程序正常執(zhí)行。

        圖3 加She11前后Notepad區(qū)段圖

        3.2反調(diào)試測試

        加殼后Notepad在調(diào)試工具OD的調(diào)試下執(zhí)行結(jié)果如圖4所示,在調(diào)試狀態(tài)下彈出提示對話框,說明She11程序的反調(diào)試功能得以實現(xiàn)[7]。

        圖4 加殼Notepad在OD下調(diào)試圖

        3.3反虛擬機(jī)測試

        文中采用VMWare虛擬機(jī),She11主要采用“無效操作碼”這一異常進(jìn)行捕獲。在虛擬機(jī)中加殼后的Notepad.exe執(zhí)行效果如圖5所示,說明She11反虛擬機(jī)技術(shù)得以實現(xiàn)。

        圖5 加殼的Notepad虛擬機(jī)中執(zhí)行效果圖

        3.4ShellCode測試

        對于She11Code本She11采用Hash API的方法來實現(xiàn),將把字符串中的字符逐一取出,把ASCII碼從單字節(jié)轉(zhuǎn)換成四字節(jié)的DWORD,循環(huán)右移7位之后累加,這樣不論API函數(shù)名有多長,只需要存一個雙字就行。在調(diào)試狀態(tài)下Notepad執(zhí)行效果如圖6所示,說明She11Code執(zhí)行成功[8]。

        圖6 She11Code效果圖

        4 結(jié)束語

        本文通過對She11原理的闡述以及對系統(tǒng)框圖、主要類、相關(guān)功能的設(shè)計和對Notepad的加殼實例驗證說明了PE文件[9]存在文件空隙以及改變程序執(zhí)行序的可能性;通過對She11中反調(diào)試與反虛擬機(jī)功能的設(shè)計實現(xiàn)了在反調(diào)試與反虛擬機(jī)一級上對軟件的防破解保護(hù)。

        參考文獻(xiàn):

        [1]faj1west.0day安全:軟件漏洞分析技術(shù)[M].北京:電子工業(yè)出版社,2008.

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

        [3]侯捷.深入淺出MFC[M].北京:華中理工大學(xué)出版社,1996.

        [4]郭濤濤.另類的反調(diào)試[J].黑客防線,2011,2(3):3-5.

        [5]E1jas Bachaa1any.Detect jf your program js runnjng jnsjde a Vjrtua1 Machjne[EB/OL].(2005-04)http://www.codeproject. com/.

        [6]E1dad Ej1am,E11jot Chjkofsky.Reversjng Secrets of Reverse Engjneerjng[M].E1ectronjc jndustry Press,2007.

        [7]趙雨辰,萬國賓.多針狀氧化鋅晶須的等效電磁建模及仿真[J].西安工業(yè)大學(xué)學(xué)報,2014,6:498-503.

        [8]朱耀麟,張勇,孟超.爆炸環(huán)境激光通信信道研究[J].西安工程大學(xué)學(xué)報,2013,1:55-59.

        [9]金戈,薛質(zhì),齊開悅.基于磁盤隱藏PE文件搜索的Bootkjt檢測方法[J].計算機(jī)工程,2015,6:116-120.

        The lmPlementatlon of software securlty shell

        LI Long,XU Meng-1ej,ZHANG Ke-jja
        (School of Computer and Information Technology,Northeast Petroleum University,Daqing 163118,China)

        Abstract:The paper js based on the purpose of preventjng software from bejng cracked and reversed. By processjng the jmport tab1e,export tab1e,re1ocatjon tab1e jn PE fj1es,the she11 program achjeves the functjon of addjng sectjon. Thjs she11 program combjnes the techno1ogy of IsDebuggerPresent wjth the techno1ogy of Tjmjng Attacks to comp1ete the She11's antj-debuggjng,and encodjng to store the sensjtjve jnformatjon of She11Code and through the″jnva1jd opcode″backdoor jnterfaces to achjeve the functjon of antj-vjrtua1 machjne. Fjna11y,through the test of attachjng the she11 program to Notepad,jt exp1ajnes the She11 havjng functjons of antj-debuggjng and antj-vjrtua1 machjne,and the software havjng the functjons of preventjng from bejng cracked and reversed by attchjng the She11 program.

        Key words:She11;PE fj1es;IsDebuggerPresent;the techno1ogy of Tjmjng Attacks;jnva1jd opcode

        中圖分類號:TN99

        文獻(xiàn)標(biāo)識碼:A

        文章編號:1674-6236(2016)07-0052-03

        收稿日期:2015-05-21稿件編號:201505192

        作者簡介:李龍(1966—),男,山東萊陽人,博士,副教授。研究方向:數(shù)據(jù)挖掘,智能系統(tǒng)。

        猜你喜歡
        斷點區(qū)段調(diào)試
        中老鐵路雙線區(qū)段送電成功
        云南畫報(2021年11期)2022-01-18 03:15:34
        一類無限可能問題的解法
        站內(nèi)特殊區(qū)段電碼化設(shè)計
        站內(nèi)軌道區(qū)段最小長度的探討
        基于航拍無人機(jī)的設(shè)計與調(diào)試
        電子制作(2018年12期)2018-08-01 00:47:44
        FOCAS功能在機(jī)床調(diào)試中的開發(fā)與應(yīng)用
        主導(dǎo)電回路發(fā)生斷點故障判斷方法探討
        無線通信中頻線路窄帶臨界調(diào)試法及其應(yīng)用
        電子制作(2017年19期)2017-02-02 07:08:38
        淺析分路不良區(qū)段解鎖的特殊操作
        調(diào)壓柜的調(diào)試與試運(yùn)行探討
        日韩精品中文字幕综合| a级毛片高清免费视频就| 少妇无码av无码专区线| 中文文精品字幕一区二区| 国产大陆av一区二区三区| 精品日本一区二区三区| 男人的天堂免费a级毛片无码| 久久夜色精品国产噜噜亚洲av| 韩国19禁主播深夜福利视频| 欧美 亚洲 国产 日韩 综AⅤ| 色人阁第四色视频合集网| 精品少妇人妻av一区二区蜜桃| 草草影院发布页| 天天影视性色香欲综合网| 美女裸体无遮挡免费视频的网站| 国产精品女同学| 免费看草逼操爽视频网站| 欧洲成人一区二区三区| 乱人伦视频中文字幕| 999久久久免费精品国产牛牛| 国产精品高清一区二区三区人妖 | 日本边添边摸边做边爱喷水| 国产精品麻豆成人av电影艾秋| 免费无遮挡无码视频在线观看| 人妻丝袜中文字幕久久| 亚洲网站一区在线播放| 国产女人水真多18毛片18精品| 欧美丰满大爆乳波霸奶水多| 开心五月婷婷综合网站| 国产一区二区精品亚洲| 人人妻人人爽人人澡人人| av色综合网站| 亚洲一本二区偷拍精品| 丰满的人妻hd高清日本| 亚洲AV成人无码久久精品老人| 国产精品涩涩涩一区二区三区免费| 精品国产av一区二区三区| 国产激情视频在线观看的 | 午夜被窝精品国产亚洲av香蕉 | 亚洲xxxx做受欧美| 亚洲无码毛片免费视频在线观看|