虛擬記憶體遍歷 VMView

2021-07-06 01:08:51 字數 2039 閱讀 5744

vmquery.h:

#pragma once

#include #include using std::vector;

typedef struct _vmqueryex

vmqueryex;

typedef struct _vmquery

vmquery, *pvmquery;

class cvmquery

;

vmquery.cpp:

#include "stdafx.h"

#include "vmquery.h"

#include cvmquery::cvmquery()

cvmquery::~cvmquery()

void cvmquery::getprotecttext(dword dwprotect, ptstr szbuf, int nsize, bool bshowflags)

stringcchcopy(szbuf, nsize, p);

if (bshowflags)

}void cvmquery::getmemstoragetext(dword dwstorage, ptstr szbuf, int nsize)

stringcchcopy(szbuf, nsize, p);

}// 將區域內的塊資訊儲存到vmquery_help中

bool cvmquery::getvmblockinfo(handle hprocess, lpcvoid lpaddress, vmqueryex *pvmblock)

// 設定棧標誌位

// 注1:具有page_guard保護屬性的塊的數量大於0,則此區域是為執行緒棧而預定的

pvmblock->brgnisastack = (pvmblock->dwrgnguardblks > 0);

return(true);

}bool cvmquery::getvminfo(handle hprocess, lpcvoid lpaddress, pvmquery pvmq)

// 4. 解析為文字資訊

getprotecttext(pvmq->dwrgnprotection, pvmq->szrgnprotection, _countof(pvmq->szrgnprotection), true);

getmemstoragetext(pvmq->dwrgnstorage, pvmq->szrgnstorage, _countof(pvmq->szrgnstorage));

stringcchprintf(pvmq->szrgnbaseaddress,_countof(pvmq->szrgnbaseaddress), l"0x%08x", pvmq->lprgnbaseaddress );

stringcchprintf(pvmq->szrgnsize, _countof(pvmq->szrgnsize), l"%10d", pvmq->nrgnsize );

stringcchprintf(pvmq->szrgnblocks, _countof(pvmq->szrgnblocks), l"%3d", pvmq->dwrgnblocks );

return true;

}

vmview.cpp:

// vmview.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include "vmquery.h"

bool showvm(dword dwprocessid)

; while ( objvm.getvminfo(hprocess, lpaddress, &stcvmq) )

closehandle(hprocess);

return true;

}int _tmain(int argc, _tchar* argv)

這段**沒獲取塊內資訊  只獲取了塊的大小和數量(需要自己拓展獲取塊資訊)

虛擬記憶體應用

虛擬記憶體的重要性體現在下面幾個方面 1 虛擬記憶體可以對映到硬碟,以達到擴充套件記憶體的作用,這樣系統在物理記憶體已經用滿的情況下,就不會因為沒有記憶體可用,而導致系統崩潰。2 虛擬記憶體是以程序空間為定址空間的,一般情況,程序使用者模式下的定址空間 是2g,為了避免記憶體的碎片,可以把2g程序空...

虛擬記憶體(Virtual Memory)

虛擬記憶體 virtual memory 是windows管理所有可用記憶體的方式。對於32位windows系 統,每個程序所用到的虛擬記憶體位址從0到2 32 1,總容量4gb,其中2gb是與作業系統以 及其他所有程序所共享,另外2gb分派給程序獨佔 這就是常說的32位windows中乙個進 程最...

虛擬記憶體使用

虛擬記憶體使用一 簡介windows 提供了3 中進行記憶體管理的方法,包括 虛擬記憶體 一般用來管理大型資料結構,受到硬碟調頁檔案的支援 記憶體對映檔案 常用來管理大型資料流和多程序共享。記憶體堆 最適合用來管理大量的小物件。二 虛擬記憶體的使用 1 我們可以在程序的位址空間中保留乙個區域 pvo...