創作內容

3 GP

獲取指定程式模塊基址方法

作者:廢物敗類窩囊廢漢堡│2018-09-11 00:08:35│巴幣:6│人氣:396
DWORD GetModuleBase(const wchar_t * ModuleName, DWORD ProcessId) {
//這個結構包含很多關於模塊的好東西
MODULEENTRY32 ModuleEntry = { 0 };
//獲取指定進程中所有模塊的SnapShot
HANDLE SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessId);

if (!SnapShot)
return NULL;

//你必須初始化大小,否則它將無法工作
ModuleEntry.dwSize = sizeof(ModuleEntry);

//獲取流程中的第一個模塊
if (!Module32First(SnapShot, &ModuleEntry)) {
return NULL;
}
do {
//檢查模塊名稱是否與我們要查找的名稱相匹配
if (!wcscmp(ModuleEntry.szModule, ModuleName)) {
//如果是,請關閉SnapShot句柄並返回基址
CloseHandle(SnapShot);
return (DWORD)ModuleEntry.modBaseAddr;

}
//抓取SnapShot中的下一個模塊
} while (Module32Next(SnapShot, &ModuleEntry));


//我們找不到指定的模塊,所以返回NULL
CloseHandle(SnapShot);
return NULL;
}

搭配的標頭檔 <Windows.h>、<tlhelp32.h>、<tchar.h>


這就是快速又方便的做法

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4126027
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 2 篇留言

廢物敗類窩囊廢
好辣 給ㄋㄊㄓ
但4我什麼都看不懂

11-04 15:29

廢物敗類窩囊廢漢堡
你真的很棒11-04 15:34

我也想跟你一樣厲害...

11-04 16:09

廢物敗類窩囊廢漢堡
大肌肌11-04 16:12
我要留言提醒:您尚未登入,請先登入再留言

3喜歡★a891030 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:哀~~... 後一篇:關於組語的基礎知識...

追蹤私訊切換新版閱覽

作品資料夾

a4516【巴哈姆特事紀】
骯,《外傳.命之章》第25集〈LCDA那啥?〉更新完畢。櫺星、玄羊、玉壺,在玫瑰凋落時宣告新生。看更多我要大聲說昨天15:36


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】