999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2016-06-17 09:48:17李龍許夢磊張可佳
電子設計工程 2016年7期
關鍵詞:調(diào)試程序設計

李龍,許夢磊,張可佳

(東北石油大學計算機與信息技術學院,黑龍江大慶163318)

?

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

李龍,許夢磊,張可佳

(東北石油大學計算機與信息技術學院,黑龍江大慶163318)

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

關鍵詞:She11;PE文件;IsDebuggerPresent;Tjmjng Attacks技術;無效操作碼

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

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

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

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

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

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

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

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

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

1.3如何將外殼程序寫入引導段并且改變預加殼程序的入口點

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

1.4如何處理外殼導入表

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

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

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

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

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

2 Shell的總體功能設計

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

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

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

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

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

圖2 軟件安全類外殼類關系圖

2.3系統(tǒng)相關功能設計

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

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

2)反虛擬機設計

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

3)She11Code的設計

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

3 Shell的相關測試實例

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

既然不能改變預加殼程序的執(zhí)行效果,但可以在預加殼程序的區(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í)行結果如圖4所示,在調(diào)試狀態(tài)下彈出提示對話框,說明She11程序的反調(diào)試功能得以實現(xiàn)[7]。

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

3.3反虛擬機測試

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

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

3.4ShellCode測試

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

圖6 She11Code效果圖

4 結束語

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

參考文獻:

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

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

[3]侯捷.深入淺出MFC[M].北京:華中理工大學出版社,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è)大學學報,2014,6:498-503.

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

[9]金戈,薛質(zhì),齊開悅.基于磁盤隱藏PE文件搜索的Bootkjt檢測方法[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

文獻標識碼:A

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

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

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

猜你喜歡
調(diào)試程序設計
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
基于航拍無人機的設計與調(diào)試
電子制作(2018年12期)2018-08-01 00:47:44
FOCAS功能在機床調(diào)試中的開發(fā)與應用
“程序猿”的生活什么樣
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
英國與歐盟正式啟動“離婚”程序程序
無線通信中頻線路窄帶臨界調(diào)試法及其應用
電子制作(2017年19期)2017-02-02 07:08:38
調(diào)壓柜的調(diào)試與試運行探討
主站蜘蛛池模板: 国禁国产you女视频网站| www亚洲天堂| 精品欧美一区二区三区久久久| 亚洲天天更新| 日韩高清成人| 午夜性刺激在线观看免费| 亚洲一区黄色| 欧美国产日韩在线| 91久久国产成人免费观看| 婷婷六月天激情| 日韩中文无码av超清| 久久精品这里只有国产中文精品| 妇女自拍偷自拍亚洲精品| 日韩欧美国产综合| 精品丝袜美腿国产一区| 亚洲精品老司机| 伦伦影院精品一区| 久久激情影院| 五月婷婷激情四射| 在线观看无码av五月花| 亚洲欧美在线看片AI| 国产精品白浆无码流出在线看| 狠狠亚洲婷婷综合色香| 久久人妻xunleige无码| 欧美成人影院亚洲综合图| 亚洲人成在线精品| 国产精品福利社| 免费在线成人网| 日本黄色a视频| 亚洲国产清纯| 在线亚洲天堂| 国产精鲁鲁网在线视频| 国产欧美日韩va另类在线播放| 国产精品免费p区| 久久青草视频| 亚洲 欧美 偷自乱 图片 | 成年人免费国产视频| 亚洲av无码久久无遮挡| 欧美.成人.综合在线| 亚洲国产欧美国产综合久久 | 亚洲高清免费在线观看| 亚洲精品自拍区在线观看| 91麻豆精品视频| 午夜综合网| 亚洲欧美日韩久久精品| 国产91九色在线播放| 中国国产高清免费AV片| 久久久久久尹人网香蕉 | 99精品热视频这里只有精品7| 国产香蕉国产精品偷在线观看| 在线观看91精品国产剧情免费| 午夜不卡视频| 欧美视频在线不卡| 天天色天天综合网| 色综合成人| 日韩黄色大片免费看| 国内丰满少妇猛烈精品播| 国产精品白浆在线播放| 中国毛片网| 久久国产黑丝袜视频| 日韩成人在线网站| 伊人色婷婷| 欧美精品另类| 国产91丝袜在线播放动漫 | 日本亚洲成高清一区二区三区| 亚洲精品波多野结衣| 国产午夜小视频| 全部无卡免费的毛片在线看| 国产在线97| 天堂网亚洲系列亚洲系列| 91免费观看视频| 免费观看精品视频999| 91伊人国产| 亚洲国产成人自拍| 波多野结衣爽到高潮漏水大喷| 九九线精品视频在线观看| 日韩欧美中文字幕在线韩免费| 国产h视频免费观看| 国产无码精品在线播放| 国产又色又刺激高潮免费看 | 成人一区专区在线观看| 91口爆吞精国产对白第三集|