第1章 WindowsPE開(kāi)發(fā)環(huán)境_第1頁(yè)
第1章 WindowsPE開(kāi)發(fā)環(huán)境_第2頁(yè)
第1章 WindowsPE開(kāi)發(fā)環(huán)境_第3頁(yè)
第1章 WindowsPE開(kāi)發(fā)環(huán)境_第4頁(yè)
第1章 WindowsPE開(kāi)發(fā)環(huán)境_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、u Windows PE權(quán)威指南權(quán)威指南u 作者作者 戚利戚利 u 出出 版社版社 機(jī)械工業(yè)出版社機(jī)械工業(yè)出版社u 什么是什么是PE?u 我們討論的不是我們討論的不是Windows Preinstallation Environment,Windows預(yù)安裝環(huán)境。預(yù)安裝環(huán)境。u 而是而是PE:Portable Executable File Format(可(可移植的執(zhí)行體)。移植的執(zhí)行體)。u Windows平臺(tái)主流可執(zhí)行文件格式。平臺(tái)主流可執(zhí)行文件格式。.exe與與.dll文文件都是件都是PE格式。格式。為什么研究為什么研究PEu 了解了解Windows PE文件結(jié)構(gòu)文件結(jié)構(gòu)u 加密與解密

2、、軟件漢化、逆向工程、反病毒等安全加密與解密、軟件漢化、逆向工程、反病毒等安全領(lǐng)域的應(yīng)用領(lǐng)域的應(yīng)用u 開(kāi)發(fā)語(yǔ)言:開(kāi)發(fā)語(yǔ)言:MASM32u 源程序的編輯器:記事本源程序的編輯器:記事本 notepadu 動(dòng)態(tài)調(diào)試器動(dòng)態(tài)調(diào)試器OllyDBGu 靜態(tài)調(diào)試器靜態(tài)調(diào)試器W32DASMu 字節(jié)碼的閱讀器和編輯器字節(jié)碼的閱讀器和編輯器FlexHex、Winhexu PE文件查看修改工具文件查看修改工具PEditor本章介紹學(xué)習(xí)本章介紹學(xué)習(xí)Windows PE需要的軟件開(kāi)發(fā)環(huán)境需要的軟件開(kāi)發(fā)環(huán)境開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)語(yǔ)言MASM32u搭建學(xué)習(xí)搭建學(xué)習(xí)Windows PE需要的軟件開(kāi)發(fā)環(huán)境需要的軟件開(kāi)發(fā)環(huán)境u基于基于MA

3、SM32的匯編程序的匯編程序u更接近于系統(tǒng)的底層,靈活、強(qiáng)大更接近于系統(tǒng)的底層,靈活、強(qiáng)大u生成的可執(zhí)行生成的可執(zhí)行PE文件體積小,速度快文件體積小,速度快u.uhttp:/開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)語(yǔ)言MASM32 .386 .model flat,stdcall option casemap:none?開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)語(yǔ)言MASM32include windows.incinclude user32.incincludelib user32.libinclude kernel32.incincludelib kernel32.libu 引入外部的動(dòng)態(tài)鏈接庫(kù),這些庫(kù)里有本程序需要的引入外部的動(dòng)態(tài)鏈接庫(kù),這些庫(kù)

4、里有本程序需要的函數(shù)函數(shù)-代碼重用代碼重用開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)語(yǔ)言MASM32;數(shù)據(jù)段數(shù)據(jù)段 .dataszText db HelloWorld,0 ;要顯示的信息要顯示的信息;代碼段代碼段 .codestart: invoke MessageBox,NULL,offset szText,NULL,MB_OK invoke ExitProcess,NULL end start開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)語(yǔ)言MASM32invoke MessageBox,NULL,offset szText,NULL,MB_OKInvoke-并不是并不是80386處理器的指令,而是一個(gè)處理器的指令,而是一個(gè)MASM編譯器的偽指令編譯器

5、的偽指令調(diào)用調(diào)用WINDOWS API,或調(diào)用匯編子程序。,或調(diào)用匯編子程序。格式為格式為invoke 程序名程序名,參數(shù)參數(shù)1,參數(shù)參數(shù)2,參數(shù)參數(shù)2先入堆棧,參數(shù)先入堆棧,參數(shù)1再入堆棧,以此類推再入堆棧,以此類推如如invoke mysubpro,eax,ecx編譯器會(huì)編譯成下面這個(gè)模樣:編譯器會(huì)編譯成下面這個(gè)模樣:push ecxpush eaxcall mysubpro開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)語(yǔ)言MASM32invoke MessageBox,NULL,offset szText,NULL,MB_OK Win32程序是構(gòu)筑在程序是構(gòu)筑在Win32 API基礎(chǔ)上的?;A(chǔ)上的。 在在Win32 AP

