#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
using namespace std;
int main()
{
HANDLE openprocess;
PROCESSENTRY32 pEntry;
MODULEENTRY32 mEntry;
HANDLE processes = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
Process32First(processes, &pEntry);
while(Process32Next(processes, &pEntry))
{
if(strcmp(pEntry.szExeFile, "test.exe")==0)
{
break;
}
}
HANDLE process = CreateToolhelp32Snapshot(TH32CS_SNAPALL, pEntry.th32ProcessID);
Module32First(process, &mEntry);
int a = (int)mEntry.modBaseAddr;
int s = (int)mEntry.modBaseSize;
BYTE* b;
b = new BYTE[s];
cout<< mEntry.szModule << " " << hex << a << endl;
while(true)
{
bool a = Module32Next(process, &mEntry);
if(a == false)
{
break;
}
cout<< mEntry.szModule << " " << hex << (int)mEntry.modBaseAddr << endl;
}
openprocess = OpenProcess(PROCESS_VM_READ|PROCESS_VM_OPERATION, 0, pEntry.th32ProcessID);
DWORD old = 0;
VirtualProtectEx(openprocess,(LPVOID)a, s, PAGE_READWRITE, &old);
if(!ReadProcessMemory(openprocess, (LPCVOID)a, &b, s, 0))
{
cout<< "fail";
}
cout<< b[0];
cin.get();
}