OD教程(去除NAG窗口--PE文件结构)
nag本意是煩人的意思,nag窗口是軟件設計者用來時不時提醒用戶購買正版的警告窗口。
軟件設計者可能認為當用戶忍受不了試用版中的這些煩人的窗口時,就會考慮購買正式版本。
PE文件結構
為什么需要了解PE文件結構?
大家想象一下,某天在班上,小甲魚突然想知道黑夜童鞋今天穿什么顏色的褲子,要怎么辦呢?點名讓黑夜童鞋站起來?不行,因為蒼老師在上課呢。那小甲魚就只好掏出班級里的座位名單,然后找到黑夜的名字,看是在第幾行第幾列就找到了,然后在看他的褲子是什么顏色,對啵?
?
其實如果把PE結構比作我們剛才提到的班級,那么座位名單就是PE文件頭啦~
PE(PortableExecutable)可執行文件結構是一樣規范,發明這個主要用來指導系統如何執行你所設計的程序。
?
可能有魚油會說我TM不用十分鐘可以寫個小馬,怎么不見得需要用到這個PE文件結構?
其實不然,因為編譯器已經為你將代碼按照PE結構的形式編譯鏈接為可執行文件,這過程只是它默默的完成,所以我們沒有察覺。
?
但是我們現在學習的是逆向,所以連一條毛我們都不能放過。
PE文件結構有一個非常優勢的地方就是它在硬盤上的存儲結構跟載入內存時候的存儲結構是一樣的。
?
所以,只要你了解如何在PE文件結構里邊找出某樣你想要的東西,那么當這個文件映射到內存后,你也可以很容易的找到它(因為OD是動態調試,程序需要先載入內存嘛)。
內存中的一個模塊代表一個可執行文件進程所需要的所有代碼、數據、資源的集合。
?
PE文件結構:
DOSheader
DOSstub
PEFile Header
ImageOptional Header
SectionTable
DataDirectories
Sections
PE文件結構
這個社會太復雜了,許多東西都蒙蔽了我們的雙眼,而真相有時候確是如此簡單╭(╯3╰)╮。
本質上,最下邊的節區(有些人也叫區塊)是運行一個程序真正需要的內容。
?
上邊所有的“頭”都僅僅是幫助Windows加載器定位和尋找下邊的節區的內容。
在PE文件頭中,這節課我們需要知道的是如何找到AddressOfEntryPoint即可,更多詳細內容可以看下小甲魚的《解密系列》系統篇|PE結構。
?
小結
?
GetModuleHandleA這個API函數用于獲取程序的ImageBase(基址)
這個程序的MessageBox的OwnerHandle(父窗口句柄)為0(NULL),我們可以將這個值改為一個不存在的值,例如1,這樣它就找不到老豆,就不會被顯示出來。
?
名詞注釋:
VA(VirtualAddress,虛擬地址)
RVA(RelativeVirtualAddress,相對虛擬地址)
EP(EntryPoint,程序入口點)
?
總結
以上是生活随笔為你收集整理的OD教程(去除NAG窗口--PE文件结构)的全部內容,希望文章能夠幫你解決所遇到的問題。