Solved WoW How to find xyz coordinates

Hexui Undetected CSGO Cheats Sinkicheat PUBG Cheat

tainu

Newbie
Full Member
Oct 29, 2014
38
378
0
hello there

i was working to find xyz cordinate of player in world of warcraft

first i go up and down to find y cordinate i keep doing this till i have left few address
which 2 of them were green i add both "1E3CBDC" and "1F77724"

then i close the game and run again and attach with Cheat Engine .
then both address changed automatically first changed to 00D2C8DC and second 00E67724

then i keep doing this close the game run again and attach with Cheat Engine . and address ware changing

first grees address of y cord Second green address y2 cord

1E3CBDC 1F77724
00D2C8DC 00E67724
01B2C8DC 01C67724
016EC8DC 01827724


so can someone tell me what is happening these 2 address ware green how they changed?
and how Cheat Engine find these address? i didn't even search these address.

and i cann't add photos it keep saying invold file.
 

mambda

headass
Escobar Tier VIP
Trump Tier Donator
Jun 25, 2014
2,298
37,938
269
Green addresses (Static addresses) are comprised of Module+Offset

So cheat engine knows Module+Offset = static address, whenever you restart WoW the module base changes, so the address of your position also changes. So they just recalculate it.
 

tainu

Newbie
Full Member
Oct 29, 2014
38
378
0
Green addresses (Static addresses) are comprised of Module+Offset

So cheat engine knows Module+Offset = static address, whenever you restart WoW the module base changes, so the address of your position also changes. So they just recalculate it.
the way cheat engine find those address can i find them by something codeing or sowething if yes then how if no then how i can find static address of y cord?
 

mambda

headass
Escobar Tier VIP
Trump Tier Donator
Jun 25, 2014
2,298
37,938
269
Can you do the same thing with code? Yes.

Internally use GetModuleHandle( moduleName ) + Offset
Externally use the Toolhelp32 functions or read the PEB of a process ( you can google these ) and then add the offset
 

tainu

Newbie
Full Member
Oct 29, 2014
38
378
0
here is code

C++:
#include <iostream>
#include <Windows.h>
#include <tchar.h>
#include <TlHelp32.h>

#pragma comment(lib, "user32.lib")

using namespace std;
HWND hwnd;



DWORD GetModuleBase(const wchar_t * ModuleName, DWORD ProcessId){
	// This structure contains lots of goodies about a module
	MODULEENTRY32 ModuleEntry = { 0 };
	// Grab a snapshot of all the modules in the specified process
	HANDLE SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessId);
 
	if (!SnapShot)
		return NULL;
 
	// You have to initialize the size, otherwise it will not work
	ModuleEntry.dwSize = sizeof(ModuleEntry);
 
	// Get the first module in the process
	if (!Module32First(SnapShot, &ModuleEntry))
	return NULL;
 
	do{
		// Check if the module name matches the one we're looking for
		if (!wcscmp(ModuleEntry.szModule, ModuleName)){
			// If it does, close the snapshot handle and return the base address
			CloseHandle(SnapShot);
			return (DWORD)ModuleEntry.modBaseAddr;
		}
	// Grab the next module in the snapshot
	} while (Module32Next(SnapShot, &ModuleEntry));
 
	// We couldn't find the specified module, so return NULL
	CloseHandle(SnapShot);
	return NULL;
}

int main()
{
	DWORD BaseAddr;
	cout << "Wellcome , teleport hack!" << endl;

	hwnd = FindWindow(0, (LPCSTR)"World of Warcraft");
	if(hwnd == 0){
		cout << "error, can8 find windows."<<endl;
	}else{
		cout << "founded World of Warcraft."<<endl;

		DWORD proc_id;
		GetWindowThreadProcessId(hwnd, &proc_id);

		cout << proc_id<< endl;

		HANDLE hproc =  OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);
			if(!hproc){
				cout << "error, can't opeen process " <<GetLastError()<< endl; 
			}else{
				cout << "Process opened" << endl;
		}

			BaseAddr = GetModuleBase("Wow.exe+E37724",proc_id);

			cout << "find adderass is " << BaseAddr << endl;

	}
	
	cin.get();


}

