Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 0xSA
- By Michael
- _________________
- Date: 08.02.2010
- Time: 16:11
- _________________
- http://forum.sa-mp.de
- */
- // Includes
- #include <Windows.h>
- #include <cstdio>
- #include <d3d9.h>
- #include <d3dx9.h>
- #include "menu.h"
- // Pragma
- #pragma once
- #pragma comment(lib, "d3d9.lib")
- #pragma comment(lib, "d3dx9.lib")
- // Declarations
- CD3DMenu menu(10, 40, 300, 500, "0xSA", VK_INSERT, L"Arial") ;
- MENU_ENTRY health ;
- MENU_ENTRY armor ;
- MENU_ENTRY money ;
- typedef HRESULT(__stdcall* tEndScene)(LPDIRECT3DDEVICE9) ;
- tEndScene pEndScene ;
- DWORD dwEndScene ;
- int firstrun = 1 ;
- // Functions
- void *DetourFunc(BYTE *src, const BYTE *dst, const int len) {
- BYTE *jmp = (BYTE*)malloc(len+5) ;
- DWORD dwback ;
- VirtualProtect(src, len, PAGE_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) ;
- }
- bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask) {
- for(;*szMask;++szMask, ++pData, ++bMask)
- if(*szMask=='x' && *pData != *bMask )
- return false ;
- return (*szMask) == NULL ;
- }
- DWORD dwFindPattern(DWORD dwAddress, DWORD dwLen, BYTE *bMask, char * szMask) {
- for(DWORD i=0; i < dwLen; i++)
- if(bDataCompare((BYTE*)(dwAddress+i), bMask, szMask))
- return (DWORD)(dwAddress+i) ;
- return 0 ;
- }
- // Hooks
- HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice) {
- if(firstrun != 0) {
- menu.init(pDevice) ;
- health = menu.addMenuPointBool("Unl. HP", false) ;
- armor = menu.addMenuPointBool("Unl. Armor", false) ;
- money = menu.addMenuPointBool("Unl. Money", false) ;
- firstrun = 0 ;
- }
- if(menu.entrys[health].valBool == true) {
- *(float*)(*(DWORD*)0xB6F5F0 + 0x540) = 100.0f ;
- }
- if(menu.entrys[armor].valBool == true) {
- *(float*)(*(DWORD*)0xB6F5F0 + 0x548) = 100.0f ;
- }
- if(menu.entrys[money].valBool == true) {
- *(DWORD*)0xB7CE50 = 999999999 ;
- }
- menu.heartbeat() ;
- return pEndScene(pDevice) ;
- }
- // Initialise
- void Init() {
- HMODULE hmodule = NULL ;
- while(!hmodule) {
- hmodule = GetModuleHandleA("d3d9.dll") ;
- Sleep(100) ;
- }
- DWORD* VTableStart = 0;
- DWORD FoundPointer = dwFindPattern((DWORD)hmodule, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx") ;
- memcpy(&VTableStart, (void*)(FoundPointer+2), 4) ;
- dwEndScene = (DWORD)VTableStart[42] ;
- pEndScene = (tEndScene)DetourFunc((PBYTE) dwEndScene, (PBYTE)hkEndScene, 5) ;
- }
- int WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) {
- switch(reason) {
- case DLL_PROCESS_ATTACH:
- CreateThread(0, 0, (LPTHREAD_START_ROUTINE) Init, 0, 0, 0) ;
- break ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement