Advertisement
Guest User

source

a guest
Jul 26th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.40 KB | None | 0 0
  1. #include <iostream>
  2. #include <Windows.h>
  3. #include <process.h>
  4. #include <conio.h>
  5. #include <TlHelp32.h>
  6. #include <fstream>
  7. #include <list>
  8. #include <string>
  9. #include <algorithm>
  10. #include <vector>
  11.  
  12.  
  13. using namespace std;
  14.  
  15. int i=0; DWORD ELIST=0; DWORD TADDRESS2=0; int OTYPE=0; DWORD ODESC=0; unsigned long OGID=0; float Olife=0; float Omaxlife=0; int Olife2=0; int OFLAG=0; float Oy=0; float Ox=0; float Oz=0; float Or=0;
  16. HANDLE WoWClient;HWND hWnd;DWORD WoWId = NULL;DWORD TADDRESS;DWORD BaseAddress=0;DWORD myOffset2; float Olifep=0; float Myx=0; float Myy =0; float MyZ=0; float Odist;
  17. int dangerclose=0; int noaccess=0; float x1=0; float x2=0; float x3=0;
  18. list<float> myList(0,0);
  19. list<float> myList2(0,0);
  20. list<float> myList3(0,0);
  21. list<float>::iterator it;
  22.  
  23. DWORD GetModuleBase(LPSTR lpModuleName, DWORD dwProcessId)
  24. {
  25. MODULEENTRY32 lpModuleEntry = {0};
  26. HANDLE hSnapShot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwProcessId );
  27.  
  28. if(!hSnapShot)
  29. return NULL;
  30. lpModuleEntry.dwSize = sizeof(lpModuleEntry);
  31. BOOL bModule = Module32First( hSnapShot, &lpModuleEntry );
  32. while(bModule)
  33. {
  34. if(!strcmp( lpModuleEntry.szModule, lpModuleName ) )
  35. {
  36. CloseHandle( hSnapShot );
  37. return (DWORD)lpModuleEntry.modBaseAddr;
  38. }
  39. bModule = Module32Next( hSnapShot, &lpModuleEntry );
  40. }
  41. CloseHandle( hSnapShot );
  42. return NULL;
  43. }
  44. float CTM(float x, float y, float z, int action) {
  45. list<float>:: iterator it1=myList.begin();
  46. list<float>:: iterator it2=myList2.begin();
  47. list<float>:: iterator it3=myList3.begin();
  48.  
  49. list<float>::iterator it;
  50. if(x!=0 && y!=0 && z!=0) {
  51. myList.insert(it1, x);
  52. myList2.insert(it2, y);
  53. myList3.insert(it3, z);
  54. }
  55. return 0;
  56. }
  57. float CTM2(float x, float y, float z, int action) {
  58. BaseAddress = GetModuleBase("Wow.exe", WoWId);
  59. DWORD TYPERAW=0xDDE8AC; //7.0.3.22293 offset version
  60. DWORD XRAW1=TYPERAW+ 0x68;
  61. DWORD YRAW1 = XRAW1+0x4;
  62. DWORD ZRAW1 = YRAW1+0x4;
  63.  
  64.  
  65. DWORD TADDRESS4=(DWORD)BaseAddress + TYPERAW;//CTM TYPE 4 / 13
  66. DWORD TADDRESSX=(DWORD)BaseAddress + XRAW1; // CTM 4/13 + 68
  67. DWORD TADDRESSY=(DWORD)BaseAddress + YRAW1; //X + 4
  68. DWORD TADDRESSZ=(DWORD)BaseAddress + ZRAW1; //Y+4
  69.  
  70.  
  71. int x5=4; //4 CTM TYPE
  72. WriteProcessMemory(WoWClient, (LPVOID)TADDRESSX, &x, sizeof(x), NULL); // X
  73. WriteProcessMemory(WoWClient, (LPVOID)TADDRESSY, &y, sizeof(y), NULL); // Y
  74. WriteProcessMemory(WoWClient, (LPVOID)TADDRESSZ, &z, sizeof(z), NULL); // Z
  75. WriteProcessMemory(WoWClient, (LPVOID)TADDRESS4, &action, 1, NULL); //CTM MOVE
  76. return 0;
  77. }
  78.  
  79. void HotkeyThread(void*) {
  80. DWORD BaseAddress=GetModuleBase("Wow.exe", WoWId);
  81. while(TRUE) {
  82. if((char)GetAsyncKeyState(VK_F5)) {
  83. ofstream makefile;
  84. makefile.open("waypoints.txt", ios::out | ios::app);
  85. makefile << "CTM(" << Myx << ", " << Myy << ", " << MyZ << ", 4);\r\n";
  86. makefile.close();
  87. cout << "Point Saved\r\n";
  88. }
  89. if((char)GetAsyncKeyState(VK_F6) && noaccess==0) {
  90. noaccess=1;
  91.  
  92.  
  93. noaccess=0;
  94. cout << "Starting Navigation \r\n";
  95. }
  96.  
  97.  
  98.  
  99.  
  100. }
  101. }
  102.  
  103.  
  104.  
  105. void Movementthread(void*) {
  106. //DWORD BaseAddress=GetModuleBase("Wow.exe", WoWId);
  107. while(TRUE) {
  108.  
  109. if(noaccess==0) {
  110. noaccess=1;
  111.  
  112. if(myList.size()>0) {
  113.  
  114. list<float>:: iterator it1=myList.begin();
  115. list<float>:: iterator it2=myList2.begin();
  116. list<float>:: iterator it3=myList3.begin();
  117.  
  118.  
  119. float Odist2=0;
  120. x1=*it1; x2=*it2; x3=*it3;
  121. if(x1!=0 && x2!=0 && x3!=0) {CTM2(x1, x2, x3, 4); }
  122. Odist2 = sqrt(pow((Myx - x1), 2) + pow((Myy - x2), 2) + pow((MyZ - x3), 2));
  123.  
  124. if(Odist2 < 5 ) {
  125. if(myList.size()> 0) {myList.erase(it1); }
  126. if(myList2.size()> 0) {myList2.erase(it2);}
  127. if(myList3.size()> 0) {myList3.erase(it3); }
  128. }
  129.  
  130.  
  131.  
  132. }
  133. }
  134. x1=0;
  135. x2=0;
  136. x3=0;
  137.  
  138. noaccess=0;
  139. Sleep(100);
  140. }
  141. }
  142.  
  143.  
  144.  
  145.  
  146. int main() {
  147.  
  148. hWnd = FindWindow(NULL, "World Of Warcraft");
  149. GetWindowThreadProcessId(hWnd, &WoWId);
  150. if (WoWId != NULL) {WoWClient = OpenProcess(PROCESS_ALL_ACCESS, FALSE, WoWId);}
  151. _beginthread(HotkeyThread, 0, NULL);
  152. _beginthread(Movementthread, 0, NULL);
  153. while (FindWindow(NULL, "World Of Warcraft") != NULL) {
  154.  
  155. BaseAddress = GetModuleBase("Wow.exe", WoWId);
  156.  
  157.  
  158. DWORD localplayeroffset = (DWORD)BaseAddress + 0xDDF32C;
  159. ReadProcessMemory(WoWClient, (LPVOID)localplayeroffset, &myOffset2, 4, NULL);
  160.  
  161. ELIST = (DWORD)BaseAddress + 0xD48220;
  162. ReadProcessMemory(WoWClient, (LPVOID)ELIST, &TADDRESS, 4, NULL);
  163. ELIST = TADDRESS + 0xD8; //move from entity list start point to first object
  164. ReadProcessMemory(WoWClient, (LPVOID)ELIST, &TADDRESS, 4, NULL);
  165. ELIST = TADDRESS;
  166. dangerclose=0;
  167. while(i < 60000) {
  168.  
  169. i=i+1;
  170.  
  171. ELIST = TADDRESS + 0x44;
  172. ReadProcessMemory(WoWClient, (LPVOID)ELIST, &TADDRESS, 4, NULL);
  173. TADDRESS2 = TADDRESS + 0x10;
  174. ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &OTYPE, 4, NULL);
  175. TADDRESS2 = TADDRESS + 0x08;
  176. ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &ODESC, 4, NULL);
  177. TADDRESS2 = TADDRESS + 0x30;
  178. ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &OGID, 16, NULL);
  179.  
  180.  
  181.  
  182. if(OTYPE==4) {
  183. TADDRESS2 = ODESC + 0xF0; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Olife, 4, NULL);
  184. TADDRESS2 = ODESC + 0xF0; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Olife2, 4, NULL);
  185. TADDRESS2 = ODESC + 0x110; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Omaxlife, 4, NULL);
  186. TADDRESS2 = ODESC + 0x190; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &OFLAG, 4, NULL);
  187. TADDRESS2 = TADDRESS + 0xAF8; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Oy, 4, NULL);
  188. TADDRESS2 = TADDRESS2 + 0x04; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Oz, 4, NULL);
  189. TADDRESS2 = TADDRESS2 + 0x04; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Ox, 4, NULL);
  190. TADDRESS2 = TADDRESS2 + 0x08; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Or, 4, NULL);
  191. Olifep = Olife / Omaxlife; Olifep=Olifep*100;
  192. Odist = sqrt(pow((Myx - Ox), 2) + pow((Myy - Oy), 2) + pow((MyZ - Oz), 2));
  193. if(TADDRESS == myOffset2) {
  194. //while were viewing US only lets set a couple of location variables
  195. Myx = Ox; MyZ=Oz; Myy = Oy;
  196. //cout <<" MEEEEE: "<< Odist << "D LIFE: " << Olife2 << " " << Olifep << "%\r\n";
  197. cout <<" MEEEEE: "<< Myx << "X " << Myy << "Y " << MyZ << "Z\r\n";
  198.  
  199. }
  200.  
  201. //cout << "NOT ME : " << Odist << "D LIFE: " << Olife2 << " " << Olifep << "%\r\n";
  202. if(Odist < 5) { dangerclose=1; }
  203. }
  204. }
  205. i=0;
  206. Sleep(1000);
  207. } //loop WILE Wow is open otherwise end
  208. return 0;
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement