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

基于代碼搬移的PE文件信息隱藏

2010-08-06 09:29:16朱天明劉嘉勇
通信技術 2010年8期
關鍵詞:指令程序信息

朱天明, 劉嘉勇

(四川大學 信息安全研究所,四川 成都 610064)

0 引言

隨著計算機技術的飛速發展,以及互聯網的廣泛應用,計算機已經逐漸成為了人們日常生活不可或缺的一部分,人們所能接觸到的信息也越來越多。信息的安全漸漸的成為了人們關注的主要問題,信息隱藏就是實現信息安全傳輸的一種解決方法。目前,信息隱藏技術主要局限于針對圖像、聲音、視頻等多媒體載體[1]。對基于可執行(PE)文件信息隱藏技術的研究還很有限,它主要是利用 PE文件結構中的冗余空間和字段、靜態分配的字符串存儲空間等來進行信息隱藏[2-3]。這些方法都存在信息隱藏過于集中,信息與原始 PE文件內容結合不夠緊密,容易被發現的缺點[4]。針對這些問題,在研究 PE格式以及機器指令格式的基礎上,提出了一種基于代碼搬移來將信息隱藏到 PE文件中的方案,并對方案進行了實現和分析。

1 基于代碼搬移的PE信息隱藏方案

1.1 方案原理

一般在程序的編寫過程中,程序員都會寫出很多的子程序來實現各種功能,并在主程序中調用這些子程序,這就使得在一個完整的程序中會存在著很多大大小小的子程序。在PE文件代碼節中,一個子程序就是相對完整的一塊代碼塊,這塊代碼實現一個特定的功能。正是子程序的這個相對完整的特性給了將子程序進行搬移的可能。可以根據載體文件的冗余大小和隱藏文件的大小,選取若干個子程序并將其搬移到代碼節末尾的冗余空間中,然后在原來子程序處隱藏信息,為了加強信息的機密性和抗攻擊的性能,在信息隱藏時,可以對信息進行加密,以及用秘密共享技術將信息分割存儲到不同的子程序中,這樣當一部分的信息被破壞的時候,仍然可以恢復出隱藏信息。

在選取子程序時,選取的子程序的總大小要大于或等于經過秘密分割和加密處理之后的隱藏文件的大小,并且小于載體文件總的冗余大小,這樣才可以實現信息的隱藏。在對子程序進行搬移時,由于搬移的是二進制的代碼,所以需要解決以下三個方面的問題:

(1)判斷子程序的位置

對于子程序的搬移,在搬移之前,首先需要準確的判斷出子程序在代碼中所處的位置。由于對子程序的調用都是通過主調程序的Call指令進行的,所以可以通過Call來查找子程序的位置。先將二進制的代碼進行反匯編,通過 PE頭OptionalHeader結構體中的字段AddressOfEntryPoint找到程序的入口點[5],從程序的入口點處依次查找Call指令,并且排除掉對動態鏈接庫中的函數的調用就能得到子程序的地址。如匯編指令CALL 0x00431234,0x00431234處就是一個子程序的開始。

(2)判斷子程序的大小

對于子程序的大小,可以通過子程序的結尾地址減去開始地址得到,開始的地址通過第一步找到的CALL指令的跳轉地址可以得到,現在需要判斷子程序的結尾地址。在匯編指令中,在一個程序結尾處都會出現一條retn指令來清理子程序使用的堆棧以及將程序返回到調用程序處[6]。所以,可以通過找到retn指令來判斷子程序的結尾地址。然而,在有的子程序中,當進行條件判斷的時候,可能會有多個retn指令,其中只有一個retn才是子程序真正的結尾,如圖1。在這種情下,程序中間出現的retn指令前面會出現如JZ、JNZ等條件轉移指令,如果條件滿足程序就會跳轉到這個retn指令后面去執行,那么這個retn指令就有可能不會執行,也就不是程序結尾的標志,如子程序中第一個 retn。所以判斷子程序大小的方法為:依次查找retn指令,然后排除掉可能會被跳轉指令跳過的retn,直到找到最終的retn指令,從而得到子程序的結尾地址。具有多個retn折子程序如下:

(3)修改子程序中的跳轉指令

在搬移子程序的時候,由于跳轉指令的特性,需要對跳轉指令重新進行改寫以使得其跳轉到正確的地址,這樣才能保證程序在隱藏了信息之后仍然可以正常運行。在子程序中,跳轉指令有CALL和JMP兩類,對應的機器碼分別為E8 XXXXXXXX,E9 XXXXXXXX,其中偏移量(XXXXXXXX)=跳轉的目的地址-跳轉的起始地址-5h 。JMP指令不需要修改,需要修改的為CALL指令。在搬移過程中,CALL指令跳轉的目的地址沒有發生變化,而跳轉的起始地址由于指令被搬移了而發生了變化,從而偏移量也會發生變化。這就需要將子程序中所有的這種 CALL的偏移量根據搬移到的位置進行重新計算并改寫,使其在搬移后仍能調用正確的函數。

