|
发表于 2024-12-25 03:16:43
|
显示全部楼层
这个32 64 都可以取
函数 长整型 取模块基址(文本型 进程名, 文本型 模块名)
字符型 进程名字符[100]
文本到字符型(进程名, 进程名字符, 取类型大小(进程名字符))
字符型 模块名字符[100]
文本到字符型(模块名, 模块名字符, 取类型大小(模块名字符))
#嵌入代码
wchar_t *processName = 进程名字符; // 进程名
wchar_t *moduleName = 模块名字符; // 模块名
DWORD processId = 取进程ID_(进程名);
INT64 moduleBaseAddress = 取模块地址_(processId, 模块名);
XCL_log("进程ID", processId, "模块基址", X_Base_DecToN(moduleBaseAddress, 16));
return moduleBaseAddress;
#嵌入代码结束
函数 长整型 取模块地址_(DWORD 进程ID, 文本型 模块名)
字符型 模块名字符[100]
文本到字符型(模块名, 模块名字符, 取类型大小(模块名字符))
#嵌入代码
wchar_t *moduleName = 模块名字符;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, 进程ID);
if (hSnapshot == INVALID_HANDLE_VALUE) {
return 0;
}
MODULEENTRY32 me32;
me32.dwSize = sizeof(MODULEENTRY32);
if (Module32First(hSnapshot, &me32)) {
do {
if (wcscmp(me32.szModule, moduleName) == 0) {
uintptr_t moduleBaseAddress = reinterpret_cast<uintptr_t>(me32.modBaseAddr);
CloseHandle(hSnapshot);
return moduleBaseAddress;
}
} while (Module32Next(hSnapshot, &me32));
}
CloseHandle(hSnapshot);
return 0;
#嵌入代码结束
函数 长整型 取进程ID_(文本型 进程名)
字符型 进程名字符[100]
文本到字符型(进程名, 进程名字符, 取类型大小(进程名字符))
#嵌入代码
wchar_t *processName = 进程名字符;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot == INVALID_HANDLE_VALUE) {
return 0;
}
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hSnapshot, &pe32)) {
do {
if (wcscmp(pe32.szExeFile, processName) == 0) {
DWORD processId = pe32.th32ProcessID;
CloseHandle(hSnapshot);
return processId;
}
} while (Process32Next(hSnapshot, &pe32));
}
CloseHandle(hSnapshot);
return 0;
#嵌入代码结束
|
|