6、I中,包括了大量的函數(shù)、結(jié)構(gòu)和消息等,中,包括了大量的函數(shù)、結(jié)構(gòu)和消息等, 它不僅為應(yīng)用程序所調(diào)用,也是它不僅為應(yīng)用程序所調(diào)用,也是Windows自身的一部分,自身的一部分,Windows自身的運(yùn)行也調(diào)用這些自身的運(yùn)行也調(diào)用這些API函數(shù)。函數(shù)。MessageBox win32 API函數(shù),由函數(shù),由user32.dll提供提供u MessageBoxA-窄字符窄字符:ANSIu MessageBoxW-寬字符寬字符:unicode開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)語(yǔ)言MASM32Microsoft-Microsoft Win32 Programmers Reference中中定義了常用定義了常用API的參數(shù)和函數(shù)

7、聲明,消息框函數(shù)的聲明:的參數(shù)和函數(shù)聲明,消息框函數(shù)的聲明:int MessageBox( HWND hWnd, / handle to owner window窗口句柄窗口句柄 LPCTSTR lpText, / text in message box要顯示的字符串地址要顯示的字符串地址 LPCTSTR lpCaption, / message box title標(biāo)題字符串地址標(biāo)題字符串地址 UINT uType / message box style消息框類型消息框類型 );最后還有一句說(shuō)明:最后還有一句說(shuō)明:Library: Use User32.lib-說(shuō)明了這個(gè)函數(shù)包括在說(shuō)明了這個(gè)函

8、數(shù)包括在User32.dll中中invoke MessageBox,NULL,offset szText,NULL,MB_OK開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)語(yǔ)言MASM32u 研究研究EXE文件內(nèi)部指令跳轉(zhuǎn)、病毒分析、逆向工程文件內(nèi)部指令跳轉(zhuǎn)、病毒分析、逆向工程調(diào)試軟件調(diào)試軟件OllyDBG-OD1、指令集指令解釋區(qū)、指令集指令解釋區(qū)4、棧區(qū)、棧區(qū)2、寄存器及運(yùn)行狀態(tài)區(qū)、寄存器及運(yùn)行狀態(tài)區(qū)3、代碼和數(shù)據(jù)字節(jié)碼區(qū)、代碼和數(shù)據(jù)字節(jié)碼區(qū)u 該位置處的數(shù)據(jù)是一個(gè)內(nèi)存地址,該地址指向了該位置處的數(shù)據(jù)是一個(gè)內(nèi)存地址,該地址指向了kernel32.dll動(dòng)態(tài)鏈接庫(kù)中函數(shù)動(dòng)態(tài)鏈接庫(kù)中函數(shù)ExitProcess的真實(shí)的真實(shí)位置。

9、位置。調(diào)試軟件調(diào)試軟件OllyDBG-OD 指令集指令解釋區(qū)指令集指令解釋區(qū)u包含了所有的包含了所有的32位寄存器:位寄存器:eax、ebx、ecx、esi、edi等等uebp ?;刂分羔槜;刂分羔?uesp棧頂指針棧頂指針 ueip 指向下一條要執(zhí)行的指令的位置指向下一條要執(zhí)行的指令的位置調(diào)試軟件調(diào)試軟件OllyDBG-OD 寄存器及運(yùn)行狀態(tài)區(qū)寄存器及運(yùn)行狀態(tài)區(qū)u 指定內(nèi)存范圍的字節(jié)碼指定內(nèi)存范圍的字節(jié)碼調(diào)試軟件調(diào)試軟件OllyDBG-OD 代碼和數(shù)據(jù)字節(jié)碼區(qū)代碼和數(shù)據(jù)字節(jié)碼區(qū)u 反映了當(dāng)前棧的分配情況及棧在程序與棧在程序運(yùn)反映了當(dāng)前棧的分配情況及棧在程序與棧在程序運(yùn)行過(guò)程中的變化情況。