1.2 方案的實現

1.2.1 方案的實現流程

如圖1所示。此為信息隱藏的實現流程,對于提取過程,僅僅是隱藏過程的逆過程。

圖1 實現流程

1.2.2 實現步驟

(1)對載體文件以及隱藏信息文件的預分析

對載體PE文件C進行預分析,得到載體文件子程序的數量、大小以及 PE文件代碼段的冗余大小,并根據調用的先后順序將子程序排序并標上序號。對隱藏信息進行分析得到秘密分割后信息的大小。通過分析得到的數據,選取合適的子程序并用密鑰K表示所選取的子程序的序號。如,選取第1,2個子程序,則密鑰為0102.

(2)對信息進行預處理

首先,用密鑰K對需要隱藏的信息進行加密得到M’。然后,用秘密分割算法將加密后的信息進行分割得到子信息,,…,。這里在實現中將隱藏信息分為3個子信息,門限為2即需要兩個完整的子信息便可以恢復隱藏信息。

(3)對信息進行隱藏

通過密鑰K的控制,找到需要隱藏信息的子程序,將子程序搬移到代碼段末尾的冗余處,并且將其中的 CALL指令進行修改。然后,在原來子程序最開始處添加一句代碼,JMP xxxxxxxx其中xxxxxxxx是子程序被搬移處的地址,添加這一句指令使程序能跳轉到正確的子程序處執行,接著將子信息,,…,依次隱藏到子程序原來的位置處。隱藏完畢之后,再將子信息的大小數據保存在一個 PE文件固定位置處,以便在恢復隱藏信息時將子信息分離開來。這里在實現中將子信息大小數據保存在 PE頭的冗余位置處。然后修改PE文件頭的VirtualSize字段為修改后代碼節的大小,最后得到隱藏了信息的PE文件。

(4)信息的提取

信息的提取過程僅僅是信息的隱藏過程的逆過程。首先,通過密鑰找到隱藏了信息的原始子程序的位置,并根據保存的子信息的大小,分別提取隱藏的子信息。然后,用找到的足夠份數的子信息通過密鑰分割技術恢復原始的加密信息,并對加密信息進行解密,得到隱藏信息。

2 實驗及分析

算法實現平臺:Microsoft Windows XP sp2,1.5G RAM,Microsoft Visual C++ 6.0。 軟件包括一個分析程序中子程序的大小的模塊,并用序號將子程序標出。實驗選取的隱藏載體文件為CPU-Z.EXE版本為1.5.2.2,其中代碼節的冗余大小為 3 252 bytes。根據代碼節冗余,選取的隱藏文件為CPU-Z的系統配置文件cpuz.ini大小為180 bytes。運行軟件,可以在軟件子程序分析的模塊中得到子程序的序號和大小信息,以及經過秘密分割后隱藏文件的大小。根據處理后隱藏文件cpuz.ini的大小260 bytes,選取了第1、20兩個子程序進行隱藏。輸入密鑰 0120點擊預處理,等預處理完成之后,點擊隱藏信息,然后便可以得到隱藏了信息的CPU-Z.EXE文件。執行隱藏了信息的載體程序,程序仍然能正常運行并且功能完整。點擊提取信息得到提取出來的cpuz.ini,將其與原來的 cpuz.ini文件用文件對比軟件WinMerge對比,兩個文件完全一致。

本方案不是將信息簡單地隱藏到節末尾的冗余處,而是將信息隱藏在正常的代碼之中,提出的PE信息隱藏方式如下:

正常代碼…

隱藏密文

正常代碼…

而在其前面和后面的部分都是 PE文件正常的代碼。傳統的將信息隱藏到 PE文件節后冗余處的方法,隱藏信息后的PE文件如下:

正常代碼…

密文…

00 00 00 00 00 00 00(PE段尾全為零)

隱藏的信息在代碼段末尾,而在其下的部分為冗余段,全部為零。可以看到用本方案隱藏的信息處于 PE文件代碼之中,而傳統方案僅僅在節末尾隱藏了數據。可見本方案和傳統方案相比隱藏的數據具有更高的隱蔽性,并且選取了多個子程序進行隱藏,因此隱藏的信息具有分散性,而一個載體文件可以有很多的子程序,攻擊者在沒有密鑰的情況下,想找的正確的子程序,難度很大。