this is not building correct it is saying "the system can not find the file specified" when i go to file location and check in C:\Users\owner\Desktop\WOW_CT\Debug. the Debug was empty folder
so can someone tell how i can fix this error?

and it is also showing these error


1 error C2664: 'wcscmp' : cannot convert parameter 1 from 'char [256]' to 'const wchar_t *'
2 error C2664: 'GetModuleBase' : cannot convert parameter 1 from 'const char [15]' to 'const wchar_t *'
3 IntelliSense: argument of type "char *" is incompatible with parameter of type "const wchar_t *"
4 IntelliSense: argument of type "const char *" is incompatible with parameter of type "const wchar_t *"
 
Last edited by a moderator:

Nazalas

Coder
Dank Tier VIP
Dank Tier Donator
May 20, 2015
99
3,963
3
I am not sure if this is the correct way of doing this or not but you can change
C++:
if (!wcscmp(ModuleEntry.szModule, ModuleName))
to
C++:
if (!wcscmp((LPCWSTR)ModuleEntry.szModule, ModuleName))
and change
C++:
BaseAddr = GetModuleBase("Wow.exe+E37724", proc_id);
to
C++:
BaseAddr = GetModuleBase((LPCWSTR)"Wow.exe+E37724", proc_id);
That should at least get it to compile.
 

tainu

Newbie
Full Member
Oct 29, 2014
38
378
0
I am not sure if this is the correct way of doing this or not but you can change
C++:
if (!wcscmp(ModuleEntry.szModule, ModuleName))
to
C++:
if (!wcscmp((LPCWSTR)ModuleEntry.szModule, ModuleName))
and change
C++:
BaseAddr = GetModuleBase("Wow.exe+E37724", proc_id);
to
C++:
BaseAddr = GetModuleBase((LPCWSTR)"Wow.exe+E37724", proc_id);
That should at least get it to compile.
TY it work and i understand how to rap code in tag
 

mambda

headass
Escobar Tier VIP
Trump Tier Donator
Jun 25, 2014
2,298
37,938
269
Alternatively, you can change your project to unicode, and even more alternatively, youcan just put an "L" infront of anything you want to be unicode, i.e.

char representation = "test"
unicode representation = L"test"

anywho, your module base is failing because theres no such thing as WOw.exe+E37724, the module base is Wow.exe

then when you know where that is, you add E37724
 

tainu

Newbie
Full Member
Oct 29, 2014
38
378
0
Alternatively, you can change your project to unicode, and even more alternatively, youcan just put an "L" infront of anything you want to be unicode, i.e.

char representation = "test"
unicode representation = L"test"

anywho, your module base is failing because theres no such thing as WOw.exe+E37724, the module base is Wow.exe

then when you know where that is, you add E37724
u mean like this

C++:
#include <iostream>
#include <Windows.h>
#include <tchar.h>
#include <TlHelp32.h>

#pragma comment(lib, "user32.lib")

using namespace std;
HWND hwnd;
DWORD ProcessId;


DWORD GetModuleBase(const wchar_t * ModuleName, DWORD ProcessId){
	// This structure contains lots of goodies about a module
	MODULEENTRY32 ModuleEntry = { 0 };
	// Grab a snapshot of all the modules in the specified process
	HANDLE SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessId);
 
	if (!SnapShot){
			cout << "Error' snapshot not taken" << endl;
	}
		
 
	// You have to initialize the size, otherwise it will not work
	ModuleEntry.dwSize = sizeof(ModuleEntry);
 
	// Get the first module in the process
	if (!Module32First(SnapShot, &ModuleEntry)){
		cout<< "Error' first module have not readed" << endl;
	}
 
	do{
		// Check if the module name matches the one we're looking for
		if (!wcscmp((LPCWSTR)ModuleEntry.szModule, ModuleName)){
			// If it does, close the snapshot handle and return the base address
			CloseHandle(SnapShot);
			cout<< "_______+ address y have "<<(DWORD) ModuleEntry.modBaseAddr<< endl;
			//return (DWORD)ModuleEntry.modBaseAddr;
		}
	// Grab the next module in the snapshot
	} while (Module32Next(SnapShot, &ModuleEntry));
 
	// We couldn't find the specified module, so return NULL
	CloseHandle(SnapShot);
	return NULL;
}