10、行過(guò)程中的變化情況。調(diào)試軟件調(diào)試軟件OllyDBG-OD 棧區(qū)棧區(qū)u F8:?jiǎn)尾讲竭^(guò)。每按一次這個(gè)鍵執(zhí)行一條反匯編窗:?jiǎn)尾讲竭^(guò)。每按一次這個(gè)鍵執(zhí)行一條反匯編窗口中的一條指令,遇到口中的一條指令,遇到 CALL 等子程序不進(jìn)入其等子程序不進(jìn)入其代碼。代碼。u F7:?jiǎn)尾讲饺?。功能同單步步過(guò):?jiǎn)尾讲饺?。功能同單步步過(guò)(F8)類似,區(qū)別是類似,區(qū)別是遇到遇到 CALL 等子程序時(shí)會(huì)進(jìn)入其中,進(jìn)入后首先等子程序時(shí)會(huì)進(jìn)入其中,進(jìn)入后首先會(huì)停留在子程序的第一條指令上。會(huì)停留在子程序的第一條指令上。調(diào)試軟件調(diào)試軟件OllyDBG-OD HelloWorld.exe的跟蹤執(zhí)行的跟蹤執(zhí)行u 左右分別是指令執(zhí)行后

11、棧的變化情況左右分別是指令執(zhí)行后棧的變化情況調(diào)試軟件調(diào)試軟件OllyDBG-OD 利用利用F7執(zhí)行指令執(zhí)行指令EIP發(fā)生變化了嗎?發(fā)生變化了嗎?u PUSH hellowor.00403000 即指向即指向szText調(diào)試軟件調(diào)試軟件OllyDBG-OD 繼續(xù)繼續(xù)u call指令處使用指令處使用F8,不會(huì)內(nèi)部跟蹤該函數(shù),直接給,不會(huì)內(nèi)部跟蹤該函數(shù),直接給出結(jié)果。出結(jié)果。調(diào)試軟件調(diào)試軟件OllyDBG-OD F8 單步步過(guò)單步步過(guò)u 00402000 開(kāi)始的開(kāi)始的1000H為為.rdata區(qū),輸入表。區(qū),輸入表。u 查看這部分內(nèi)容。查看這部分內(nèi)容。調(diào)試軟件調(diào)試軟件OllyDBG-OD 是一個(gè)地址

12、 0X75 45 BC 9A也就是ExitProcess函數(shù)的入口EXE文件被裝載到內(nèi)存后的部分結(jié)構(gòu)文件被裝載到內(nèi)存后的部分結(jié)構(gòu)調(diào)試軟件調(diào)試軟件OllyDBG-OD EXE文件文件u 對(duì)目標(biāo)對(duì)目標(biāo)EXE文件進(jìn)行修改文件進(jìn)行修改u 將顯示信息將顯示信息HelloWorld更改為更改為GoodMorning調(diào)試軟件調(diào)試軟件OllyDBG-OD 修改修改EXE文件字節(jié)碼文件字節(jié)碼調(diào)試軟件調(diào)試軟件W32DASM十六進(jìn)制編輯軟件十六進(jìn)制編輯軟件FlexHexu 破解軟件注冊(cè)破解軟件注冊(cè)-思路思路 左:破解前左:破解前 右:破解后右:破解后破解實(shí)例破解實(shí)例-U盤監(jiān)控器盤監(jiān)控器u 運(yùn)行軟件,獲取與破解有關(guān)的

13、提示信息運(yùn)行軟件,獲取與破解有關(guān)的提示信息u 提示提示-注冊(cè)失敗注冊(cè)失敗破解實(shí)例破解實(shí)例-U盤監(jiān)控器盤監(jiān)控器u 利用利用FlexHEX獲取獲取“注冊(cè)失??!注冊(cè)失??!”字符串的文件偏字符串的文件偏移地址。移地址。0X00081A79破解實(shí)例破解實(shí)例-U盤監(jiān)控器盤監(jiān)控器u 以上是打開(kāi)靜態(tài)的以上是打開(kāi)靜態(tài)的EXE文件,一旦文件,一旦EXE文件運(yùn)行,文件運(yùn)行,也就是載入內(nèi)存后,該字符串的地址就是內(nèi)存地址也就是載入內(nèi)存后,該字符串的地址就是內(nèi)存地址了。內(nèi)存地址了。內(nèi)存地址=0X00400000+ 0X00081A79 =0X00481A79u 在在OD中搜索這個(gè)常量中搜索這個(gè)常量-內(nèi)存地址為內(nèi)存地址為0X00405D2D破解實(shí)例破解實(shí)例-U盤監(jiān)控器盤監(jiān)控器-OD中搜索中搜索用到用到MessageboxA函數(shù),以此為線索,發(fā)現(xiàn)紅框內(nèi)的提示:和一個(gè)函數(shù),以此為線索,發(fā)現(xiàn)紅框內(nèi)的提示:和一個(gè)0X00405CD2處處jump有關(guān)有關(guān)破解實(shí)例破解實(shí)例-U盤監(jiān)控器盤監(jiān)控器-W32DASM找判斷語(yǔ)句的位置找判斷語(yǔ)句的位置u 到到0X00405CD2處,果然是一個(gè)處,果然是一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論