3 結語

隨著因特網和計算機的普及,各種各樣的軟件層出不窮,目前,網絡上就存在著大量的PE格式文件,基于PE文件的信息隱藏具有很廣闊的應用前景,隱藏載體多樣化,數量多、種類多,只要是PE格式的執行程序都可以成為隱藏的載體,隱藏后不易被察覺。現創造性的提出了將PE文件原有代碼進行搬移,而將信息隱藏到正常的PE文件數據之中,將隱藏數據和PE文件原始數據緊密的結合在了一起,避免了隱蔽信息過于集中的問題,增強了隱藏信息的隱蔽性和安全性。

[1] 高凌燕,王趾成,易向軍.基于BMP文件信息隱藏技術的探討[J]. 通信技術,2008,41(08):54-56.

[1] 劉振華,尹萍.信息隱藏技術及其應用[M]. 北京:科學出版社,2002.

[2] 吳振強,馮紹東,馬建峰.PE文件的信息隱藏方案與實現[J].計算機工程與應用,2005,41(27):148-150.

[3] 方旺盛,邵利平,張克俊.基于PE文件格式的信息隱藏技術研究[J].微計算機信息,2006,11(3):77-80.

[4] 端木慶峰,王衍波,張凱澤,等.基于 PE文件資源數據的信息隱藏方案[J].計算機工程,2009,35(13):128-133.

[5] 段鋼.加密與解密[M].第3版.北京:電子工業出版社,2008:269.

[6] IRVINE K R. Assembly Language for Intel-Based Computers Fourth Edition[M].北京:電子工業出版社,2004.

猜你喜歡
指令程序信息
聽我指令:大催眠術
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
“程序猿”的生活什么樣
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
坐標系旋轉指令數控編程應用
機電信息(2014年27期)2014-02-27 15:53:56
主站蜘蛛池模板: 岛国精品一区免费视频在线观看| 亚洲第一页在线观看| 欧美精品H在线播放| 91精品专区| 国产精品亚洲va在线观看| 特级aaaaaaaaa毛片免费视频| 成人在线综合| 欧美色香蕉| 亚洲国产日韩视频观看| 国产一级精品毛片基地| 国产一级片网址| 夜夜操国产| 亚洲不卡影院| 啪啪啪亚洲无码| 美女黄网十八禁免费看| 国产成人亚洲精品色欲AV| 国产真实乱了在线播放| 青青青视频91在线 | 一个色综合久久| 日韩黄色在线| 国产极品美女在线播放| 亚洲精品麻豆| 亚洲国产欧洲精品路线久久| 国产网友愉拍精品| 国内精品久久久久久久久久影视| 亚洲无码精彩视频在线观看| 亚洲人人视频| 精品少妇人妻一区二区| 97在线视频免费观看| 精品三级在线| 亚洲中文无码av永久伊人| 国产91丝袜在线播放动漫 | 91国内外精品自在线播放| 日韩第一页在线| 日本欧美一二三区色视频| 五月激情综合网| 国内精自线i品一区202| 中国特黄美女一级视频| 日韩在线永久免费播放| 欧美成人综合视频| 亚洲美女一级毛片| 天堂网亚洲系列亚洲系列| 成AV人片一区二区三区久久| 91午夜福利在线观看精品| 中国精品自拍| 国产av剧情无码精品色午夜| 日韩视频免费| 亚洲国产成人自拍| 国产在线观看91精品| 在线色国产| 亚洲日韩精品无码专区| 亚洲精品麻豆| 亚洲首页在线观看| 亚洲精品无码高潮喷水A| 色欲色欲久久综合网| 四虎国产永久在线观看| 在线日韩日本国产亚洲| 国产精品吹潮在线观看中文| 国产精品无码制服丝袜| 亚洲欧洲日产国码无码av喷潮| 91丨九色丨首页在线播放| 噜噜噜久久| 国产对白刺激真实精品91| 在线观看免费人成视频色快速| 毛片免费观看视频| 丁香综合在线| 秋霞一区二区三区| 国内精品久久九九国产精品| 在线观看免费AV网| 欧洲一区二区三区无码| 亚洲精品中文字幕无乱码| 久久久久国产一区二区| 全部无卡免费的毛片在线看| 女同国产精品一区二区| 久久这里只有精品8| 欧美乱妇高清无乱码免费| 国产在线视频欧美亚综合| 中文字幕亚洲另类天堂| 亚洲综合色吧| 极品国产在线| 国产精品林美惠子在线观看| 久久天天躁狠狠躁夜夜2020一|