版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Pe文件實(shí)現(xiàn)信息隱藏
馮紹東
主要內(nèi)容:PE文件結(jié)構(gòu)
原理
實(shí)現(xiàn)
上述算法的一點(diǎn)改進(jìn)
小結(jié)
一PE文件結(jié)構(gòu)
PE文件框架構(gòu)成
DOSMZheader
DOSstub
PEheader
Sectiontable
Section1
Section2
Section...
SectionnPE文件結(jié)構(gòu)的總體層次分布。
DOSMZheader
DOSstub所有PE文件(甚至32位的DLLs)必須以一個(gè)簡(jiǎn)單的DOSMZheader開(kāi)始,在偏移0處有DOS下可執(zhí)行文件的“MZ標(biāo)志”,有了它,一旦程序在DOS下執(zhí)行,DOS就能識(shí)別出這是有效的執(zhí)行體,然后運(yùn)行緊隨MZheader之后的DOSstub。DOSstub實(shí)際上是個(gè)有效的EXE,在不支持PE文件格式的操作系統(tǒng)中,它將簡(jiǎn)單顯示一個(gè)錯(cuò)誤提示,類(lèi)似于字符串"ThisprogramcannotruninDOSmode"或者程序員可根據(jù)自己的意圖實(shí)現(xiàn)完整的DOS代碼。通常DOSstub由匯編器/編譯器自動(dòng)生成,對(duì)我們的用處不是很大,它簡(jiǎn)單調(diào)用中斷21h服務(wù)9來(lái)顯示字符串"ThisprogramcannotruninDOSmode"。
節(jié)表(Section):typedef
struct_IMAGE_SECTION_HEADER{
BYTE
Name[IMAGE_SIZEOF_SHORT_NAME];//節(jié)表名稱(chēng),如“.text”
union{
DWORD
PhysicalAddress;//物理地址
DWORD
VirtualSize;//真實(shí)長(zhǎng)度
}Misc;
DWORD
VirtualAddress
;//RVA
DWORD
SizeOfRawData;//物理長(zhǎng)度
DWORD
PointerToRawData;//節(jié)基于文件的偏移量
DWORD
PointerToRelocations;//重定位的偏移
DWORD
PointerToLinenumbers;//行號(hào)表的偏移
WORD
NumberOfRelocations;//重定位項(xiàng)數(shù)目
WORD
NumberOfLinenumbers;//行號(hào)表的數(shù)目
DWORD
Characteristics;//節(jié)屬性
}
可用空間=SizeOfRawData(物理長(zhǎng)度)-VirtualSize(真實(shí)長(zhǎng)度)二原理
(1) PE文件由于使用高級(jí)語(yǔ)言編寫(xiě)的,存在大量的冗余,我們需要做的是在不影響程序執(zhí)行的基礎(chǔ)上把我們的資料存放到那些程序沒(méi)用到的空間。我們可在上邊的節(jié)表中發(fā)現(xiàn)SizeOfRawData,VirtualSize,一個(gè)是物理長(zhǎng)度,一個(gè)是實(shí)際長(zhǎng)。SizeOfRawData-VirtualSize就是我們可利用的空間。我們只要找到這段空間的起始地址就行了。而PointerToRawData就是我們要的,這樣問(wèn)題都解決了。剩下的只是編程實(shí)現(xiàn)了。另外,除了段空間可利用外,文件頭也有一大段的空間可用,CIH病毒就是利用它隱藏自己的。 為了加強(qiáng)隱密性,我們需要把VirtualSize的值改為VirtualSize+加入該段的長(zhǎng)度。而這會(huì)導(dǎo)致后來(lái)還原不回來(lái),所以要在文件中加入一段特殊的字符串,這樣在還原時(shí)根據(jù)該字符串得到隱藏資料的起點(diǎn)。在程序中特殊字符串即用戶(hù)輸入的密碼。這樣不知道密碼者就不容易獲得其中隱藏資料。原理(2)
段隱藏空間段程序占用空間可利用空間段首地址PointerToRawData真實(shí)長(zhǎng)度VirtualSize物理長(zhǎng)度SizeOfRawData原理(3)
PE文件頭隱藏空間PE文件頭第一段的PointerToRawData
DOSMZheader
DOSstub
PEheader
Sectiontable
可利用空間(大約3kb,CIH病毒利用此空間)三實(shí)現(xiàn)
首先獲得pe文件頭的信息獲得段的信息寫(xiě)文件,實(shí)現(xiàn)信息隱藏獲得pe文件頭的信息Voidgetpeheader(CStringfilename){
CFile
cf;
cf.Open(filename,CFile::modeRead);
cf.ReadHuge(&dos_head,sizeof(IMAGE_DOS_HEADER)); cf.Seek(dos_head.e_lfanew,0);
cf.ReadHuge(&signature,sizeof(DWORD));
cf.ReadHuge(&_head,sizeof(IMAGE_FILE_HEADER));
cf.ReadHuge(&opt_head,sizeof(IMAGE_OPTIONAL_HEADER));
cf.Close();}獲得段的信息Voidgetsection(Cstringfilename){
CFile
cf;
cf.Open(filename,CFile::modeRead);
longsecpos= sizeof(IMAGE_DOS_HEADER)+dos_head.e_lfanew+ sizeof(DWORD)+sizeof(IMAGE_FILE_HEADER) +sizeof(IMAGE_OPTIONAL_HEADER); cf.Seek(secpos,0); for(intI=0;I<_head.NumberOfSections;I++)
cf.ReadHuge(§ion_header[I],sizeof(IMAGE_OPTION AL_HEADER));
cf.Close();}程序中段的總數(shù)段表位置寫(xiě)文件,實(shí)現(xiàn)信息隱藏Voidwritefile(Cstringfilename,intsection){ CFile
cf; cf.Open(filename,CFile::modeWrite); if((section_header[section].SizeOfRawData- section_header[section].Misc.VirtualSize)<=0) { cf.Close(); return; } cf.Seek(section_header[section].PointerToRawData+ section_header[section].VirtualSize,0); longI=0; charch; while(I<section_header[section].SizeOfRawData- section_header[section].Misc.VirtualSize) { if((ch=mygetch()))cf.WriteHuge(&ch,1); I++; } cf.Close();}四上述算法的一點(diǎn)改進(jìn)
為了增強(qiáng)保密性,最好在隱藏資料前對(duì)資料進(jìn)行加密,如使用rijnaedl等算法為了能檢測(cè)出,資料是否被修改,可以采取校驗(yàn)位方法詳細(xì)做法參看程序源
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 從理論到實(shí)踐紀(jì)檢監(jiān)察案例管理面試題庫(kù)
- 會(huì)計(jì)職稱(chēng)考試備考資料與重點(diǎn)難點(diǎn)解析
- 電氣工程師面試題及答案詳解
- 2025年數(shù)字醫(yī)療設(shè)備市場(chǎng)拓展項(xiàng)目可行性研究報(bào)告
- 2025年城鄉(xiāng)一體化產(chǎn)業(yè)扶貧項(xiàng)目可行性研究報(bào)告
- 2025年健康飲品品牌推廣計(jì)劃可行性研究報(bào)告
- 2025年西南地區(qū)特色農(nóng)產(chǎn)品品牌建設(shè)可行性研究報(bào)告
- 2025年區(qū)塊鏈在金融行業(yè)應(yīng)用可行性研究報(bào)告
- 2026年河南對(duì)外經(jīng)濟(jì)貿(mào)易職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)參考答案詳解
- 2026年江西軟件職業(yè)技術(shù)大學(xué)單招職業(yè)技能測(cè)試題庫(kù)及參考答案詳解一套
- 框架玻璃幕墻拆除方案
- NPI工程師年終個(gè)人工作總結(jié)述職報(bào)告
- 鶴崗礦業(yè)集團(tuán)峻德煤礦24Mt-a新井設(shè)計(jì)-課程設(shè)計(jì)設(shè)計(jì)
- 2025年12月保安公司年終工作總結(jié)模版(三篇)
- 機(jī)械制造基礎(chǔ)-002-國(guó)開(kāi)機(jī)考復(fù)習(xí)資料
- 文旅場(chǎng)所安全培訓(xùn)課件
- 《金屬材料與熱處理(第八版)》- 課件 緒論
- 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)與應(yīng)用(第4版)中職全套教學(xué)課件
- 職業(yè)技術(shù)學(xué)?!峨娮由虅?wù)客戶(hù)服戶(hù)》課程標(biāo)準(zhǔn)
- DL∕T 1624-2016 電力系統(tǒng)廠站和主設(shè)備命名規(guī)范
- 穴位貼敷法技術(shù)操作評(píng)分標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論