OldSchoolHack

Register / Login English

Metal Gear Solid V Multihack

icon Thread: [Release] Metal Gear Solid V Multihack

Join Date: Aug 2007

Posts: 1957

Kategorie: Other FPS Games
Entwickler: can1357

Beschreibung:
F1 Infinite Ammo
F2 Infinite Suppressor
F3 Infinite Fulton Extraction
F4 Instant Health Refill
F5 Perfect Aim (No spread, recoil, breath)
F6
Triggerbot( Doesn't work from super long range. Sniper etc. Quite usefull for oneshot hs rifles when sneaking though. )
F7 +10.000 GMP
F8 +100.000 GMP
F9 +10.000 Basic Resources
F10 +100.000 Basic Resources
F11 Double all resources


Includes.h
TEXT Code:
  1.  
  2. #pragma once
  3. #define _CRT_SECURE_NO_WARNINGS
  4. #include <Windows.h>
  5. #include <iostream>
  6. #include <string>
  7.  
  8. #include <d3dx9.h>
  9. #include <d3d9.h>
  10. #pragma comment(lib, "d3d9.lib")
  11. #pragma comment(lib, "d3dx9.lib")
  12.  
  13. using namespace std;
  14.  
  15. #define QWORD UINT64
  16.  
  17. struct ResourceManager{
  18. int ResourceArray[0xFFFF];
  19.  
  20. int GetResource(int iIndex){
  21. return ResourceArray[iIndex] >> 1;
  22. }
  23. int SetResource(int iIndex, int iAmount){
  24. return ResourceArray[iIndex] = iAmount << 1;
  25. }
  26. int MultiplyResource(int iIndex, int iMultiplier){
  27. return ResourceArray[iIndex] *= iMultiplier;
  28. }
  29. int AddResource(int iIndex, int iAmount){
  30. return ResourceArray[iIndex] += iAmount << 1;
  31. }
  32. };
  33.  
  34.  
  35. enum TargetType{
  36. None = 0,
  37. Enemy = 1,
  38. Ally = 2
  39. };
  40.  
  41.  
  42. struct CWeapon{
  43. WORD Ammo;
  44. WORD Unknown;
  45. BYTE Suppressor; // 0xF - 0x0
  46. void SetSuppressor(float SuppressorVal){
  47. Suppressor = max((BYTE)((float)0xF * SuppressorVal),0);
  48. }
  49. float GetSuppressor(){
  50. return (float)Suppressor / (float)0xF;
  51. }
  52. void SetAmmo(WORD w){
  53. Ammo = max(w,0);
  54. }
  55. WORD GetAmmo(){
  56. return Ammo;
  57. }
  58. };
  59.  
  60. class CEquipmentList{
  61. public:
  62. CWeapon * GetFultonDevice(){
  63. return (CWeapon*)((QWORD)this + 0x48A);
  64. }
  65. CWeapon * GetWeapon(int WepId){
  66. return (CWeapon*)((QWORD)this + 0x3D8 + 0xC * WepId);
  67. }
  68. };
  69.  
  70.  
  71. class CGeneralInformation{
  72. public:
  73. D3DXVECTOR3 * GetFootPosition(){
  74. return (D3DXVECTOR3*)((char*)this + 0xE0);
  75. }
  76. D3DXVECTOR3 * GetCameraPosition1(){ // ?
  77. return (D3DXVECTOR3*)((char*)this + 0x170);
  78. }
  79. D3DXVECTOR3 * GetCameraPosition2(){ // ?
  80. return (D3DXVECTOR3*)((char*)this + 0x1B0);
  81. }
  82. D3DXVECTOR2 * GetAngle1(){ // ?
  83. return (D3DXVECTOR2*)((char*)this + 0x168);
  84. }
  85. D3DXVECTOR2 * GetAngle2(){ // ?
  86. return (D3DXVECTOR2*)((char*)this + 0x160);
  87. }
  88. float * GetCurrentHealth(){
  89. return (float*)((char*)this + 0x3C0);
  90. }
  91. float * GetMaxHealth(){
  92. return (float*)((char*)this + 0x3C4);
  93. }
  94. };
  95.  
  96. class CCurrentWeaponInformation{
  97. public:
  98. // breath, recoil, spread, probably aim assist
  99. };
  100.  
  101. class CEntity{
  102. public:
  103. WORD GetTargetInCrosshair(){ // Works under all conditions
  104. return *(WORD*)(*(char**)((char*)this + 0xE0) + 0x5AC);
  105. }
  106. bool HasTargetInCrosshair(){
  107. return GetTargetInCrosshair() != 0xFFFF;
  108. }
  109. CEquipmentList * GetEquipmentList(){
  110. return *(CEquipmentList**)((char*)this + 0xE8);
  111. }
  112. CGeneralInformation * GetGeneralInformation(){
  113. return *(CGeneralInformation**)((char*)this + 0x2A0);
  114. }
  115. CCurrentWeaponInformation * GetCurrentWeaponInformation(){
  116. return *(CCurrentWeaponInformation**)((char*)this + 0x110);
  117. }
  118. bool IsValid(){
  119. return this != nullptr &&
  120. *(char**)((char*)this + 0xE0) != nullptr &&
  121. *(char**)((char*)this + 0xE8) != nullptr &&
  122. *(char**)((char*)this + 0x2A0) != nullptr&&
  123. *(char**)((char*)this + 0x110) != nullptr;
  124. }
  125. };
  126.  
  127. class CLocalPlayer{
  128. public:
  129. CEntity * GetEntity(){
  130. return *(CEntity**)((char*)this + 0x48);
  131. }
  132. bool IsValid(){
  133. return this != nullptr && GetEntity()->IsValid();
  134. }
  135. };
  136.  
  137.  
  138.  
  139. class CGameModule{
  140. private:
  141. QWORD ModuleHandle;
  142. public:
  143. void * m_pSuppressor = nullptr;
  144. void * m_pAmmo = nullptr;
  145. void * m_pBreathRecoil = nullptr;
  146. void * m_pSpread = nullptr;
  147. DWORD * m_pGMP = nullptr;
  148. ResourceManager * m_pResourceMgr;
  149. char * m_pFultonTemp1;
  150. char * m_pFultonTemp2;
  151.  
  152. TargetType (__fastcall*CompareTeams) (void * LocalPlayer, DWORD EntityID);
  153.  
  154. ResourceManager * GetResouceManager(){
  155. return m_pResourceMgr;
  156. }
  157.  
  158. void SetFultonExtractionCount(char chFultonCount){
  159. GetLocalPlayer()->GetEntity()->GetEquipmentList()->GetFultonDevice()->SetAmmo(chFultonCount);
  160. *m_pFultonTemp1 = chFultonCount;
  161. *m_pFultonTemp2 = chFultonCount;
  162. }
  163.  
  164. char GetFultonExtractionCount(){
  165. return GetLocalPlayer()->GetEntity()->GetEquipmentList()->GetFultonDevice()->GetAmmo();
  166. }
  167.  
  168. DWORD GetGmp(){
  169. return *m_pGMP;
  170. }
  171. void SetGmp(DWORD iGMP){
  172. *m_pGMP = iGMP;
  173. }
  174. void AddGmp(DWORD iGMP){
  175. *m_pGMP += iGMP;
  176. }
  177. void MultiplyGmp(float iMultiplier){
  178. *m_pGMP *= iMultiplier;
  179. }
  180. DWORD * GetGmpPointer(){
  181. return m_pGMP;
  182. }
  183.  
  184. CLocalPlayer * GetLocalPlayer(){
  185. // dynamic
  186. // [ule+2963210]+308]+10
  187. QWORD pLocalPlayer = *(QWORD*)(ModuleHandle + 0x2963210);
  188. if (pLocalPlayer == 0) return nullptr;
  189. pLocalPlayer = *(QWORD*)(pLocalPlayer + 0x308);
  190. if (pLocalPlayer == 0) return nullptr;
  191. pLocalPlayer = *(QWORD*)(pLocalPlayer + 0x10);
  192. return (CLocalPlayer*)pLocalPlayer;
  193. }
  194.  
  195. void PatchAntiDebugger(){
  196. DWORD Junk;
  197.  
  198. void * pNtdllProtect = (char*)ModuleHandle + 0x4F47554;
  199. void * pDbgUiRemoteBreakin = GetProcAddress(GetModuleHandle("ntdll.dll"), "DbgUiRemoteBreakin");
  200. void * pDbgUiIssueRemoteBreakin = GetProcAddress(GetModuleHandle("ntdll.dll"), "DbgUiIssueRemoteBreakin");
  201.  
  202. static char * arNtdllProtect = "\x90\x90";
  203. static char * arDbgUiRemoteBreakin = "\x48\x83\xEC\x28\x65\x48\x8B\x04\x25\x30\x00\x00\x00\x48\x8B\x48\x60\x80\x79\x02\x00\x75\x0A\xF6\x04\x25\xD4\x02\xFE\x7F\x02\x74\x19\x65\x48\x8B\x04\x25\x30\x00\x00\x00\xF6\x80\xEE\x17\x00\x00\x20\x75\x07\xE8\x88\x86\xF5\xFF\xEB\x00\x33\xC9\xE8\x2F\xEA\xF4\xFF\xCC";
  204. static char * arDbgUiIssueRemoteBreakin = "\x4C\x8B\xDC\x53\x48\x83\xEC\x70\x49\x8D\x43\xE8\x45\x33\xC9\x33\xD2\x49\x89\x43\xD8\x49\x8D\x43\x10\x45\x8D\x41\x02\x49\x89\x43\xD0\x49\x83\x63\xC8\x00\x48\x8D\x05\xC3\x11\x03\x00\x49\x89\x43\xC0\x49\x83\x63\xB8\x00\x49\xC7\x43\xB0\x00\x40\x00\x00\x49\x83\x63\xA8\x00\xE8\xD8\x75\xF5\xFF\x8B\xD8\x85\xC0\x78\x0D\x48\x8B\x8C\x24\x88\x00\x00\x00\xE8\x65\xA6\xF8\xFF\x8B\xC3\x48\x83\xC4\x70\x5B\xC3";
  205.  
  206. static int szNtdllProtect = 2;
  207. static int szDbgUiIssueRemoteBreakin = 99;
  208. static int szDbgUiRemoteBreakin = 66;
  209.  
  210. VirtualProtect(pNtdllProtect, szNtdllProtect, PAGE_EXECUTE_READWRITE, &Junk);
  211. VirtualProtect(pDbgUiRemoteBreakin, szDbgUiRemoteBreakin, PAGE_EXECUTE_READWRITE, &Junk);
  212. VirtualProtect(pDbgUiIssueRemoteBreakin, szDbgUiIssueRemoteBreakin, PAGE_EXECUTE_READWRITE, &Junk);
  213.  
  214. memcpy(pNtdllProtect, arNtdllProtect, szNtdllProtect);
  215. memcpy(pDbgUiRemoteBreakin, arDbgUiRemoteBreakin, szDbgUiRemoteBreakin);
  216. memcpy(pDbgUiIssueRemoteBreakin, arDbgUiIssueRemoteBreakin, szDbgUiIssueRemoteBreakin);
  217. }
  218.  
  219.  
  220. CGameModule(QWORD ModuleHandle){
  221. this->ModuleHandle = ModuleHandle;
  222.  
  223. CompareTeams = (TargetType(__fastcall*)(void *, DWORD))(ModuleHandle + 0x3D47F10);
  224. m_pResourceMgr = (ResourceManager*)(ModuleHandle + 0x2ad713c);
  225.  
  226. m_pSuppressor = (QWORD*)(ModuleHandle + 0x3C54B53);
  227. m_pAmmo = (QWORD*)(ModuleHandle + 0x3C546FF);
  228. m_pBreathRecoil = (QWORD*)(ModuleHandle + 0x3D4D861);
  229. m_pSpread = (QWORD*)(ModuleHandle + 0x3D4B945);
  230.  
  231. m_pGMP = (DWORD*)(ModuleHandle + 0x2AC9C98);
  232. m_pFultonTemp1 = (char*)(ModuleHandle + 0x2940CAA);
  233. m_pFultonTemp2 = (char*)(ModuleHandle + 0x2AC752A);
  234. }
  235. }
  236.  

main.cpp
TEXT Code:
  1.  
  2. #include "Includes.h"
  3.  
  4. unsigned long getMilliseconds(){
  5. SYSTEMTIME st;
  6. GetSystemTime(&st);
  7. return st.wMilliseconds + st.wSecond * 1000 + st.wMinute * 60 * 1000 + st.wHour * 60 * 60 * 1000;
  8. }
  9.  
  10.  
  11.  
  12. char arSuppresserPatch[] = "\x90\x90\x90\x90";
  13. char arAmmoPatch[] = "\x90\x90\x90\x90\x90";
  14.  
  15. char arBreathRecoilPatch[] = "\x90\x90\x90\x90\x90\x90\x90";
  16. char arSpreadPatch[] = "\x90\x90\x90\x90\x90";
  17.  
  18.  
  19. void ExchByte(void* pDst, void* pSrc, int iSize){
  20. DWORD Junk;
  21. VirtualProtect(pDst, iSize, PAGE_EXECUTE_READWRITE, &Junk);
  22. char * bcOldMem = new char[iSize];
  23. memcpy(bcOldMem, pDst, iSize);
  24. memcpy(pDst, pSrc, iSize);
  25. memcpy(pSrc, bcOldMem, iSize);
  26. delete[] bcOldMem;
  27. }
  28.  
  29. CGameModule * pEngine;
  30.  
  31. bool bTriggerbotOn = false;
  32. bool bMessageSaidOnce = false;
  33. bool bLockExtractionCount = false;
  34. bool bInfiniteHealth = false;
  35. char chFultonCount = 0x0;
  36.  
  37. void PrintHelp(){
  38. cout << "Hotkeys:" << endl;
  39. cout << "F1 => Toggle Infinite Ammo" << endl;
  40. cout << "F2 => Toggle Infinite Suppressor" << endl;
  41. cout << "F3 => Toggle Infinite Fulton Extraction" << endl;
  42. cout << "F4 => Toggle Instant Health Refill" << endl;
  43. cout << "F5 => Toggle Perfect Aim" << endl;
  44. cout << "F6 => Triggerbot" << endl;
  45. cout << "F7 => +10.000 GMP" << endl;
  46. cout << "F8 => +100.000 GMP" << endl;
  47. cout << "F9 => +10.000 Basic Resources" << endl;
  48. cout << "F10 => +100.000 Basic Resources" << endl;
  49. cout << "F11 => All resources x 2" << endl;
  50. }
  51.  
  52. DWORD WINAPI main(LPVOID lpParam)
  53. {
  54.  
  55. AllocConsole();
  56. freopen("conin$", "r", stdin);
  57. freopen("conout$", "w", stdout);
  58.  
  59. long KeyLock = 0;
  60.  
  61.  
  62. pEngine = new CGameModule((QWORD)GetModuleHandleA("mgsvtpp.exe"));
  63. pEngine->PatchAntiDebugger();
  64.  
  65.  
  66. PrintHelp();
  67.  
  68. while (true){
  69. if (!pEngine->GetLocalPlayer()->IsValid()){
  70. if (!bMessageSaidOnce && (bMessageSaidOnce = true))
  71. cout << "Waiting for the player to spawn." << endl;
  72. Sleep(100);
  73. continue;
  74. }
  75. bMessageSaidOnce = false;
  76.  
  77. if (bLockExtractionCount){
  78. if (chFultonCount > pEngine->GetFultonExtractionCount()){
  79. pEngine->SetFultonExtractionCount(chFultonCount);
  80. }
  81. chFultonCount = pEngine->GetFultonExtractionCount();
  82. }
  83. else chFultonCount = 0x0;
  84.  
  85. if (bTriggerbotOn && (GetAsyncKeyState(VK_RBUTTON) & 0x8000)){
  86. if (pEngine->GetLocalPlayer()->GetEntity()->HasTargetInCrosshair() && pEngine->CompareTeams(pEngine->GetLocalPlayer(), pEngine->GetLocalPlayer()->GetEntity()->GetTargetInCrosshair()) == TargetType::Enemy){
  87. Sleep(25);
  88. mouse_event(MOUSEEVENTF_LEFTDOWN, NULL, NULL, NULL, NULL);
  89. Sleep(5);
  90. mouse_event(MOUSEEVENTF_LEFTUP, NULL, NULL, NULL, NULL);
  91. }
  92. }
  93. if (bInfiniteHealth){
  94. *pEngine->GetLocalPlayer()->GetEntity()->GetGeneralInformation()->GetCurrentHealth() = *pEngine->GetLocalPlayer()->GetEntity()->GetGeneralInformation()->GetMaxHealth();
  95. }
  96.  
  97. if (KeyLock + 250 < getMilliseconds()){
  98. KeyLock = getMilliseconds();
  99. if (GetAsyncKeyState(VK_F1) & 0x8000){
  100. ExchByte(pEngine->m_pAmmo, arAmmoPatch, 5);
  101. cout << "Infinite Ammo: ";
  102. cout << ((arAmmoPatch[0] == '\x90') ? "OFF." : "ON.") << endl;
  103. }
  104. else if(GetAsyncKeyState(VK_F2) & 0x8000){
  105. ExchByte(pEngine->m_pSuppressor, arSuppresserPatch, 4);
  106. cout << "Infinite Suppressor: ";
  107. cout << ((arSuppresserPatch[0] == '\x90') ? "OFF." : "ON.") << endl;
  108. }
  109. else if (GetAsyncKeyState(VK_F3) & 0x8000){
  110. bLockExtractionCount = !bLockExtractionCount;
  111. cout << "Infinite Fulton Extraction: " << (bLockExtractionCount ? "ON" : "OFF") << endl;
  112. }
  113. else if (GetAsyncKeyState(VK_F4) & 0x8000){
  114. bInfiniteHealth = !bInfiniteHealth;
  115. cout << "Instant Health Refill: " << (bInfiniteHealth ? "ON" : "OFF") << endl;
  116. }
  117. else if (GetAsyncKeyState(VK_F5) & 0x8000){
  118. cout << "Perfect Aim: ";
  119.  
  120. ExchByte(pEngine->m_pBreathRecoil, arBreathRecoilPatch, 7);
  121. ExchByte(pEngine->m_pSpread, arSpreadPatch, 5);
  122. cout << ((arSpreadPatch[0] == '\x90') ? "OFF." : "ON.") << endl;
  123. }
  124. else if (GetAsyncKeyState(VK_F6) & 0x8000){
  125. bTriggerbotOn = !bTriggerbotOn;
  126. cout << "Triggerbot: " << (bTriggerbotOn ? "ON" : "OFF") << endl;
  127. }
  128. else if (GetAsyncKeyState(VK_F7) & 0x8000){
  129. cout << "Added 10.000 GMP" << endl;
  130. pEngine->AddGmp(10 * 1000);
  131. }
  132. else if (GetAsyncKeyState(VK_F8) & 0x8000){
  133. cout << "Added 100.000 GMP" << endl;
  134. pEngine->AddGmp(100 * 1000);
  135. }
  136. else if (GetAsyncKeyState(VK_F9) & 0x8000){
  137. cout << "Added 10.000 Basic Resources" << endl;
  138. for (int i = 0; i < 5; i++)
  139. pEngine->GetResouceManager()->AddResource(i, 10 * 1000);
  140. }
  141. else if (GetAsyncKeyState(VK_F10) & 0x8000){
  142. cout << "Added 100.000 Basic Resources" << endl;
  143. for (int i = 0; i < 5; i++)
  144. pEngine->GetResouceManager()->AddResource(i, 100 * 1000);
  145. }
  146. else if (GetAsyncKeyState(VK_F11) & 0x8000){
  147. cout << "All Resources multiplied by 2" << endl;
  148. for (int i = 0; i <= 50; i++)
  149. pEngine->GetResouceManager()->MultiplyResource(i, 2);
  150. }
  151. else{
  152. KeyLock = 0;
  153. }
  154.  
  155. }
  156.  
  157.  
  158. }
  159. return 0;
  160.  
  161. }
  162.  
  163.  
  164. int WINAPI DllMain(
  165. HINSTANCE hInstance2,
  166. DWORD fdwReason,
  167. LPVOID lpvReserved
  168. )
  169.  
  170. {
  171. DisableThreadLibraryCalls(hInstance2);
  172. if (fdwReason == DLL_PROCESS_ATTACH) {
  173. CreateThread(NULL, 0, &main, NULL, 0, NULL);
  174. }
  175.  
  176.  
  177. return 1;
  178. }
  179.  



Download:
Metal Gear Solid V Multihack V2