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

        ?

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

        2010-08-06 09:29:16朱天明劉嘉勇
        通信技術(shù) 2010年8期
        關(guān)鍵詞:子程序密鑰代碼

        朱天明, 劉嘉勇

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

        0 引言

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

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

        1.1 方案原理

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

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

        (1)判斷子程序的位置

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

        (2)判斷子程序的大小

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

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

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

        1.2 方案的實現(xiàn)

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

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

        圖1 實現(xiàn)流程

        1.2.2 實現(xiàn)步驟

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

        對載體PE文件C進行預(yù)分析,得到載體文件子程序的數(shù)量、大小以及 PE文件代碼段的冗余大小,并根據(jù)調(diào)用的先后順序?qū)⒆映绦蚺判虿松闲蛱枴﹄[藏信息進行分析得到秘密分割后信息的大小。通過分析得到的數(shù)據(jù),選取合適的子程序并用密鑰K表示所選取的子程序的序號。如,選取第1,2個子程序,則密鑰為0102.

        (2)對信息進行預(yù)處理

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

        (3)對信息進行隱藏

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

        (4)信息的提取

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

        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點擊預(yù)處理,等預(yù)處理完成之后,點擊隱藏信息,然后便可以得到隱藏了信息的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 結(jié)語

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

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

        [1] 劉振華,尹萍.信息隱藏技術(shù)及其應(yīng)用[M]. 北京:科學(xué)出版社,2002.

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

        [3] 方旺盛,邵利平,張克俊.基于PE文件格式的信息隱藏技術(shù)研究[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.

        猜你喜歡
        子程序密鑰代碼
        探索企業(yè)創(chuàng)新密鑰
        密碼系統(tǒng)中密鑰的狀態(tài)與保護*
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        一種對稱密鑰的密鑰管理方法及系統(tǒng)
        基于ECC的智能家居密鑰管理機制的實現(xiàn)
        淺談子程序在數(shù)控車編程中的應(yīng)用
        子程序在數(shù)控車加工槽中的應(yīng)用探索
        国产一区二区三区视频免费在线 | 亚洲一区二区观看网站| 东风日产系列全部车型| 亚洲av午夜福利一区二区国产| 在线观看视频亚洲一区二区三区| 国产在线av一区二区| 国产美女自拍国语对白| 日本一区二区高清视频| 日本中文字幕乱码中文乱码| 亚洲日本精品国产一区二区三区| 免费a级毛片18禁网站免费| 丁香美女社区| 三级特黄60分钟在线观看| 成人做爰69片免费看网站| 国产免费专区| av手机在线天堂网| 亚洲国产黄色在线观看| 蜜桃精品视频一二三区| 亚洲av永久无码精品网站| 99香蕉国产精品偷在线观看| 成人三级在线| 久久亚洲av成人无码软件| 亚洲国产精品二区三区| 婷婷色精品一区二区激情| 人妻夜夜爽天天爽三区丁香花| 色诱视频在线观看| 天躁夜夜躁狼狠躁| 久久av无码精品一区二区三区| 久久久久人妻精品一区5555| 中文文精品字幕一区二区| 欧美人与禽2o2o性论交| 日韩AV不卡一区二区三区无码| 国产亚洲欧美日韩综合综合二区| 精品女同一区二区三区在线播放器| 粉嫩的极品女神尤物在线| 国产精品久线在线观看| 亚洲人成人77777网站| 亚洲AV无码成人精品区网页| 视频一区视频二区亚洲免费观看 | 国产亚洲精品不卡在线| 中国av一区二区三区四区|