十,記憶體映射視窗[Memory map window]
記憶體映射視窗顯示了被偵錯工具分配的所有記憶體塊。因為沒有標準的方法來完成這項任務,所以OllyDbg可能會把一個大的記憶體塊分成幾個部分。然而,在大多數情況下,並非一定要精確處理。如果想查看由應用程式通過調用GlobalAlloc()和LocalAlloc()等申請的記憶體塊列表,請使用堆列表[Heap list]。
如果記憶體塊是可執行模組的一個節,OllyDbg則會報告這個記憶體塊所包含的資料類型:代碼、資料、資源等。
Windows95/98是和WindowsNT/2000是有一些區別的。在Windows95/98下,OllyDbg是不能顯示被對應檔的名稱的。另外,Windows95/98不允許的訪存類型為讀和寫,然而,在WindowsNT/2000下,OllyDbg卻有擁有更多功能,包括執行訪問,寫複製[copy-on-write]以及監視標誌位。OllyDbg忽略寫複製[copy-on-write]屬性。
如果OllyDbg發現程式分配了新記憶體或者重新分配了已經存在的記憶體塊,它將在記憶體映射視窗中高亮顯示相應的記錄,去掉高亮度顯示,可以選擇捷徑功能表中的重新整理[
Actualize]項。
您可以按Alt+M來調用記憶體視窗。
以下是捷徑功能表中可以選擇的功能表項目:
重新整理[Actualize] - 更新已指派記憶體的列表並去除對新記憶體塊的高亮顯示。
在反組譯碼視窗中查看[View in Disassembler] -在反組譯碼視窗中查看:在反組譯碼視窗中開啟記憶體塊,這一選項僅在某些模組的記憶體塊中包含可執行代碼或者自解壓器時可用。
在CPU資料視窗中查看[Dump in CPU] - 在CPU的資料視窗中顯示記憶體塊的內容。
資料視窗[Dump] - 在單獨視窗中顯示記憶體塊內容。如果記憶體塊的類型已知,則OllyDbg會自動選擇顯示格式。
查看全部資源[View all resources] - 如果記憶體塊包含資源資料,則列出所有資源及相關資料。OllyDbg並不把資源當作單獨實體來支援。您可以顯示其資料並以二進位的形式進行編輯。
查看資源字串[View resource strings] - 如果記憶體塊包含資源資料,則列出全部資源字串及其標識符。
搜尋[Search] - 允許搜尋所有的記憶體塊,從選擇處開始,搜尋匹配的二進位串。如果找到,則OllyDbg將顯示該記憶體塊。記憶體映像視窗和資料視窗共用同一種搜尋模式,所以您可以在彈出的資料視窗中立即繼續搜尋該二進位串出現的下一位置。按Esc鍵可以關閉資料視窗。
搜尋下一個[Search next](快速鍵:Ctrl+L) - 繼續上次搜尋。
設定訪問中斷[Set break-on-access] (快速鍵:F2,僅在WindowsNT/2000下可用) - 保護整個記憶體塊。當中斷髮生後OllyDbg暫停被偵錯工具並清除斷點。這類斷點在您想捕捉調用或返回到某個模組的時候特別有用。
清除訪問中斷[Remove break-on-access] (快速鍵:F2) - 從記憶體塊中清除訪問中斷保護。
設定記憶體訪問斷點[Set memory breakpoint on access] - 在整個記憶體塊上設定斷點,每當該記憶體塊被訪問時程式都將中斷。OllyDbg只支援一個記憶體訪問斷點。在
Windows95/98下,當系統程式訪問含有記憶體斷點的記憶體塊時,可能會導致所被偵錯工具崩潰,因此,不到萬不得已,請不要設定這種斷點。
設定記憶體寫入斷點[Set memory breakpoint on write] - 在整個記憶體塊上設定斷點,每當該記憶體塊被寫入資料時程式都將中斷。在Windows95/98下,當系統程式訪問含有記憶體斷點的記憶體塊時,可能會導致所被偵錯工具崩潰,因此,不到萬不得已,請不要設定這種斷點。
清除記憶體斷點[Remove memory breakpoint] - 清除記憶體斷點。
清除自解壓記憶體斷點[Remove SFX memory breakpoint] - 停止搜尋自解壓程式[self-extractable (SFX) program]的真實入口。這個搜尋使用了特殊類型的記憶體斷點。
訪問設定[Set access] -設定整個記憶體塊的保護屬性,可選擇的有:
禁止訪問[No access]
唯讀[Read only]
讀/寫[Read/write]
執行[Execute]
執行/讀[Execute/read]
完全訪問[Full access]
複製到剪下板[Copy to clipboard]
整行[Whole line] -以多行文本(包括解釋)的方式把所選記錄複製到剪下板,如果複製時想排除某些列,可將該列的寬度置為最小(該欄剩餘的邊框將變灰)。
整個表格[Whole table] -以多行文本的方式將整個記憶體映像資訊複製到剪下板,該文本的第一行為視窗標題("記憶體映射[Memory map]"), 第二行為欄位標題欄,後面幾行的內容為記憶體資料記錄。複製將保持列的寬度。如果複製時想排除某些列,可將該列的寬度置為最小(該欄剩餘的邊框將變灰)。