#include <iostream>
#include <Windows.h>
#include "tlhelp32.h"
#include <tchar.h>
#include <string>
#include <stdio.h>
HMODULE GetProcessModuleHandle(DWORD pid, CONST TCHAR* moduleName) {
MODULEENTRY32 moduleEntry;
HANDLE handle = NULL;
handle = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
if (!handle) {
CloseHandle(handle);
return NULL;
}
ZeroMemory(&moduleEntry, sizeof(MODULEENTRY32));
moduleEntry.dwSize = sizeof(MODULEENTRY32);
if (!Module32First(handle, &moduleEntry)) {
CloseHandle(handle);
return NULL;
}
do {
if (_tcscmp(moduleEntry.szModule, moduleName) == 0) { return moduleEntry.hModule; }
} while (Module32Next(handle, &moduleEntry));
CloseHandle(handle);
return 0;
}
int main() {
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 process = { sizeof(PROCESSENTRY32) };
while (Process32Next(hProcessSnap, &process)) {
std::string s_szExeFile = process.szExeFile;
if (s_szExeFile == "s.exe") {
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, process.th32ProcessID);
if (hProcess)
{
HMODULE hMod = GetProcessModuleHandle(process.th32ProcessID, "Role.dll");
if (hMod)
{
auto fnAddress = GetProcAddress(hMod, "GetKongfuAmount");
std::cout << fnAddress <<" "<< GetLastError();
}
}
}
}
}