




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
中科研CASoft軟件工程師培訓講義
GameMaster游戲修改工具
第31講Windows進程間操作中科天地軟件人才培訓中心
Createdby本講重點提要本講對實現(xiàn)GameMaster所必須的進程枚舉以及進程間操作技術做了簡單的介紹。進程枚舉Windows9x及Windows2000/xp平臺
在Windows9x及Windows2000/x系列平臺上,獲取當前系統(tǒng)進程列表主要依靠以下三個系統(tǒng)函數(shù)實現(xiàn):CreateToolhelp32Snapshot、Process32First、Process32Next。首先通過調用系統(tǒng)函數(shù)CreateToolhelp32Snapshot獲取系統(tǒng)中所有進程的一個“快照”(Snapshot),然后通過Process32First和Process32Next函數(shù)遍歷“快照”進行進程枚舉。進程枚舉WindowsNT4.0平臺對于WindowsNT4.0平臺,實現(xiàn)進程枚舉需要訪問一個隱藏的注冊表鍵,我們稱之為PerformanceCounter,該鍵位于以下位置:
HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Perflib,子鍵“Counters”。
Win32進程間訪問技術Windows中每個進程一般僅對自己的進程空間進行讀寫操作,但游戲修改是為了修改其它進程的數(shù)據(jù),因此必須依賴進程間的訪問技術。進程間訪問技術主要涉及到以下幾個關鍵函數(shù)和結構:VirtualQueryExMEMORY_BASIC_INFORMATIONReadProcessMemoryWriteProcessMemoryVirtualQueryEx函數(shù)為了獲取進程空間信息,我們需要用到VirtualQueryEx函數(shù),該函數(shù)原型如下:
WINBASEAPIDWORDWINAPIVirtualQueryEx(HANDLEhProcess,LPCVOIDlpAddress,PMEMORY_BASIC_INFORMATIONlpBuffer,DWORDdwLength);
調用該函數(shù)可以獲取MEMORY_BASIC_INFORMATION結構描述的內存信息。MEMORY_BASIC_INFORMATION該結構定義如下:
typedefstruct_MEMORY_BASIC_INFORMATION{ PVOIDBaseAddress; PVOIDAllocationBase; DWORDAllocationProtect; SIZE_TRegionSize; DWORDState; DWORDProtect; DWORDType; }MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;
MEMORY_BASIC_INFORMATION關于該結構的更詳細的說明,請參閱MSDN文檔。這里我們要指出的是,需要訪問并且可以訪問的內存可以由以下兩個字段來確定:
State字段:State字段的可能值為MEM_COMMIT、MEM_RESERVE、MEM_FREE三種情況,分別表示已提交物理存儲區(qū)域、保留區(qū)域和空閑區(qū)域,我們僅關心提交區(qū)域,即進行判斷:mbi.State==MEM_COMMIT。
Protect字段:Protect字段有多種可能值,在此不一一列舉,詳細說明請參閱MSDN文檔,這里我們僅關心Protect字段為PAGE_READWRITE的區(qū)域,即進行判斷:mbi.Protect==PAGE_READWRITE。ReadProcessMemory函數(shù)函數(shù)原型如下:
BOOLReadProcessMemory(HANDLEhProcess, //handletotheprocessLPCVOIDlpBaseAddress, //baseofmemoryareaLPVOIDlpBuffer, //databufferSIZE_TnSize, //numberofbytestoreadSIZE_T*lpNumberOfBytesRead //numberofbytesread );
該函數(shù)讀取目標進程中指定位置、指定大小的一塊內存數(shù)據(jù)至本地緩存,并返回實際讀取的字節(jié)數(shù)。WriteProcessMemory函數(shù)函數(shù)原型如下:
BOOLWriteProcessMemory(HANDLEhProcess, //handletoprocessLPVOIDlpBaseAddress, //baseofmemoryareaLPCVOIDlpBuffer, //databufferSIZE_TnSize, //countofbyt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 技術服務保密合同
- 合同范本之購房合同填寫范本模板
- 2025年度中國平煤神馬控股集團高校畢業(yè)生招聘808人筆試參考題庫附帶答案詳解
- 2025山西紅杰人才集團有限公司招聘10人筆試參考題庫附帶答案詳解
- 2024-2025學年北京通州區(qū)高三(上)期末歷史試卷(含答案)
- 2025年上半年宜春市廣播電視臺招考電視新聞主播易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽蕪湖市數(shù)據(jù)資源管理局(政務服務管理局)招聘6人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省淮南市政府購買崗招聘92人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省寧國市林業(yè)事業(yè)發(fā)展中心公開招聘工作人員1人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省農(nóng)科院引進博士研究生擬聘用人員(第二批)易考易錯模擬試題(共500題)試卷后附參考答案
- 電梯采購合同范本
- 2025年官方二手房交易協(xié)議
- 2025年山東泰山財產(chǎn)保險股份有限公司招聘筆試參考題庫含答案解析
- 2025年度珠寶店珠寶首飾設計研發(fā)合作協(xié)議
- 非遺數(shù)字化保護的可行性研究
- 農(nóng)村自建房施工合同范本(包工包料)
- 2025年復工復產(chǎn)安全開工第一課專題培訓
- 【道法】做自信的人課件 2024-2025學年統(tǒng)編版道德與法治七年級下冊
- 軍兵種基礎知識
- 公交車預防春困
- 法務助理實習報告
評論
0/150
提交評論