int main()
{
	DWORD BaseAddr;
	cout << "Wellcome , teleport hack!" << endl;

	hwnd = FindWindow(0, (LPCSTR)"World of Warcraft");
	if(hwnd == 0){
		cout << "error, can8 find windows."<<endl;
	}else{
		cout << "founded World of Warcraft."<<endl;

		DWORD proc_id;
		GetWindowThreadProcessId(hwnd, &proc_id);

		cout << proc_id<< endl;

		HANDLE hproc =  OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);
			if(!hproc){
				cout << "error, can't opeen process " <<GetLastError()<< endl; 
			}else{
				cout << "Process opened" << endl;
		}
			DWORD newValue;
			BaseAddr = GetModuleBase((LPCWSTR)"Wow.exe", ProcessId);
			DWORD Base_Addr = BaseAddr+0xE37724;
			ReadProcessMemory(hwnd, (LPVOID)Base_Addr, &newValue, sizeof(newValue), NULL );
			cout << "y_cord is "<< newValue << endl;

			cout << "y_cord address is " << BaseAddr<< endl;

	}
	
	cin.get();


}
can u tell me what is wrong with code
if its fine then its not working fine
 

Broihon

edgy 12 y/o
Escobar Tier VIP
Fleep Tier Donator
Dec 22, 2013
1,746
40,528
316
Well, what is the actual problem? Does it print invalid values? Does it even print anything?
So, two tips: print the address in hexadecimal (std::hex). Then it's easier to compare to the address in CE.
And is the y coordinate stored as in integer? Not a float?
 

tainu

Newbie
Full Member
Oct 29, 2014
38
378
0
Вroihon;40919 said:
Well, what is the actual problem? Does it print invalid values? Does it even print anything?
So, two tips: print the address in hexadecimal (std::hex). Then it's easier to compare to the address in CE.
And is the y coordinate stored as in integer? Not a float?
here is output of code

Wellcome , teleport hack!
founded World of Warcraft.
3344
Process opened
y_cord is 3435973836
y_cord address is 0

wait i found one mistake
C++:
                        DWORD newValue;
			BaseAddr = GetModuleBase((LPCWSTR)"Wow.exe", ProcessId);
			DWORD Base_Addr = BaseAddr+0xE37724;
			ReadProcessMemory(hwnd, (LPVOID)Base_Addr, &newValue, sizeof(newValue), NULL );
			cout << "y_cord is "<< newValue << endl;

			cout << "y_cord address is " << Base_Addr<< endl;
now it show its value
y_cord address is 14907172
 
Last edited:

tainu

Newbie
Full Member
Oct 29, 2014
38
378
0
helle cheaters

here is code which is not working fine
and i know all these api
dwGetModuleBaseAddress
CreateToolhelp32Snapshot
MODULEENTRY32
Module32First
Module32Next
m full aware about them

i think proble is here (_tcsicmp(ModuleEntry32.szModule, szModuleName) == 0) maybe

and here is its output

Wellcome , teleport hack!
founded World of Warcraft.
3432
Process opened
y_cord is 3435973738
founded module 0
y_cord address is 14907172



C++:
#include <iostream>
#include <Windows.h>
#include <tchar.h>
#include <TlHelp32.h>

#pragma comment(lib, "user32.lib")
HWND  hwnd;
DWORD dwProcId;

using namespace std; 
DWORD_PTR dwGetModuleBaseAddress(DWORD dwProcID, TCHAR *szModuleName);

