Okay this will be a really short tutorial. The main reason why I write this is because I want to show that there is other way to achieve running multiple clients.
Open up ollydbg and find were tibia create mutex.
http://i.imgur.com/dL01ti2.png
As we see tibia pushes a string as a argument to kernel32.createmutex.
Code:
PUSH 0x09A4950
PUSH 0x0
PUSH 0x0
CALL CreateMutexA
Open up cheat engine and add this address 0x09A4950 (as string) and we will see "TibiaPlayerMutex".
Now we only need to change that string for each client but before the mutex is created.
Code:
string tibiaPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), @"Tibia\tibia.exe");
long MutexName = 0x9A4950;
IntPtr handle;
PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
STARTUPINFO si = new STARTUPINFO();
if (!CreateProcess(tibiaPath, "", IntPtr.Zero, IntPtr.Zero,
false, CREATE_SUSPENDED, IntPtr.Zero, System.IO.Path.GetDirectoryName(tibiaPath), ref si, out pi))
{
return;
}
handle = OpenProcess(PROCESS_ALL_ACCESS, 0, pi.dwProcessId);
WriteString(handle, MutexName, "TibiaPlayerMutex" + pi.dwProcessId.ToString());
ResumeThread(pi.hThread);
So this is really easy to update, you only need one address and you can find it really easy in cheat engine just search for "TibiaPlayerMutex"
I wouldn't use this method my self but maybe someone find this useful
But the result looks like this:
http://imgur.com/b52uxc8