Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

How to make GM shouts , a different approach

Status
Not open for further replies.
Goodbye
Loyal Member
Joined
Oct 6, 2009
Messages
965
Reaction score
134
According to various posts in RZ , GMshouts can be enabled, but their drawback is that GM has to be logged in in order for shouts to appear. So we need to have a pc logged in all the time, and we also cause some additional "spam" besides the already existing "welcome to our A3 server".

So , why not just change that message while the server is running and let our server display it every 60 seconds.

How are we going to do this?

Here is a short video tutorial:


Here is our hack_me code:

Code:
char* hackme = "Hack Me Dude";

	cout << "Press any key when hacked" << endl;
	system("PAUSE");

	while(true)
	{
		cout << "hackme string now is (Press Ctrl-C to exit): " << hackme << endl;
		
		Sleep(10000);

	}
	return 0;

This example allows us to hack it before and after it starts its operation. It's up to us to decide.

All we have to do now is write a new proggy and change the "hack me dude" value.

Here it is:

ATTENTION: example is very simple without any error checking etc. just for the purposes of this guide.

Code:
int pid;
HANDLE hProcess = NULL;

LPCVOID msg = "ChrisDeGrece";

cout << "Enter Zoneserver process ID : ";
cin >> pid;

hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE, pid);

//We found this address using OllyDBG remember?
DWORD  dwAddr = 0x01232114;

DWORD oldProtect = 0;
DWORD numRead = 0;
VirtualProtectEx( hProcess, (LPVOID)dwAddr, 13, PAGE_EXECUTE_READWRITE, &oldProtect );
	
if (WriteProcessMemory(hProcess,(LPVOID)dwAddr,msg ,13,NULL))
	{
		cout << "Gotcha" << endl;
		cout << "Now enter game and see";
	} else {
		cout << "Failed!" << endl;
	}

VirtualProtectEx( hProcess, (LPVOID)dwAddr, 13, oldProtect, NULL ); 
	
system("PAUSE");
return 0;

We connect to the process using "OpenProcess"

We set the protection level to read_write

We write our own string in memory

We set protection as it was.


So now you can find your "welcome to my a3 server" string and change it every 60 seconds. You will get a GM shouts like result.
 
Newbie Spellweaver
Joined
Apr 5, 2011
Messages
18
Reaction score
0
that's not injection, just modify string in memory
 
Goodbye
Loyal Member
Joined
Oct 6, 2009
Messages
965
Reaction score
134
Injection and SEH are quite safe if you know how to use them.
 
Status
Not open for further replies.
Back
Top