• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

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