Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <Windows.h>
- #include <process.h>
- #include <conio.h>
- #include <TlHelp32.h>
- #include <fstream>
- #include <list>
- #include <string>
- #include <algorithm>
- #include <vector>
- using namespace std;
- 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;
- 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;
- int dangerclose=0; int noaccess=0; float x1=0; float x2=0; float x3=0;
- list<float> myList(0,0);
- list<float> myList2(0,0);
- list<float> myList3(0,0);
- list<float>::iterator it;
- DWORD GetModuleBase(LPSTR lpModuleName, DWORD dwProcessId)
- {
- MODULEENTRY32 lpModuleEntry = {0};
- HANDLE hSnapShot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwProcessId );
- if(!hSnapShot)
- return NULL;
- lpModuleEntry.dwSize = sizeof(lpModuleEntry);
- BOOL bModule = Module32First( hSnapShot, &lpModuleEntry );
- while(bModule)
- {
- if(!strcmp( lpModuleEntry.szModule, lpModuleName ) )
- {
- CloseHandle( hSnapShot );
- return (DWORD)lpModuleEntry.modBaseAddr;
- }
- bModule = Module32Next( hSnapShot, &lpModuleEntry );
- }
- CloseHandle( hSnapShot );
- return NULL;
- }
- float CTM(float x, float y, float z, int action) {
- list<float>:: iterator it1=myList.begin();
- list<float>:: iterator it2=myList2.begin();
- list<float>:: iterator it3=myList3.begin();
- list<float>::iterator it;
- if(x!=0 && y!=0 && z!=0) {
- myList.insert(it1, x);
- myList2.insert(it2, y);
- myList3.insert(it3, z);
- }
- return 0;
- }
- float CTM2(float x, float y, float z, int action) {
- BaseAddress = GetModuleBase("Wow.exe", WoWId);
- DWORD TYPERAW=0xDDE8AC; //7.0.3.22293 offset version
- DWORD XRAW1=TYPERAW+ 0x68;
- DWORD YRAW1 = XRAW1+0x4;
- DWORD ZRAW1 = YRAW1+0x4;
- DWORD TADDRESS4=(DWORD)BaseAddress + TYPERAW;//CTM TYPE 4 / 13
- DWORD TADDRESSX=(DWORD)BaseAddress + XRAW1; // CTM 4/13 + 68
- DWORD TADDRESSY=(DWORD)BaseAddress + YRAW1; //X + 4
- DWORD TADDRESSZ=(DWORD)BaseAddress + ZRAW1; //Y+4
- int x5=4; //4 CTM TYPE
- WriteProcessMemory(WoWClient, (LPVOID)TADDRESSX, &x, sizeof(x), NULL); // X
- WriteProcessMemory(WoWClient, (LPVOID)TADDRESSY, &y, sizeof(y), NULL); // Y
- WriteProcessMemory(WoWClient, (LPVOID)TADDRESSZ, &z, sizeof(z), NULL); // Z
- WriteProcessMemory(WoWClient, (LPVOID)TADDRESS4, &action, 1, NULL); //CTM MOVE
- return 0;
- }
- void HotkeyThread(void*) {
- DWORD BaseAddress=GetModuleBase("Wow.exe", WoWId);
- while(TRUE) {
- if((char)GetAsyncKeyState(VK_F5)) {
- ofstream makefile;
- makefile.open("waypoints.txt", ios::out | ios::app);
- makefile << "CTM(" << Myx << ", " << Myy << ", " << MyZ << ", 4);\r\n";
- makefile.close();
- cout << "Point Saved\r\n";
- }
- if((char)GetAsyncKeyState(VK_F6) && noaccess==0) {
- noaccess=1;
- noaccess=0;
- cout << "Starting Navigation \r\n";
- }
- }
- }
- void Movementthread(void*) {
- //DWORD BaseAddress=GetModuleBase("Wow.exe", WoWId);
- while(TRUE) {
- if(noaccess==0) {
- noaccess=1;
- if(myList.size()>0) {
- list<float>:: iterator it1=myList.begin();
- list<float>:: iterator it2=myList2.begin();
- list<float>:: iterator it3=myList3.begin();
- float Odist2=0;
- x1=*it1; x2=*it2; x3=*it3;
- if(x1!=0 && x2!=0 && x3!=0) {CTM2(x1, x2, x3, 4); }
- Odist2 = sqrt(pow((Myx - x1), 2) + pow((Myy - x2), 2) + pow((MyZ - x3), 2));
- if(Odist2 < 5 ) {
- if(myList.size()> 0) {myList.erase(it1); }
- if(myList2.size()> 0) {myList2.erase(it2);}
- if(myList3.size()> 0) {myList3.erase(it3); }
- }
- }
- }
- x1=0;
- x2=0;
- x3=0;
- noaccess=0;
- Sleep(100);
- }
- }
- int main() {
- hWnd = FindWindow(NULL, "World Of Warcraft");
- GetWindowThreadProcessId(hWnd, &WoWId);
- if (WoWId != NULL) {WoWClient = OpenProcess(PROCESS_ALL_ACCESS, FALSE, WoWId);}
- _beginthread(HotkeyThread, 0, NULL);
- _beginthread(Movementthread, 0, NULL);
- while (FindWindow(NULL, "World Of Warcraft") != NULL) {
- BaseAddress = GetModuleBase("Wow.exe", WoWId);
- DWORD localplayeroffset = (DWORD)BaseAddress + 0xDDF32C;
- ReadProcessMemory(WoWClient, (LPVOID)localplayeroffset, &myOffset2, 4, NULL);
- ELIST = (DWORD)BaseAddress + 0xD48220;
- ReadProcessMemory(WoWClient, (LPVOID)ELIST, &TADDRESS, 4, NULL);
- ELIST = TADDRESS + 0xD8; //move from entity list start point to first object
- ReadProcessMemory(WoWClient, (LPVOID)ELIST, &TADDRESS, 4, NULL);
- ELIST = TADDRESS;
- dangerclose=0;
- while(i < 60000) {
- i=i+1;
- ELIST = TADDRESS + 0x44;
- ReadProcessMemory(WoWClient, (LPVOID)ELIST, &TADDRESS, 4, NULL);
- TADDRESS2 = TADDRESS + 0x10;
- ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &OTYPE, 4, NULL);
- TADDRESS2 = TADDRESS + 0x08;
- ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &ODESC, 4, NULL);
- TADDRESS2 = TADDRESS + 0x30;
- ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &OGID, 16, NULL);
- if(OTYPE==4) {
- TADDRESS2 = ODESC + 0xF0; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Olife, 4, NULL);
- TADDRESS2 = ODESC + 0xF0; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Olife2, 4, NULL);
- TADDRESS2 = ODESC + 0x110; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Omaxlife, 4, NULL);
- TADDRESS2 = ODESC + 0x190; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &OFLAG, 4, NULL);
- TADDRESS2 = TADDRESS + 0xAF8; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Oy, 4, NULL);
- TADDRESS2 = TADDRESS2 + 0x04; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Oz, 4, NULL);
- TADDRESS2 = TADDRESS2 + 0x04; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Ox, 4, NULL);
- TADDRESS2 = TADDRESS2 + 0x08; ReadProcessMemory(WoWClient, (LPVOID)TADDRESS2, &Or, 4, NULL);
- Olifep = Olife / Omaxlife; Olifep=Olifep*100;
- Odist = sqrt(pow((Myx - Ox), 2) + pow((Myy - Oy), 2) + pow((MyZ - Oz), 2));
- if(TADDRESS == myOffset2) {
- //while were viewing US only lets set a couple of location variables
- Myx = Ox; MyZ=Oz; Myy = Oy;
- //cout <<" MEEEEE: "<< Odist << "D LIFE: " << Olife2 << " " << Olifep << "%\r\n";
- cout <<" MEEEEE: "<< Myx << "X " << Myy << "Y " << MyZ << "Z\r\n";
- }
- //cout << "NOT ME : " << Odist << "D LIFE: " << Olife2 << " " << Olifep << "%\r\n";
- if(Odist < 5) { dangerclose=1; }
- }
- }
- i=0;
- Sleep(1000);
- } //loop WILE Wow is open otherwise end
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement