PDA

View Full Version : How Do I Find The Master Pointers Or BasePointers Of A Game?(Multiplayer)


Americano
11th November 2004, 21:22
How do i find the master or base pointer of a online game? In MapleStory, Ive found a static pointer for a certain hack(Godmode). Found a source code of a trainer which is patched.

#include <windows.h>
#include <iostream.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
long godmode=999;
long speed=4;
long address=0;
long basepointer=0x0060AA98;
bool god=false;
bool spd=false;
DWORD read=0;
DWORD written=0;
DWORD gamepid=0;
HWND gamehwnd;
HANDLE gamehandle;


cout<<"FairLight Maple Hook\n";
cout<<"Recoded by phaze \n";
cout<<"------------------------------\n\n";
cout<<"Godmode on/off = F1\n";
cout<<"attack speed on/off = F2\n\n";
cout<<"Locating Maple Story...\n";
cout.flush();

do {
gamehwnd=FindWindow("MapleStoryClass","MapleStory");
} while(gamehwnd==0);
cout<<"Maple Story detected in memory!\n";
cout.flush();

GetWindowThreadProcessId(gamehwnd,&gamepid);
gamehandle=OpenProcess(PROCESS_ALL_ACCESS,false,ga mepid);

if(gamehandle==0) {
cout<<"Error: Cannot open process\n";
cout.flush();
getchar();
return -1;
}

while(1) {
if(GetAsyncKeyState(VK_F1)) {
if(god==false)
god=true;
else
god=false;
}

if(GetAsyncKeyState(VK_F2)) {
if(spd==false)
spd=true;
else
spd=false;
}

ReadProcessMemory(gamehandle,(void*)basepointer,&address,sizeof(address),&read);
if(read==0) {
cout<<"Error: Cannot read from memory\n";
cout.flush();
getchar();
return -1;
}

if((god==true)&&(address!=0x0)) {
WriteProcessMemory(gamehandle,(void*)(address+0x68 D),&godmode,sizeof(godmode),&written);
if(written==0) {
cout<<"Error: Cannot write to memory\n";
cout.flush();
getchar();
return -1;
}

if((spd==true)&&(address!=0x0)) {
WriteProcessMemory(gamehandle,(void*)(address+0xD0 ),&speed,sizeof(speed),&written);
if(written==0) {
cout<<"Error: Cannot write to memory\n";
cout.flush();
getchar();
return -1;
}
}
cout.flush();
Sleep(100);
}
}
return 0;
}


Just thinking what does basepointer really means? Try finding tutorials about finding basepointer but cannot find any :( Please explain to me what is a basepointer and how do i find the basepointers?
Sorry for being noob but im trying hard to learn :D

faldo
13th November 2004, 19:09
Ok, i'll try to explain what a base pointer is...
To find the baspointer, you first need the DMA address you get from T-search.
Then you breakpoint the DMA and find a few new addresses that has one thing in comon, the offset.

As example, let's say you breakpoint the DMA 001E782D and you find these addresses :

00675D1C CMP ECX,EAX
00675D21 JE 0043B77C
00675D2A MOV ECX,DWORD PTR DS:[ECX+14]
00675D2F MOV EDX,DWORD PTR DS:[ECX]
00675D31 CALL DWORD PTR DS:[EDX+0C]
00675D3E MOV EAX,DWORD PTR DS:[ECX+14]


To find it's base pointer you take this comon offset you find: [ECX+14], subtract 14 from the DMA you found, 001E782D (all in hex calculation). This will give you the basepointer: 001E7819.
Hope that enlightens your mind abit :D