Battlefield 3 Source Code -POMOC

Torrex

Użytkownik
Dołączył
Luty 28, 2013
Posty
4
Witam,
Od kilku dni zacząłem pracować nad cheat'em do gry Battlefield 3 ,który miałby posiadać funkcję no spread i no recoil .
Teraz zwracam się z prośbą do wykwintnych programistów ,którzy mogliby pomóc w dalszej pracy i omówieniu mojego code. Nie mam również pojęcia jak wyciągnąć aktualne adresy tych funkcji .

Source:


Kod:
#include <Windows.h>

void* g_pOriginalGetRecoil=NULL;
void* g_pOriginalGetDeviation=NULL;
void** g_pGetRecoilVTableAddress=(void**)0x020FA644;
void** g_pGetDeviationVTableAddress=(void**)0x020FA640;


void __declspec(naked) hkGetRecoil(void)
{
__asm
{
xor eax, eax
mov [ecx+0x164], eax
mov [ecx+0x16C], eax
jmp dword ptr[g_pOriginalGetRecoil]
}
}


void __declspec(naked) hkGetDeviation(void)
{
__asm
{
xor eax, eax
mov [ecx+0x140], eax
mov [ecx+0x13C], eax
jmp dword ptr[g_pOriginalGetDeviation]
}
}

unsigned long __stdcall HookThread(void* param)
{
unsigned long flOldProtection;
if((int)param==1)	 //Enable Hook
{
if(!g_pOriginalGetDeviation)
g_pOriginalGetDeviation=*g_pGetDeviationVTableAddr ess;	 //Backing up Original Functions
if(!g_pOriginalGetRecoil)
g_pOriginalGetRecoil=*g_pGetRecoilVTableAddress;

if(VirtualProtect(g_pGetDeviationVTableAddress,8,P AGE_READWRITE,&flOldProtection))	 //Removing memory protection
{
*g_pGetDeviationVTableAddress=hkGetDeviation;	 //Swapping VTable Pointers
*g_pGetRecoilVTableAddress=hkGetRecoil;
return VirtualProtect(g_pGetDeviationVTableAddress,8,flOl dProtection,&flOldProtection);	 //Readding normal memory protection
}
else
{
return 0;
}
}
else //Disable Hook
{
if(VirtualProtect(g_pGetDeviationVTableAddress,8,P AGE_READWRITE,&flOldProtection))	 //Removing memory protection
{
*g_pGetDeviationVTableAddress=g_pOriginalGetDeviat ion;	 //Setting VTable pointers back to original ones
*g_pGetRecoilVTableAddress=g_pOriginalGetRecoil;
return VirtualProtect(g_pGetDeviationVTableAddress,8,flOl dProtection,&flOldProtection);	 //Readding normal memory protection
}
else
{
return 0;
}
}
return 1;
}


unsigned long __stdcall DllMain(HMODULE hModule, unsigned long ulReason, void* param)
{
if(ulReason==DLL_PROCESS_ATTACH)
{
CloseHandle(CreateThread(NULL,0,&HookThread,(void* )1,0,NULL)); //Enable hook
}
else if(ulReason==DLL_PROCESS_DETACH)
{
CloseHandle(CreateThread(NULL,0,&HookThread,NULL,0 ,NULL)); //Disable hook
}
return 1;
}
 
Do góry Bottom