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

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

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

朱天明, 劉嘉勇

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

0 引言

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

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

1.1 方案原理

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

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

(1)判斷子程序的位置

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

(2)判斷子程序的大小

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

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

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

1.2 方案的實現(xiàn)

1.2.1 方案的實現(xiàn)流程

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

圖1 實現(xiàn)流程

1.2.2 實現(xiàn)步驟

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

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

(2)對信息進行預處理

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

(3)對信息進行隱藏

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

(4)信息的提取

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

2 實驗及分析

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

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

正常代碼…

隱藏密文

正常代碼…

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

正常代碼…

密文…

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

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

3 結語

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

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

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

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

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

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

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

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

猜你喜歡
指令程序信息
聽我指令:大催眠術
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產(chǎn)品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
“程序猿”的生活什么樣
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
英國與歐盟正式啟動“離婚”程序程序
創(chuàng)衛(wèi)暗訪程序有待改進
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
坐標系旋轉指令數(shù)控編程應用
機電信息(2014年27期)2014-02-27 15:53:56
主站蜘蛛池模板: 亚洲青涩在线| 国产乱子伦视频在线播放| 国产视频资源在线观看| 国内精品手机在线观看视频| 黄色福利在线| 亚洲av无码牛牛影视在线二区| 丝袜美女被出水视频一区| 福利姬国产精品一区在线| 国产在线麻豆波多野结衣| 伊人久久久大香线蕉综合直播| 色偷偷av男人的天堂不卡| 午夜a级毛片| AV在线天堂进入| 欧美天堂在线| 成人第一页| 婷婷五月在线| 久久精品亚洲专区| 欧美啪啪一区| 久久久久亚洲av成人网人人软件| 99久视频| 亚洲欧美另类中文字幕| 99久久国产自偷自偷免费一区| 91麻豆国产视频| 久草视频一区| 国产拍在线| 91伊人国产| 91年精品国产福利线观看久久| 一级成人欧美一区在线观看| 91久久精品日日躁夜夜躁欧美| jizz亚洲高清在线观看| 亚洲中文在线看视频一区| 激情六月丁香婷婷四房播| 99成人在线观看| www精品久久| 黄色片中文字幕| 日韩精品专区免费无码aⅴ| 国产青青操| 香蕉蕉亚亚洲aav综合| 99久久免费精品特色大片| 久久国产精品麻豆系列| 香蕉综合在线视频91| 中文字幕无码av专区久久| 91精品国产自产在线老师啪l| av天堂最新版在线| 久久久久久国产精品mv| 久久精品国产一区二区小说| 国产微拍一区二区三区四区| 久久青草热| 国产美女久久久久不卡| 亚洲91精品视频| 自慰高潮喷白浆在线观看| 熟妇丰满人妻| 麻豆国产精品视频| 99久久国产综合精品女同| 久久一色本道亚洲| 免费国产一级 片内射老| 在线观看视频一区二区| 亚洲成a人片7777| 欧美性色综合网| 思思99热精品在线| 国产福利小视频高清在线观看| 日韩无码一二三区| 一级毛片在线免费看| 国产欧美日韩资源在线观看| 亚洲久悠悠色悠在线播放| 99久久精品久久久久久婷婷| 亚洲视屏在线观看| 成人永久免费A∨一级在线播放| 91破解版在线亚洲| 国产精品va| 精品国产一区二区三区在线观看| 欧美精品导航| 欧美啪啪视频免码| 中文字幕永久在线看| 91麻豆精品国产91久久久久| 欧美激情首页| av在线人妻熟妇| 日韩精品成人在线| 亚洲国产午夜精华无码福利| 国产18在线播放| 91青草视频| 亚洲一区二区在线无码|