Code:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include <d3d9.h>
#include <d3dx9.h>
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
#define ADR_engine 0x485F90
#define InGame 0x377C8474
#define NoRecoil 0x37397BBC
#define name1 0x372ED5ED
#define name2 0x372ED56A
INT visual, recoil;
INT visualx;
typedef HRESULT ( WINAPI* oPresent ) ( LPDIRECT3DDEVICE9 pDevice, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion);
oPresent pPresent;
void Memoria( void* pvAddress, void* pvBuffer, size_t len )
{
if( *(BYTE*)pvAddress == *(BYTE*)pvBuffer )
return;
memcpy( ( void* )pvAddress, ( void* )pvBuffer, len );
}
void CreateDev(DWORD * dwVTable){
LPDIRECT3D9 pD3d9 = NULL;
LPDIRECT3DDEVICE9 pD3DDevice = NULL;
pD3d9 = Direct3DCreate9(D3D_SDK_VERSION);
if(pD3d9 == NULL){
return;
}
D3DPRESENT_PARAMETERS pPresentParms;
ZeroMemory(&pPresentParms,sizeof(pPresentParms));
pPresentParms.Windowed = TRUE;
pPresentParms.BackBufferFormat = D3DFMT_UNKNOWN;
pPresentParms.SwapEffect = D3DSWAPEFFECT_DISCARD;
if(FAILED(pD3d9->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,GetDesktopWindow(),D3DCREATE_SOFTWARE_VERTEXPROCESSING,&pPresentParms,&pD3DDevice))){
return;
}
DWORD * dwTable = ( DWORD* )pD3DDevice;
dwTable = ( DWORD* ) dwTable[0];
dwVTable[0] = dwTable[16];
dwVTable[1] = dwTable[17];
dwVTable[2] = dwTable[82];
}
void CPush(const char* cmd)
{
_asm
{
PUSH cmd
MOV EAX, ADR_engine
CALL EAX
ADD ESP, 0x4
}
}
void main()
{
if(GetAsyncKeyState(VK_NUMPAD1)&1) visual = !visual;
if(visual && !visualx){
CPush("ShowFps 1");
CPush("SkelModelStencil 1");
CPush("FogEnable 0");
visualx = 1;
} else if(!visual && visualx){
CPush("ShowFps 0");
CPush("SkelModelStencil 0");
CPush("FogEnable 1");
visualx = 0;
}
if(GetAsyncKeyState(VK_NUMPAD2)&1) recoil= !recoil;
if((*(BYTE *)InGame== 1) && recoil){
memcpy((VOID *)NoRecoil, (VOID *)(PBYTE)"\x90\x90\x90\x90", 4);
memcpy((VOID *)name1, (VOID *)(PBYTE)"\x90\x90", 2);
memcpy((VOID *)name2, (VOID *)(PBYTE)"\x90\x90", 2);
} else {
memcpy((VOID *)NoRecoil, (VOID *)(PBYTE)"\xD9\x44\x24\x14", 4);
memcpy((VOID *)name1, (VOID *)(PBYTE)"\x75\x05", 2);
memcpy((VOID *)name2, (VOID *)(PBYTE)"\x75\x05", 2);
}
}
HRESULT WINAPI Present(LPDIRECT3DDEVICE9 pDevice, CONST RECT *pSourceRect,
CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion)
{
_asm pushad;
main();
_asm popad;
return pPresent(pDevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
}
void *DetourCreate( BYTE *src, const BYTE *dst )
{
int len = 5;
BYTE *jmp = (BYTE*)malloc( len+5 );
DWORD dwBack;
VirtualProtect( src, len, PAGE_EXECUTE_READWRITE, &dwBack );
memcpy( jmp, src, len );
jmp += len;
jmp[0] = 0xE9;
*(DWORD*)( jmp+1 ) = (DWORD)( src+len - jmp ) - 5;
src[0] = 0xE9;
*(DWORD*)( src+1 ) = (DWORD)( dst - src ) - 5;
VirtualProtect( src, len, dwBack, &dwBack );
return( jmp-len );
}
DWORD WINAPI Aguardar(LPVOID lpArgs){
DWORD dwD3D9 = NULL;
while(!dwD3D9){
Sleep(20);
dwD3D9 = (DWORD)GetModuleHandleA("d3d9.dll");
}
DWORD dwVTable[3] = {0};
CreateDev( dwVTable );
pPresent = ( oPresent )DetourCreate(( PBYTE ) dwVTable[1], ( PBYTE ) &Present);
return FALSE;
}
BOOL APIENTRY DllMain( HMODULE hModule, DWORD dwReason, LPVOID lpReserved ){
if ( dwReason == DLL_PROCESS_ATTACH ){
MessageBox(0, "c0dpeHotkeys", "CAEU HotKeys !", MB_OK);
CreateThread( NULL, NULL, &Aguardar, NULL, NULL, NULL );
}
return TRUE;
}