Auto ON Nigga
Code:
/*************
->Auto-ON Source v1.0 - Para Estudos
->Source Feita por ChaosMagician
->Créditos : WE11ington, ChaosMagician, Solify, Capevaldo, De.cod.er Back, Azorbix, Hans211, Gellin, mmbob, baraozin, luizimloko
NÃO RETIRE OS CRÉDITOS - BOM USO!!
*************/
#define VC_EXTRALEAN
#define WIN32_LEAN_AND_MEAN
#pragma message("Feito por ChaosMagician e outros - Não retire esses créditos!!")
#include <windows.h>
#include <d3dx9.h>
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
#define DeviceGame 0x90E6A0
#define ConsoleUnwrapped 0x485FC0
VOID WINAPIV vRunConsoleCommand(CONST CHAR *szCommand)
{
__asm
{
PUSHAD
PUSH szCommand
MOV EAX, ConsoleUnwrapped
CALL EAX
ADD ESP, 0x4
POPAD
}
}
BOOL GameReady2Hook(VOID)
{
if(GetModuleHandle("d3d9.dll") != NULL && GetModuleHandle("CShell.dll") != NULL && GetModuleHandle("ClientFX.fxd") != NULL)
return TRUE;
return FALSE;
}
DWORD PegarVTable(INT valor)
{
DWORD *Device = ***(DWORD ****)DeviceGame;
if(Device == NULL)
return 0;
return Device[valor];
}
#define Detour_Type_0xE9 1
#define Detour_Type_0xB8 2
#define Detour_Type_0x68 3
unsigned int iPointers[5] = {0xE9, 0xB8, 0xE0FF, 0x68, 0xC3};
DWORD CreateDetour(DWORD dwThread, DWORD dwAdress, DWORD dwType, DWORD dwSize)
{
DWORD dwDetour, dwProtect, i;
if(dwAdress && dwThread && dwSize >= dwSize)
{
dwDetour = (DWORD)VirtualAlloc(0, dwSize + dwSize, 0x1000, 0x40);
if(dwDetour && VirtualProtect((VOID *)dwAdress, dwSize, 0x40, &dwProtect))
{
for(i = 0; i < dwSize; i++)
{
*(BYTE *)(dwDetour + i) = *(BYTE *)(dwAdress + i);
}
switch(dwType)
{
case Detour_Type_0xE9:
{
*(BYTE *)(dwDetour + dwSize + 0) = iPointers[0];
*(DWORD *)(dwDetour + dwSize + 1) = (dwAdress - dwDetour - dwSize);
*(BYTE *)(dwAdress + 0) = iPointers[0];
*(DWORD *)(dwAdress + 1) = (dwThread - dwAdress - dwSize);
}
break;
case Detour_Type_0xB8:
{
*(BYTE *)(dwDetour + dwSize + 0) = iPointers[1];
*(DWORD *)(dwDetour + dwSize + 1) = (dwAdress + dwSize);
*(WORD *)(dwDetour + dwSize + 5) = iPointers[2];
*(BYTE *)(dwAdress + 0) = iPointers[1];
*(DWORD *)(dwAdress + 1) = (dwThread);
*(WORD *)(dwAdress + 5) = iPointers[2];
}
break;
case Detour_Type_0x68:
{
*(BYTE *)(dwDetour + dwSize + 0) = iPointers[3];
*(DWORD *)(dwDetour + dwSize + 1) = (dwAdress + dwSize);
*(WORD *)(dwDetour + dwSize + 5) = iPointers[4];
*(BYTE *)(dwAdress + 0) = iPointers[3];
*(DWORD *)(dwAdress + 1) = (dwThread);
*(WORD *)(dwAdress + 5) = iPointers[4];
}
break;
}
VirtualProtect((VOID *)dwAdress, dwSize, dwProtect, &dwProtect);
VirtualProtect((VOID *)dwDetour, dwSize + dwSize, 0x20, &dwProtect);
return dwDetour;
}
}
Sleep(10);
return(0);
}
typedef HRESULT(WINAPI *tPresent)(LPDIRECT3DDEVICE9 pDevice, CONST RECT *a, CONST RECT *b, HWND c, CONST RGNDATA *d);
tPresent oPresent;
HRESULT WINAPI hkPresent(LPDIRECT3DDEVICE9 pDevice, CONST RECT *a, CONST RECT *b, HWND c, CONST RGNDATA *d)
{
__asm PUSHAD;
vRunConsoleCommand("SkelModelStencil 1");
vRunConsoleCommand("ShowFPS 1");
vRunConsoleCommand("FogEnable 0");
__asm POPAD;
return oPresent(pDevice, a, b, c, d);
}
DWORD WINAPI dwHook(LPVOID)
{
while(!GameReady2Hook())
Sleep(500);
oPresent = (tPresent)CreateDetour((DWORD)&hkPresent, (DWORD)PegarVTable(17), Detour_Type_0xE9, 5);
return NULL;
}
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
{
DisableThreadLibraryCalls(hModule);
if(dwReason == DLL_PROCESS_ATTACH)
{
MessageBox(NULL, "Source Auto On v1.0", "Feito por ChaosMagician e outros!", MB_OK);
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)dwHook, NULL, NULL, NULL);
}
return TRUE;
}





