Hello.
I found offset that when NOP'ed freezes your ammo.
When I nop it from ollydbg it works as it should. Freezs ammo.
But when I inject my dll it crashes as soon as I activate it (Pressing F4).
Can you help me to repair it?




Code:
#include <Windows.h>
#include <wchar.h>

#define ThreadMake(x) CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)&x,NULL,0,NULL); 
#define ThreadMakeParam(x, param) CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)&x,param,0,NULL);

void Initialize();
void ToggleAmmo();
byte * pAmmoOffset = NULL;



void Hotkeys()
{
	while(true)
	{
		if (GetAsyncKeyState(VK_F4))
		{
			ToggleAmmo();
		}
		Sleep(1000);
	}
}

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
		Initialize();
		ThreadMake(Hotkeys);
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
		break;
	}
	return TRUE;
}

void Initialize()
{
	DWORD temp = (DWORD)GetModuleHandle(L"CryGameCrysis2");
	pAmmoOffset = (byte *)temp + 0x4225D;

	//WCHAR tempChar[256];
	//swprintf(tempChar, 256, L"0x%X", pAmmoOffset);
	//MessageBox(NULL, tempChar,  L"Info", MB_OK | MB_ICONASTERISK);
}

void ToggleAmmo()
{
	static bool hack_activated = false;

	if(hack_activated)
	{
		*pAmmoOffset		= 0x89;
		*(pAmmoOffset + 1)	= 0x70;
		*(pAmmoOffset + 2)	= 0x04;
		hack_activated = false;
	} 
	else
	{
		*pAmmoOffset			= 0x90;
		*(pAmmoOffset + 0x1)	= 0x90;
		*(pAmmoOffset + 0x2)	= 0x90;
		hack_activated = true;
	}
}