STARTUPINFO si = {0};
PROCESS_INFORMATION pi = {0};
if (CreateProcess(L"test.exe", NULL,NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi))
{
HANDLE processHandle = OpenProcess(PROCESS_VM_WRITE, FALSE, pi.dwProcessId);
void (*ADDRESS) = (void*)0x402CB6;
BYTE buffer[1] = {0xEB};
int lengthOfBuffer = 1;
WriteProcessMemory(pi.hProcess, ADDRESS, buffer, lengthOfBuffer, 0);
CloseHandle(processHandle);
ResumeThread(pi.hThread);
}
DWORD GetModuleBaseAddress( DWORD dwProcID, wchar_t* szModule )
{
MODULEENTRY32 xModule;
HANDLE hSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwProcID );
xModule.dwSize = sizeof( MODULEENTRY32 );
if( Module32First( hSnap, &xModule ) )
while( Module32Next( hSnap, &xModule ) )
if( wcscmp( xModule.szModule, szModule ) == 0 )
{
CloseHandle( hSnap );
return (DWORD)xModule.modBaseAddr;
}
CloseHandle( hSnap );
return 0;
}
int main()
{
STARTUPINFO si = {0};
PROCESS_INFORMATION pi = {0};
if (CreateProcess(L"test.exe", NULL,NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi))
{
DWORD BaseAddress = GetModuleBaseAddress(pi.dwProcessId, L"test.exe");
cout << BaseAddress << endl;
ResumeThread(pi.hThread);
Sleep(10000);
}
else cout<<"Error!"<<endl;
return 0;
}
DWORD GetModuleBaseAddress(DWORD iProcId, wchar_t* DLLName)
{
HANDLE hSnap;
MODULEENTRY32 xModule;
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, iProcId);
xModule.dwSize = sizeof(MODULEENTRY32);
if (Module32First(hSnap, &xModule))
{
if (wcscmp(xModule.szModule, DLLName) == 0)
{
CloseHandle(hSnap);
return (DWORD)xModule.modBaseAddr;
}
else
{
do{
if (wcscmp(xModule.szModule, DLLName) == 0)
{
CloseHandle(hSnap);
return (DWORD)xModule.modBaseAddr;
}
}
while (Module32Next(hSnap, &xModule));
}
}
CloseHandle(hSnap);
return 0;
}
STARTUPINFO si = {0};
PROCESS_INFORMATION pi = {0};
if (CreateProcess("test.exe", NULL,NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi))
{
DWORD BaseAddress = GetBaseAddr(pi.dwProcessId,"test.exe") ;
cout << BaseAddress << endl;
ResumeThread(pi.hThread);
Sleep(10000);
}
else cout<<"Error"<<endl;
return 0;