二進位制:計算機中通常以二進位制進行表示(高低電平)
十六進製制:二進位制過於麻煩,以十六進製制進行表示
如圖,雖然是16進製制,但是實際上在計算機中還是以2進製來表示
為什麼是以兩個十六進製制數為一組?這涉及到儲存單元的問題
8 bit = 1 byte乙個二進位制數是1bit。也就是說,兩個十六進製制數即為1byte。 因此在表示上以這種形式表示很容易觀察。2 byte = 1 word
2 word = 1 dword
在windows上執行的檔案都需要遵守pe檔案結構
分析乙個程式需要做的事情
第一檔案從**開始執行
**在**?
資料存在**?
進行資料查詢
最後一行為3c,告訴我們起始位置在**。找到第六十(3c的十進位制)個位元組的數是e8
dword表示四個位元組,因此找出來的資料是e8 00 00 00, 但是windows作業系統下是低位在前,高位在後。 因此是 00 00 00 e8,也就是e8是我們要找的資料,再在下一行找到000000e0位址。(adressofentrypoint,baseofcode存貯資料的基點)
滴水逆向 課後作業(2)
1.偵錯程式開啟乙個exe,並找到暫存器視窗 2.開啟乙個exe,單步執行程式 f8 3.記住8個通用暫存器名稱,按照順序 4.使用mov指令修改八個暫存器的值,單步執行,觀察修改後的結果。僅做第3題 ax 累加器 accumulator bx 基址暫存器 base register cx 計數暫存...
滴水逆向 PE擴大乙個節
1.問題描述 2.實現 include include include define test 1 dword toloaderpe lpstr file path,pvoid pfilebuffer bool memorytofile pvoid pmembuffer,dword size,lps...
滴水逆向 RVA與FOA相互轉換
開始這段別人總結的比較好,我就拿來用了 1.rva to foa 即我們現在知道記憶體狀態下的偏移,需要找到檔案狀態下的偏移。步驟如下圖 step1 記憶體中的位址減去記憶體基址得到偏移,即rva。step2 迴圈遍歷節表中各個節的資訊,判斷在哪個節中。需要滿足 記憶體偏移 節資料沒對齊的大小 im...