1. 程式人生 > >OllyDbg完全教程 記憶體對映視窗[Memory map window]

OllyDbg完全教程 記憶體對映視窗[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]"), 第二行為列標題欄,後面幾行的內容為記憶體資料記錄。複製將保持列的寬度。如果複製時想排除某些列,可將該列的寬度置為最小(該欄剩餘的邊框將變灰)。

相關推薦

OllyDbg完全教程 記憶體對映視窗Memory map window

記憶體對映視窗顯示了被除錯程式分配的所有記憶體塊。因為沒有標準的方法來完成這項任務,所以OllyDbg可能會把一個大的記憶體塊分成幾個部分。然而,在大多數情況下,並非一定要精確處理。如果想檢視由應用程式通過呼叫GlobalAlloc()和LocalAlloc()等申請的記憶體塊列表,請使用堆列表[Heap l

OllyDbg完全教程

目錄 第一章 概述 OllyDbg 是一種具有視覺化介面的 32 位彙編—分析偵錯程式。它的特別之處在於可以在沒有原始碼時解

Linux 程序通訊之:記憶體對映Memory Map

一、簡介 正如其名(Memory Map),mmap 可以將某個裝置或者檔案對映到應用程序的記憶體空間中。通過直接的記憶體操作即可完成對裝置或檔案的讀寫。. 通過對映同一塊實體記憶體,來實現共享記憶體,完成程序間的通訊。由於減少了資料複製的次數,一定程度上提高了程序間通訊的效率。

IO的埠對映記憶體對映 (Port mapped I/O 和 Memory mapped I/O說明)

IO埠和IO記憶體的區別及分別使用的函式介面           每個外設都是通過讀寫其暫存器來控制的。外設暫存器也稱為I/O埠,通常包括:控制暫存器、狀態暫存器和資料暫存器三大類。根據訪問外設暫存器的不同方式,可以把CPU分成兩大類。一類CPU(如M68K,Power

C# .Net 多程序同步 通訊 共享記憶體 記憶體對映檔案 Memory Mapped

節點通訊存在兩種模型:共享記憶體(Shared memory)和訊息傳遞(Messages passing)。         記憶體對映檔案對於託管世界的開發人員來說似乎很陌生,但它確實已經是很遠古的技術了,而且在作業系統中地位相當。實際上,任何想要共享資料的通訊模型都

阿裏雲EC2+QEMU虛擬機+ROS完全教程

detail yun mage 註意 med 遠程命令 rtx network with ---恢復內容開始--- 1、安裝centos6.5 x64 同時記錄,當前centos分配得到的IP,子網掩碼,網關,以及MAC!!! 查看IP、mac命令ip add 查看網關命令

e820與kernel實體記憶體對映

http://deltamaster.is-programmer.com/posts/37297.html 我們都對作業系統如何管理記憶體有一定的瞭解,然而,在作業系統開始管理記憶體之前,首先要獲取實體記憶體的資訊,比如一共有多少實體地址是可用的,有哪些實體地址是被ACPI(Advanced C

ython實現程序間的通訊有Queue,Pipe,Value+Array等,其中Queue實現多個程序間的通訊,而Pipe實現兩個程序間通訊,而Value+Array使用得是共享記憶體對映檔案的方式,所以速度比較快

1.Queue的使用 from multiprocessing import Queue,Process import os,time,random #新增資料函式 def proc_write(queue,urls): print("程序(%s)正在寫入..."%(os.getpid()))

Eclipse MAT記憶體分析工具(Memory Analyzer Tool)

MAT記憶體分析工具 MAT是Memory Analyzer的簡稱,它是一款功能強大的Java堆記憶體分析器。可以用於查詢記憶體洩露以及檢視記憶體消耗情況。MAT是基於Eclipse開發的,是一款免費的效能分析工具。讀者可以在http://www.eclipse.org/mat/下載並使用MAT。 1 初

一、linux 系統程序通訊之記憶體對映

linux下程序間通訊方式一般有管道,訊息佇列,共享記憶體,訊號量,訊號,套接字以及有名管道,其中共享記憶體的效率最高,而記憶體對映mmap就是共享記憶體的一種。下面詳細介紹一種使用共享記憶體實現程序間通訊的方式。 在Android系統中屬性被大量的使用,用來記錄系統設定或程序之間的資訊交換。

LDD3 第15章 記憶體對映和DMA

本章內容分為三個部分: 第一部分講述了mmap系統呼叫的實現過程。將裝置記憶體直接對映到使用者程序的地址空間,儘管不是所有裝置都需要,但是能顯著的提高裝置效能。 如何跨越邊界直接訪問使用者空間的記憶體頁,一些相關的驅動程式需要這種能力。在很多情況下,核心執行了該種對映,而無需驅動程式的參與。

檔案記憶體對映mmap解決大檔案快速讀寫問題和程序間共享記憶體

mmap函式主要用途有三個: 1、將一個普通檔案對映到記憶體中,通常在需要對檔案進行頻繁讀寫時使用,這樣用記憶體讀寫取代I/O讀寫,以獲得較高的效能; 2、將特殊檔案進行匿名記憶體對映,可以為關聯程序提供共享記憶體空間; 3、為無關聯的程序提供共享記憶體空間,一般也是將一個普通檔案對映到

9.程序間通訊:mmap記憶體對映

1.父子程序永遠共享的東西 檔案描述符 記憶體對映區 2.使用mmap[父子]程序間通訊 父子程序通訊,怎麼找到同一個mmap記憶體對映區? 答: 返回值ptr 檔案描述符fd int main(){

[python + pillow] 自制桌布不完全教程

前言 最近想給自己打雞血,然後就想到經常給自己定義的一些目標之類的。可惜的是自己一直沒有做的很好~計劃定了千萬遍,可是依舊不能很好的執行。這大概就是執行力不夠,其實現實生活中很多事情我們之所以辦不好或許就是因為我們沒有下定決心去執行我們給自己定的計劃定的標準定的各種行為準則~ 扯

Thinkphp傳送郵件完全教程

個人學習thinkphp有一段時間了,期間用thinkphp開發過一些網站專案,當我的專案想有一個傳送郵件的功能的時候,自己在網上看了許多資料,從完全小白到學到這個花了半天時間,其實很簡單(只不過走了很多彎路),現在在這裡分享給大家,算是節約些時間吧 整合檔案下載 下面我來一步一步彙報如何完善這個

python 動態陣列 list 記憶體對映,leetcode 707,真連結串列能打敗假連結串列嗎?

 為什麼寫這個,我在leetcode刷題(leetcode 707 設計連結串列 Design Linked List),有個設計連結串列的題,還特意加了尾指標,也試過雙鏈表,結果時間上還是跑不過別人的直接用list去append和insert的方案,所以隨便測一下動態陣列list的實現機

Linux 程序通訊之:記憶體共享(Shared Memory

一、簡介 共享記憶體允許兩個程序訪問同一塊記憶體區域,它們使用同一個 key 值標記。 二、特點 優點: 通訊方便,兩個程序也是直接訪問同一塊記憶體區域,減少了資料複製的操作,速度上也有明顯優勢。 缺點: 沒有提供同步機制,往往需要我們使用其它(例如訊號)等手段實

記憶體對映機制(mmap)

當CPU讀取資料時,是由記憶體管理單元(MMU)管理的。MMU位於CPU與實體記憶體之間,它包含從虛地址向實體記憶體地址轉化的對映資訊。當CPU引用一個記憶體位置時,MMU決定哪些頁需要駐留(通常通過移位或遮蔽地址的某些位)以及轉化虛擬頁號到物理頁號。 當某個程序讀取磁碟上的

java大檔案讀寫操作,java nio 之MappedByteBuffer,高效檔案/記憶體對映

原文地址:https://www.cnblogs.com/lyftest/p/6564282.html   java處理大檔案,一般用BufferedReader,BufferedInputStream這類帶緩衝的Io類,不過如果檔案超大的話,更快的方式是採用MappedByteB

redis底層設計(二)——記憶體對映資料結構

  我們繼續接著上一篇部落格,今天來看看記憶體對映資料結構。   上篇我們講了內部資料結構,雖然內部資料結構非常強大,但是建立一系列完整的資料結構本身也是一件相當耗費時間的工作,當一個物件包含的元素數量並不多,或者元素本身的體積並不大時,使用代價高昂的內部資料結構並不是最好的辦法。因此我們會用記憶體對映資料