版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
定位該程序的IAT位于何處,然后再來看看對其加了UPX的殼后,IAT又位于何處。什么是大家可以看到在我的機(jī)器上,MessageBoxAAPI77D504EA,如果大家在自己的機(jī)器上面定位到這個(gè)地址的話,可能有部分人的機(jī)器上該地址對應(yīng)的還是MessageBoxA的入口地址,而另外一部分人的機(jī)器上該地址對應(yīng)的就不是MesageBoxA的入口地址了,這取決于大家機(jī)器的操作系統(tǒng)版本,以及打補(bǔ)丁的情況。眾所周知,操作系統(tǒng)動態(tài)庫版本的更新,API函數(shù)比如我們就拿CrueheadCrackMe中的MessageBoxAAPI函數(shù)來說吧,77D504EA,在我的機(jī)器上運(yùn)行的很好,那些跟我操作系統(tǒng)版本以及User32.dll版本相同的童鞋的機(jī)器上該程序運(yùn)行可能也很正常,但是如果在操作系統(tǒng)版本或者User32.dll為了解決以上兼容問題,CrackMe可以在其他版本的Windows操作系統(tǒng),DLL版本下這里我們可以看到有幾處調(diào)用了MessageBoxA,我們在第一個(gè)MessageBoxA這里其實(shí)就是CALL40143A,顯示為CALL<JMP.&USER32.MessageBoxA>大家可能會覺得不太直觀。這里我們打開Debuggingoptions菜單項(xiàng):Disasm標(biāo)簽頁中的Showsysmbolicaddresses選項(xiàng)被勾選上了,如果我們?nèi)サ粼搶?在Searchfor-Allintermodularcalls窗口中顯示如下我們可以看到這里有三處通過CALL40143A調(diào)用MessageBoxA,40143A這里有意思的地方就來了,我們看到JMP[4031AC](4031AC這個(gè)內(nèi)存單元中保存的數(shù)值才是MessageBoxA真正的入口地址)。我這就是為了解決各操作系統(tǒng)之間的兼容問題而設(shè)計(jì)的,API函數(shù)的時(shí)候,都是通過一個(gè)間接跳轉(zhuǎn)來調(diào)用的,讀IAT(導(dǎo)入函數(shù)地址表),API兼容問題的關(guān)鍵所在,該程序在不同版本操作系統(tǒng)上都是調(diào)到IAT中,API函數(shù)。有些人可能會問,4031AC這個(gè)地址在不同機(jī)器上也可能會不同的吧?這里我們選中4031AC中保存的內(nèi)容,單擊鼠標(biāo)右鍵選擇-Viewexecutablefile,就能看到4031AC這個(gè)虛擬地址對應(yīng)于可執(zhí)行文件中處就會被填充為EA04D577,也就是說該CrackMe進(jìn)程空間中的4031AC地址處會被填入正確的API函數(shù)地址。有這么神奇填入了MessageBoxA的入口地址,其他IAT項(xiàng)也會被填入對應(yīng)的API函數(shù)地址。其實(shí)操作系統(tǒng)并沒有大家想象得的那么神奇,我們看到0FAC文件偏移處的值3360,該數(shù)值其實(shí)是RVA(相對虛擬地址),其指向?qū)?yīng)的API函數(shù)名稱。MessageBoxA這個(gè)字符串,也就是說操作系統(tǒng)可以根據(jù)這個(gè)指針,API函數(shù)名稱,然后通中被填充了正確的API函數(shù)地址。如果我們換一臺機(jī)器,定位到4031AC處,可能會看到里面存放著不同的地址。執(zhí)行前,IAT已經(jīng)被填入了正確的API函數(shù)地址。也就是說,API函數(shù)地址填充到IAT中,應(yīng)該滿足一下幾點(diǎn)要求:1:可執(zhí)行文件各IAT項(xiàng)所在的文件偏移處必須是一個(gè)指針,指向一個(gè)字符串。充IAT的)。假如,OEP處,dump出來,dumpIAT,為什么要修復(fù)IAT呢?難道殼將IAT破壞了嗎?對,的確是這樣,殼壓根不需要原程序的IAT,因?yàn)楸患託こ绦蚴紫葧?zhí)行解密例程,讀取IAT中所需API的名稱指針,API函數(shù)地址,IAT中,這個(gè)時(shí)候,IATAPI函數(shù)地址,對應(yīng)的API函數(shù)名稱的字符串已經(jīng)不需要了,可以清除掉。下面我們來看看CrackMeUPX這個(gè)程序,在dump之前我們需要修復(fù)IAT。我們現(xiàn)在定位到JMPOEP指令處設(shè)置一個(gè)斷點(diǎn),運(yùn)行起來,接著來看看API函數(shù)地址填充到原程序的IAT中,如果這個(gè)時(shí)候我們將程序dump出來的話,運(yùn)行會出錯(cuò),因?yàn)閐ump出來的程序啟動所必須的數(shù)據(jù)是不完整的。dump出來看看,dump出來的原程序代碼肯定是正確的,但是程序仍然無法正常運(yùn)行,因?yàn)槿鄙贁?shù)據(jù),Dump的話我們需要用到一個(gè)工具,名字叫做LordPE(PS:大家應(yīng)該用的很多吧)我們單擊鼠標(biāo)右鍵選擇-activedumpengine-IntelliDump-Select!。接著選擇dumpfull我們將dump出來的程序命名為dumped.exe如果我們直接運(yùn)行dumped.exe的話會發(fā)現(xiàn)無法啟動,OD加載dumped.exe,OD會報(bào)錯(cuò),這里我們機(jī)器上提示錯(cuò)誤發(fā)現(xiàn)在斷了下來,我們可以看到該錯(cuò)誤是在到達(dá)入口點(diǎn)之前產(chǎn)生的,所以dumped.exe無法正常運(yùn)行,我們現(xiàn)在來看看IAT這里該dumpedexe缺少這些指向API函數(shù)名稱字符串的指針,所以運(yùn)行的時(shí)候會發(fā)生錯(cuò)誤。作,你需要將4031AC地址處的內(nèi)容修改為MessageBoxA這個(gè)字符串的指針,IAT中的其他項(xiàng)也要進(jìn)行相應(yīng)的處理。比較明智的做法是,dump出來之前就將IAT我們知道dump出來的代碼肯定是正確的,401000API函數(shù)的調(diào)用處,40135C地址處應(yīng)該是調(diào)用的MessageBoxA這些間接跳轉(zhuǎn)是無法正常運(yùn)行的因?yàn)樵谡G闆r操作系統(tǒng)必須知道指向各個(gè)API函數(shù)名稱字符串的指針然后通過GetProcAddressAPI函數(shù)正確的入口地址并填充到IAT中,這樣這些間接跳轉(zhuǎn)才能起作用。單擊鼠標(biāo)右鍵選擇-Special-PEheader切換到PE我們可以看到PE100即PE400100繼續(xù)往下拉,我們可以看到IT(導(dǎo)入表)的指針,這里大家不要將其跟IATIT=IAT入表,該導(dǎo)入表偏移值為3000(即虛擬地址為403000),長度為670(十六進(jìn)制),即403670為導(dǎo)入表的結(jié)尾。我們一起來看一看。我們選中的這20個(gè)字節(jié)是導(dǎo)入表的描述符結(jié)構(gòu)。官方的叫法為IMAGE_IMPORT_DESCRIPTOR。每組為20個(gè)字節(jié),IMAGE_IMPORT_DESCRIPTOR包含了一個(gè)的字符串指針,該指針指向了某個(gè)的動態(tài)鏈接庫名稱字符串。我們來看個(gè)例子 前三個(gè)字段不是很重要,對于我們Cracker來說,我們只對第4,5字段感興趣。統(tǒng)可以定位到這些IID項(xiàng),然后根據(jù)IAT中標(biāo)明的API函數(shù)名稱獲取到函數(shù)地址即可。下面我們來總結(jié)一下操作系統(tǒng)填充IAT的2:解析第一個(gè)IID項(xiàng),根據(jù)IID4DLL3:根據(jù)IID5DLL對應(yīng)的IAT6:當(dāng)定位到的IATDLLAPI函數(shù)地址獲取完畢了,接著繼續(xù)解析第二個(gè)IID,重復(fù)上面的步驟。這里是的入口地址為這里是IAT定位到可執(zhí)行文件的相應(yīng)偏移處APIGetSystemMetrics,GetProcAddress獲取到其函數(shù)地址然后填充到我們可以看到當(dāng)IATUSER32.DLL就
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年國際貿(mào)易談判技巧與實(shí)務(wù)操作考試題
- 2026年投資銀行業(yè)務(wù)員招聘考試筆試題集
- 2026年化工工程試題化工原理與工藝技術(shù)
- 2026年數(shù)據(jù)庫管理基礎(chǔ)初級考試模擬題
- 2026年財(cái)務(wù)管理與決策題庫
- 2026年市場營銷策略與市場調(diào)研專業(yè)試題
- 2026年法律職業(yè)資格考試法理學(xué)精講習(xí)題
- 室內(nèi)裝飾風(fēng)格選擇方案
- 風(fēng)能發(fā)電系統(tǒng)施工方案
- 綠化工程水體凈化設(shè)計(jì)方案
- 2026中國國際航空招聘面試題及答案
- (2025年)工會考試附有答案
- 2026年國家電投集團(tuán)貴州金元股份有限公司招聘備考題庫完整參考答案詳解
- 復(fù)工復(fù)產(chǎn)安全知識試題及答案
- 中燃魯西經(jīng)管集團(tuán)招聘筆試題庫2026
- 資產(chǎn)接收協(xié)議書模板
- 數(shù)據(jù)中心合作運(yùn)營方案
- 印鐵涂料基礎(chǔ)知識
- 工資欠款還款協(xié)議書
- 石籠網(wǎng)廠施工技術(shù)交底
- 新建粉煤灰填埋場施工方案
評論
0/150
提交評論