DWORD_PTR dwGetModuleBaseAddress(DWORD dwProcID, TCHAR *szModuleName)
{
    DWORD_PTR dwModuleBaseAddress = 0;
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, dwProcID);
    if (hSnapshot != INVALID_HANDLE_VALUE)
    {
        MODULEENTRY32 ModuleEntry32;
        ModuleEntry32.dwSize = sizeof(MODULEENTRY32);
        if (Module32First(hSnapshot, &ModuleEntry32))
        {
            do
            {
                if (_tcsicmp(ModuleEntry32.szModule, szModuleName) == 0)
                {
                    dwModuleBaseAddress = (DWORD_PTR)ModuleEntry32.modBaseAddr;
                    break;
                }
            } while (Module32Next(hSnapshot, &ModuleEntry32));
        }
        CloseHandle(hSnapshot);
    }
    return dwModuleBaseAddress;
}

int main()
{
	DWORD BaseAddr;
	cout << "Wellcome , teleport hack!" << endl;

	hwnd = FindWindow(0, (LPCSTR)"World of Warcraft");
	if(hwnd == 0){
		cout << "error, can8 find windows."<<endl;
	}else{
		cout << "founded World of Warcraft."<<endl;

		DWORD proc_id;
		GetWindowThreadProcessId(hwnd, &proc_id);
		DWORD serverdllBaseAddress = 0;
		serverdllBaseAddress = dwGetModuleBaseAddress(dwProcId, _T("Wow.exe"));

		 DWORD staticOffset = 0xE37724;

		cout << proc_id<< endl;

		HANDLE hproc =  OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);
			if(!hproc){
				cout << "error, can't opeen process " <<GetLastError()<< endl; 
			}else{
				cout << "Process opened" << endl;
		}
			DWORD value;
			ReadProcessMemory(hwnd, (LPCVOID)(serverdllBaseAddress+staticOffset), &value, sizeof(DWORD), NULL); 
			cout << "y_cord is "<< value << endl;
			cout << "founded module " << serverdllBaseAddress << endl;

			cout << "y_cord address is " << (serverdllBaseAddress + staticOffset)<< endl;

	}
	
	cin.get();

}
TY kuldeep
plz forgive me if i m anoying u to much
 
Last edited:

mambda

headass
Escobar Tier VIP
Trump Tier Donator
Jun 25, 2014
2,298
37,938
269
Breakpoint it and find out mate, this would take you like 5 minutes to fix, if you don't know how to do that i recommend googling or youtubing it.
 

tainu

Newbie
Full Member
Oct 29, 2014
38
378
0
Breakpoint it and find out mate, this would take you like 5 minutes to fix, if you don't know how to do that i recommend googling or youtubing it.
well it will 5 mint for you for me it took whole day and still didn't working
SetPrivilege will make it to work ?
 
Last edited:

Nazalas

Coder
Dank Tier VIP
Dank Tier Donator
May 20, 2015
99
3,963
3
I don't ever use ReadProcessMemory but give this a try. It looks to me like you are asking for a pointer back. Your value is DWORD and you ask for sizeof(DWORD);
C++:
float value;
ReadProcessMemory(phandle,(void*)(serverdllBaseAddress+staticOffset),&value,sizeof(float),0);
I wish I could be more help but I don't have wow installed and I usually don't write anything external.
 

mambda

headass
Escobar Tier VIP
Trump Tier Donator
Jun 25, 2014
2,298
37,938
269
Thanks for the vid rake

The reason the first one fails is because you can't just cast a char* to a LPCWSTR, you have to explicitly make it a LPCWSTr/wchar, i think i said this in a previous post made by you tainu ? not sure

So again: char* version = "Wow.exe"
wchar_t* version = L"Wow.exe"

Notice the L , adding that to any string literal makes it a wide char ( unicode, wchar_t, LPCWSTR, etc. )

but since the rest of your program still got executed you can now debug like Rake showed you and can tell us where its going wrong.
 
Attention! Before you post:

Read the How to Ask Questions Guide
99% of questions are answered in the Beginner's Guide, do it before asking a question.

No Hack Requests. Post in the correct section.  Search the forum first. Read the rules.

How to make a good post:

  • Fill out the form correctly
  • Tell us the game name & coding language
  • Post everything we need to know to help you
  • Ask specific questions, be descriptive
  • Post errors, line numbers & screenshots
  • Post code snippets using code tags
  • If it's a large project, zip it up and attach it

If you do not comply, your post may be deleted.  We want to help, please make a good post and we will do our best to help you.

Community Mods