Guest User

Untitled

a guest
Mar 31st, 2017
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.13 KB | None | 0 0
  1. #include "Hooks.hpp"
  2. #include "Options.hpp"
  3. #include "Utils.hpp"
  4. #include "XorStr.hpp"
  5. #include "GlowManager.h"
  6. #include "DrawManager.hpp"
  7. #include "EntityESP.hpp"
  8. #include <time.h>
  9. #include "ImGUI/imgui.h"
  10. #include "ImGUI/DX9/imgui_impl_dx9.h"
  11. #include <iomanip>
  12. #include <ctime>
  13. using namespace std;
  14.  
  15. extern LRESULT ImGui_ImplDX9_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
  16.  
  17. namespace Hooks
  18. {
  19. std::unique_ptr<VFTableHook> g_pD3DDevice9Hook = nullptr;
  20. std::unique_ptr<VFTableHook> g_pClientModeHook = nullptr;
  21. std::unique_ptr<VFTableHook> g_pMatSurfaceHook = nullptr;
  22. std::unique_ptr<VFTableHook> g_pVPanelHook = nullptr;
  23. std::unique_ptr<VFTableHook> g_pModelRender = nullptr;
  24.  
  25.  
  26. std::unique_ptr<DrawManager> g_pRenderer = nullptr;
  27.  
  28. DrawModelExecute_t g_fnOriginalDrawModelExecute = nullptr;
  29. OverrideView_t g_fnOriginalOverrideView = nullptr;
  30. PaintTraverse_t g_fnOriginalPaintTraverse = nullptr;
  31. EndScene_t g_fnOriginalEndScene = nullptr;
  32. Reset_t g_fnOriginalReset = nullptr;
  33. CreateMove_t g_fnOriginalCreateMove = nullptr;
  34. PlaySound_t g_fnOriginalPlaySound = nullptr;
  35. DWORD GlowObjectBase = NULL;
  36. WNDPROC g_pOldWindowProc = nullptr;
  37. HWND g_hWindow = nullptr;
  38. DWORD OffsetSendPacket;
  39. DWORD GlowManager;
  40. bool vecPressedKeys[256] = {};
  41. bool g_bWasInitialized = false;
  42. int8_t chat;
  43. bool GSendPacket = true;
  44. using IsReadyFn = void(__cdecl*)();
  45. IsReadyFn IsReady;
  46. void Initialize()
  47. {
  48. NetvarManager::Instance()->CreateDatabase();
  49. NetvarManager::Instance()->Dump("netvar_dump.txt");
  50. GlowManager = *(DWORD*)(Utils::FindSignature(XorStr("client.dll"), XorStr("F3 ?? ?? ?? ?? ?? ?? ?? 83 C8 01 C7 05")) + 0x4);
  51. auto dwDevice = **(uint32_t**)(Utils::FindSignature(XorStr("shaderapidx9.dll"), XorStr("A1 ? ? ? ? 50 8B 08 FF 51 0C")) + 1);
  52. g_pD3DDevice9Hook = make_unique<VFTableHook>((PPDWORD)dwDevice, true);
  53. g_pClientModeHook = make_unique<VFTableHook>((PPDWORD)SourceEngine::Interfaces::ClientMode(), true);
  54. g_pMatSurfaceHook = make_unique<VFTableHook>((PPDWORD)SourceEngine::Interfaces::MatSurface(), true);
  55. g_pVPanelHook = make_unique<VFTableHook>((PPDWORD)SourceEngine::Interfaces::VGUIPanel(), true);
  56. while (!(g_hWindow = FindWindowA(XorStr("Valve001"), NULL))) Sleep(200);
  57. if (g_hWindow)
  58. g_pOldWindowProc = (WNDPROC)SetWindowLongPtr(g_hWindow, GWLP_WNDPROC, (LONG_PTR)Hooked_WndProc);
  59. g_pClientModeHook->Hook(35, (uintptr_t)hkGetViewModelFOV);
  60. g_fnOriginalReset = g_pD3DDevice9Hook->Hook(16, Hooked_Reset);
  61. g_fnOriginalEndScene = g_pD3DDevice9Hook->Hook(42, Hooked_EndScene);
  62. g_fnOriginalPlaySound = g_pMatSurfaceHook->Hook(82, (PlaySound_t)Hooked_PlaySound);
  63. g_fnOriginalCreateMove = g_pClientModeHook->Hook(24, (CreateMove_t)Hooked_CreateMove);
  64. g_fnOriginalOverrideView = g_pClientModeHook->Hook(18, (OverrideView_t)Hooked_OverrideView);
  65. g_fnOriginalPaintTraverse = g_pVPanelHook->Hook(41, (PaintTraverse_t)Hooked_PaintTraverse);
  66. //g_fnOriginalDrawModelExecute = g_pModelRender->Hook(21, (DrawModelExecute_t)Hooked_DrawModelExecute);
  67.  
  68. }
  69. void Restore()
  70. {
  71. SetWindowLongPtr(g_hWindow, GWLP_WNDPROC, (LONG_PTR)g_pOldWindowProc);
  72. g_pRenderer->InvalidateObjects();
  73. g_pD3DDevice9Hook->RestoreTable();
  74. g_pClientModeHook->RestoreTable();
  75. g_pMatSurfaceHook->RestoreTable();
  76. g_pVPanelHook->RestoreTable();
  77. g_pModelRender->RestoreTable();
  78. }
  79. void USendPacket(byte toggle)
  80. {
  81. *(byte*)(OffsetSendPacket) = toggle;
  82. }
  83. void GUI_Init(IDirect3DDevice9* pDevice)
  84. {
  85. ImGui_ImplDX9_Init(g_hWindow, pDevice);
  86. g_pRenderer = make_unique<DrawManager>(pDevice);
  87. g_pRenderer->CreateObjects();
  88. g_bWasInitialized = true;
  89. }
  90. void __stdcall Hooked_DrawModelExecute(void* context, void* state, const model_t& info, matrix3x4_t* pCustomBoneToWorld)
  91. {
  92.  
  93. }
  94. LRESULT __stdcall Hooked_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  95. {
  96. switch (uMsg) {
  97. case WM_LBUTTONDOWN:
  98. vecPressedKeys[VK_LBUTTON] = true;
  99. break;
  100. case WM_LBUTTONUP:
  101. vecPressedKeys[VK_LBUTTON] = false;
  102. break;
  103. case WM_RBUTTONDOWN:
  104. vecPressedKeys[VK_RBUTTON] = true;
  105. break;
  106. case WM_RBUTTONUP:
  107. vecPressedKeys[VK_RBUTTON] = false;
  108. break;
  109. case WM_KEYDOWN:
  110. vecPressedKeys[wParam] = true;
  111. break;
  112. case WM_KEYUP:
  113. vecPressedKeys[wParam] = false;
  114. break;
  115. default: break;
  116. }
  117.  
  118. {
  119. static bool isDown = false;
  120. static bool isClicked = false;
  121. if (vecPressedKeys[VK_INSERT]) {
  122. isClicked = false;
  123. isDown = true;
  124. }
  125. else if (!vecPressedKeys[VK_INSERT] && isDown) {
  126. isClicked = true;
  127. isDown = false;
  128. }
  129. else {
  130. isClicked = false;
  131. isDown = false;
  132. }
  133.  
  134. if (isClicked) {
  135. Options::g_bMainWindowOpen = !Options::g_bMainWindowOpen;
  136. static auto cl_mouseenable = SourceEngine::Interfaces::CVar()->FindVar(XorStr("cl_mouseenable"));
  137. cl_mouseenable->SetValue(!Options::g_bMainWindowOpen);
  138. }
  139. }
  140. if (g_bWasInitialized && Options::g_bMainWindowOpen && ImGui_ImplDX9_WndProcHandler(hWnd, uMsg, wParam, lParam))
  141. return true;
  142. return CallWindowProc(g_pOldWindowProc, hWnd, uMsg, wParam, lParam);
  143. }
  144. float __stdcall hkGetViewModelFOV() {
  145. return Options::g_bViewModelFOV;
  146. }
  147. void __stdcall Hooked_PaintTraverse(PVOID pPanels, int edx, unsigned int vguiPanel, bool forceRepaint, bool allowForce)
  148. {
  149. auto pEngine = Interfaces::Engine();
  150. auto pLocal = C_CSPlayer::GetLocalPlayer();
  151.  
  152. if (Options::g_bGlowESP)
  153. {
  154. CGlowObjectManager* GlowObjectManager = (CGlowObjectManager*)GlowManager;
  155. for (int i = 0; i < GlowObjectManager->size; ++i)
  156. {
  157. CGlowObjectManager::GlowObjectDefinition_t* glowEntity = &GlowObjectManager->m_GlowObjectDefinitions[i];
  158. IClientEntity* Entity = glowEntity->getEntity();
  159. if (Entity->GetClientClass()->m_ClassID = CCSPlayer)
  160. {
  161. glowEntity->set(Color(0, 0, 255, 255));
  162. }
  163. }
  164. }
  165. g_fnOriginalPaintTraverse(pPanels, edx, vguiPanel, forceRepaint, allowForce);
  166. }
  167. HRESULT __stdcall Hooked_EndScene(IDirect3DDevice9* pDevice)
  168. {
  169. static SourceEngine::ConVar* convar;
  170.  
  171. if (!g_bWasInitialized) {
  172. GUI_Init(pDevice);
  173. convar = SourceEngine::Interfaces::CVar()->FindVar("cl_mouseenable");
  174. }
  175. else {
  176. ImGui::GetIO().MouseDrawCursor = Options::g_bMainWindowOpen;
  177. ImGui_ImplDX9_NewFrame();
  178. if (Options::g_bMainWindowOpen) {
  179. ImGui::Begin(XorStr("\t\t\t\t"), &Options::g_bMainWindowOpen, ImVec2(300, 250), 0.75f);
  180. {
  181. /*if (ImGui::CollapsingHeader(XorStr("Aimbot")))
  182. {
  183. }*/
  184. if (ImGui::CollapsingHeader(XorStr("Visuals"))) {
  185. // ImGui::Separator();
  186. ImGui::Checkbox(XorStr("Glow ESP"), &Options::g_bGlowESP);
  187. ImGui::Checkbox(XorStr("ESP Enabled"), &Options::g_bESPEnabled);
  188. ImGui::Checkbox(XorStr("Show Boxes"), &Options::g_bESPShowBoxes);
  189. ImGui::Checkbox(XorStr("Show Names"), &Options::g_bESPShowNames);
  190. ImGui::Separator();
  191. ImGui::ColorEdit3(XorStr("Ally Color"), Options::g_bESPAllyColor);
  192. ImGui::ColorEdit3(XorStr("Enemy Color"), Options::g_bESPEnemyColor);
  193. }
  194. if (ImGui::CollapsingHeader(XorStr("Misc"))) {
  195. ImGui::Checkbox(XorStr("Chat Spam"), &Options::g_bChatSpam);
  196. ImGui::Checkbox(XorStr("No Recoil"), &Options::g_bRCSEnabled);
  197. ImGui::Checkbox(XorStr("Bunny Hop"), &Options::g_bBHopEnabled);
  198. ImGui::Checkbox(XorStr("Auto-Accept"), &Options::g_bAutoAccept);
  199. ImGui::Separator();
  200. ImGui::Checkbox(XorStr("FOV Changer"), &Options::g_bFOVChanger);
  201. ImGui::SliderFloat(XorStr("FOV"), &Options::g_bFOV, 1.0f, 180.0f, "%");
  202. ImGui::SliderFloat(XorStr("ViewModel FOV"), &Options::g_bViewModelFOV, 1.0f, 360.0f, "%");
  203. }
  204. }
  205. ImGui::End();
  206. }
  207.  
  208. g_pRenderer->BeginRendering();
  209. if (SourceEngine::Interfaces::Engine()->IsInGame() && Options::g_bESPEnabled) {
  210. for (int i = 1; i < SourceEngine::Interfaces::Engine()->GetMaxClients(); i++) {
  211. if (i == SourceEngine::Interfaces::Engine()->GetLocalPlayer())
  212. continue;
  213. auto pEntity = static_cast<C_CSPlayer*>(SourceEngine::Interfaces::EntityList()->GetClientEntity(i));
  214. if (!pEntity) continue;
  215. if (!pEntity->IsAlive() || pEntity->IsDormant()) continue;
  216. if (pEntity->GetClientClass()->m_ClassID == SourceEngine::EClassIds::CCSPlayer) {
  217. EntityESP esp(pEntity);
  218. if (Options::g_bESPShowBoxes)
  219. esp.RenderESP(*g_pRenderer);
  220. if (Options::g_bESPShowNames)
  221. esp.RenderName(*g_pRenderer);
  222. }
  223. }
  224. }
  225. ImGui::Render();
  226. g_pRenderer->EndRendering();
  227. }
  228. return g_fnOriginalEndScene(pDevice);
  229. }
  230.  
  231. HRESULT __stdcall Hooked_Reset(IDirect3DDevice9* pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters)
  232. {
  233. if (!g_bWasInitialized) return g_fnOriginalReset(pDevice, pPresentationParameters);
  234. ImGui_ImplDX9_InvalidateDeviceObjects();
  235. g_pRenderer->InvalidateObjects();
  236. auto hr = g_fnOriginalReset(pDevice, pPresentationParameters);
  237. g_pRenderer->CreateObjects();
  238. ImGui_ImplDX9_CreateDeviceObjects();
  239. return hr;
  240. }
  241. using namespace SourceEngine;
  242. double DEG2RAD(double degrees) {
  243. return degrees * 4.0 * atan(1.0) / 180.0;
  244. }
  245. bool __stdcall Hooked_CreateMove(float sample_input_frametime, SourceEngine::CUserCmd* pCmd)
  246. {
  247. if (pCmd && pCmd->command_number) {
  248. bool bRet = g_fnOriginalCreateMove(SourceEngine::Interfaces::ClientMode(), sample_input_frametime, pCmd);
  249. auto pLocal = C_CSPlayer::GetLocalPlayer();
  250. auto pEngine = Interfaces::Engine();
  251. DWORD* framePointer;
  252. __asm mov framePointer, ebp;
  253. *(bool*)(*framePointer - 0x1C) = GSendPacket;
  254. if (Options::g_bBHopEnabled) {
  255. if ((pCmd->buttons & IN_JUMP) && !(pLocal->GetFlags() & (int)SourceEngine::EntityFlags::FL_ONGROUND))
  256. pCmd->buttons &= ~IN_JUMP;
  257. }
  258. if (Options::g_bRCSEnabled) {
  259. auto punchAngles = *pLocal->AimPunch() * 2.0f;
  260. if (punchAngles.x != 0.0f || punchAngles.y != 0) {
  261. pCmd->viewangles -= punchAngles;
  262. if (!Utils::Clamp(pCmd->viewangles)) {
  263. abort();
  264. }
  265. return false;
  266. }
  267. }
  268. }
  269. return false;
  270. }
  271.  
  272. void __stdcall Hooked_OverrideView(CViewSetup* vsView)
  273. {
  274. if (Interfaces::Engine()->IsInGame() && Options::g_bFOVChanger) {
  275. vsView->fov = Options::g_bFOV;
  276. hkGetViewModelFOV();
  277. }
  278. g_fnOriginalOverrideView(vsView);
  279. }
  280. void __stdcall Hooked_PlaySound(const char* szFileName)
  281. {
  282. g_fnOriginalPlaySound(SourceEngine::Interfaces::MatSurface(), szFileName);
  283. if (!Options::g_bAutoAccept || SourceEngine::Interfaces::Engine()->IsInGame()) return;
  284. if (!strcmp(szFileName, "weapons/hegrenade/beep.wav")) {
  285. IsReady = (IsReadyFn)((DWORD)Utils::FindSignature(XorStr("client.dll"), XorStr("55 8B EC 83 E4 F8 83 EC 08 56 8B 35 ?? ?? ?? ?? 57 8B 8E")));
  286. IsReady();
  287. FLASHWINFO fi;
  288. fi.cbSize = sizeof(FLASHWINFO);
  289. fi.hwnd = g_hWindow;
  290. fi.dwFlags = FLASHW_ALL | FLASHW_TIMERNOFG;
  291. fi.uCount = 0;
  292. fi.dwTimeout = 0;
  293. FlashWindowEx(&fi);
  294. }
  295. }
  296. }
Advertisement
Add Comment
Please, Sign In to add comment