Last time I checked it was iw5mp.exe + 0x55CE10C but the patches may have moved it somewhat..
Here's how to do it outside CE..
Code:
#include <Windows.h>
#include <tlhelp32.h>
#include <process.h>
DWORD Base;
DWORD MW3_PID;
HWND MW3_HWND;
HANDLE MW3_HANDLE;
BYTE* GetEntryPoint(DWORD MW3_PID);
void Do_stuff(void*);
int main()
{
while(!(MW3_HWND = FindWindow(NULL,"Call of Duty®: Modern Warfare® 3 Multiplayer"))) //Or FindWindow("IW5",NULL)
Sleep(10);
while(!(GetWindowThreadProcessId(MW3_HWND,&MW3_PID)))
Sleep(10);
while(!(MW3_HANDLE = OpenProcess(PROCESS_ALL_ACCESS,false,MW3_PID)))
Sleep(10);
Base = (DWORD)GetEntryPoint(MW3_PID);
_beginthread(Do_stuff, 0, 0);
while(MW3_HWND = FindWindow(NULL,"Call of Duty®: Modern Warfare® 3 Multiplayer")) //Or FindWindow("IW5",NULL)
{
Sleep(200);
}
return 0;
}
void Do_stuff(void*)
{
float FOV = 0;
while(1)
{
// Wait for input..
// Then do whatever you want to the address..
std::cout << "\nNew FOV: ";
std::cin >> FOV;
// Let's add a DWORD for the sake of clarity..
if(!isdigit(FOV)) DWORD Address = Base + 0x55CE10C; // iw5mp.exe + 0x55CE10C
WriteProcessMemory(MW3_HANDLE, (PVOID)Address, &FOV, 4, NULL);
SetForegroundWindow(MW3_HWND);
}
}
BYTE* GetEntryPoint(DWORD MW3_PID)
{
MODULEENTRY32 iw5mp;
BYTE* ModuleBase = NULL;
HANDLE hSnapShot = NULL;
if(MW3_PID == 0) return 0;
iw5mp.dwSize = sizeof(iw5mp);
hSnapShot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, MW3_PID );
ModuleBase = iw5mp.modBaseAddr;
CloseHandle( hSnapShot );
return ModuleBase;
}