Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. // Source Code by LEE
  2. // Base from www.unknowncheats.me && www.mpgh.net
  3. // main.h
  4. #include <windows.h>
  5. #include <d3d9.h>
  6. #include <d3dx9.h>
  7. #pragma comment (lib, "d3dx9.lib")
  8. #include <detours.h>
  9. #pragma comment (lib, "detours.lib")
  10. #include <iostream>
  11. #include <fstream>
  12. #include "MenuSprite.h"
  13. using namespace std;
  14.  
  15. struct Menu_t
  16. {
  17. char* type;
  18. int value;
  19. bool Number;
  20. int maxchoice;
  21. };
  22.  
  23. Menu_t MyMenu[7] = {
  24. {"Wallhack", 1, false, 2},
  25. {"Color1", 4, true, 11},
  26. {"Color2", 2, true, 11},
  27. {"Crosshair", 1, true, 4000},
  28. {"Speedhack", 0, false, 2},
  29. {"Base Walk[F11]", 0, false, 2},
  30. {"Walk Through[Home]", 0, false, 2},
  31. };
  32.  
  33. LPD3DXFONT menuFont = NULL;
  34. LPDIRECT3DTEXTURE9 txBody = NULL;
  35. LPD3DXSPRITE spBody = NULL;
  36. D3DXVECTOR3 pBody;
  37. int menuIndex = 0;
  38. bool ShowMenu = true;
  39. DWORD StartMenuTextX = 50;
  40. DWORD StartMenuTextY = 200;
  41. DWORD StartMenuValueX = 210;
  42. DWORD MenuRank = 20;
  43. int MaxChoice = 7;
  44.  
  45.  
  46. HRESULT(__stdcall*pEndScene)(LPDIRECT3DDEVICE9) = NULL;
  47. HRESULT(__stdcall*pReset)(LPDIRECT3DDEVICE9,D3DPRESENT_PARAMETERS *) = NULL;
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64. //main.cpp
  65. #include "main.h"
  66. void DrawString(LPD3DXFONT fromFont, int x, int y, DWORD color, const char *fmt, ...)
  67. {
  68. RECT FontPos = { x, y, x + 120, y + 16 };
  69. char buf[1024] = {'\0'};
  70. va_list va_alist;
  71.  
  72. va_start(va_alist, fmt);
  73. vsprintf(buf, fmt, va_alist);
  74. va_end(va_alist);
  75.  
  76. fromFont->DrawText(NULL,buf, -1, &FontPos, DT_NOCLIP, color);
  77. }
  78. BOOL bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
  79. {
  80. for(;*szMask;++szMask,++pData,++bMask)
  81. if(*szMask=='x' && *pData!=*bMask) return 0;
  82. return (*szMask) == NULL;
  83. }
  84.  
  85. DWORD FindPattern(DWORD dwdwAdd,DWORD dwLen,BYTE *bMask,char * szMask)
  86. {
  87. for(DWORD i=0; i<dwLen; i++)
  88. if (bCompare((BYTE*)(dwdwAdd+i),bMask,szMask)) return (DWORD)(dwdwAdd+i);
  89. return 0;
  90. }
  91. HRESULT __stdcall myReset(LPDIRECT3DDEVICE9 pDevice,D3DPRESENT_PARAMETERS *pPresentationParameters)
  92. {
  93. __asm nop;
  94. HRESULT resultReset = pReset(pDevice,pPresentationParameters);
  95. if(SUCCEEDED(resultReset))
  96. {
  97. if(menuFont) menuFont->OnResetDevice();
  98. if(spBody) spBody->OnResetDevice();
  99. }
  100. return resultReset;
  101. }
  102. HRESULT __stdcall myEndScene(LPDIRECT3DDEVICE9 pDevice)
  103. {
  104. __asm nop;
  105. if(GetAsyncKeyState(VK_END)&1) ShowMenu = !ShowMenu;
  106. if(ShowMenu)
  107. {
  108. if(GetAsyncKeyState(VK_LEFT)&1) MyMenu[menuIndex].value-=1;
  109. if(GetAsyncKeyState(VK_RIGHT)&1) MyMenu[menuIndex].value+=1;
  110. if(GetAsyncKeyState(VK_DOWN)&1) menuIndex+=1;
  111. if(GetAsyncKeyState(VK_UP)&1) menuIndex-=1;
  112. if(menuIndex < 0) menuIndex = 0;
  113. if(menuIndex > (MaxChoice-1)) menuIndex = (MaxChoice-1);
  114.  
  115. if(MyMenu[menuIndex].value < 0) MyMenu[menuIndex].value = 0;
  116. if(MyMenu[menuIndex].value > (MyMenu[menuIndex].maxchoice -1)) MyMenu[menuIndex].value = (MyMenu[menuIndex].maxchoice -1);
  117. }
  118. if(menuFont == NULL) D3DXCreateFontA(pDevice, 15, 0, FW_BOLD, 1, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Tahoma", &menuFont);
  119. if(txBody == NULL)
  120. D3DXCreateTextureFromFileInMemory(pDevice, &_MenuSprite, sizeof(_MenuSprite), &txBody);
  121. if(spBody == NULL)
  122. D3DXCreateSprite(pDevice, &spBody);
  123.  
  124. if(ShowMenu == true && menuFont != NULL)
  125. {
  126. pBody.x=0.0f; pBody.y= 0.0f;
  127. pBody.z=0.0f;
  128. spBody->Begin(D3DXSPRITE_ALPHABLEND);
  129. spBody->Draw(txBody,NULL,NULL,&D3DXVECTOR3(10.0f,10.0f, 0.0f), 0xFFFFFFFF);
  130. spBody->End();
  131. for(int i = 0; i < MaxChoice; i++)
  132. {
  133. if(i == menuIndex)
  134. {
  135. DrawString(menuFont,StartMenuTextX, StartMenuTextY+(i*MenuRank),0xFF00FF00, "%s",MyMenu[i].type);
  136. if(MyMenu[i].value == 0 && MyMenu[i].Number == false)
  137. {
  138. DrawString(menuFont,StartMenuValueX, StartMenuTextY+(i*MenuRank),0xFF00FF00, "Off");
  139. }
  140. else if(MyMenu[i].value == 1 && MyMenu[i].Number == false)
  141. {
  142. DrawString(menuFont,StartMenuValueX, StartMenuTextY+(i*MenuRank),0xFF00FF00, "On");
  143. }
  144. else
  145. {
  146. DrawString(menuFont,StartMenuValueX, StartMenuTextY+(i*MenuRank),0xFF00FF00, "%i",MyMenu[i].value);
  147. }
  148. }
  149. else
  150. {
  151. DrawString(menuFont,StartMenuTextX, StartMenuTextY+(i*MenuRank),0xFF0000FF, "%s",MyMenu[i].type);
  152. if(MyMenu[i].value == 0 && MyMenu[i].Number == false)
  153. {
  154. DrawString(menuFont,StartMenuValueX, StartMenuTextY+(i*MenuRank),0xFF0000FF, "Off");
  155. }
  156. else if(MyMenu[i].value == 1 && MyMenu[i].Number == false)
  157. {
  158. DrawString(menuFont,StartMenuValueX, StartMenuTextY+(i*MenuRank),0xFF0000FF, "On");
  159. }
  160. else
  161. {
  162. DrawString(menuFont,StartMenuValueX, StartMenuTextY+(i*MenuRank),0xFF0000FF, "%i",MyMenu[i].value);
  163. }
  164. }
  165. }
  166. DrawString(menuFont,90, 180,0xFF0000FF, "DEMO D3DMENU");
  167. DrawString(menuFont,85, 480,0xFF0000FF, "[End] Show/Hide");
  168.  
  169. }
  170. return pEndScene(pDevice);
  171. }
  172. VOID Dx9Hook()
  173. {
  174. DWORD hD3D = NULL;
  175. DWORD * VTable;
  176. while (!hD3D) hD3D = (DWORD)GetModuleHandle("d3d9.dll");
  177. DWORD PPPDevice = FindPattern(hD3D, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
  178. memcpy( &VTable, (VOID *)(PPPDevice + 2), 4);
  179. pEndScene = (HRESULT(__stdcall*)(LPDIRECT3DDEVICE9))VTable[42];
  180. pReset = (HRESULT(__stdcall*)(LPDIRECT3DDEVICE9,D3DPRESENT_PARAMETERS *))VTable[16];
  181. DetourTransactionBegin();
  182. DetourUpdateThread(GetCurrentThread());
  183. DetourAttach(&(PVOID&)pEndScene, myEndScene);
  184. DetourAttach(&(PVOID&)pReset, myReset);
  185. DetourTransactionCommit();
  186.  
  187. }
  188.  
  189. BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
  190. {
  191. if( fdwReason == 1 )
  192. {
  193. CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)Dx9Hook, NULL, NULL, NULL);
  194. return TRUE;
  195. }
  196. return FALSE;
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement