Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in /home/iano/public_html/tpforums-vb5/forum/includes/class_core.php on line 5842

PHP Warning: Use of undefined constant MYSQL_NUM - assumed 'MYSQL_NUM' (this will throw an Error in a future version of PHP) in ..../includes/init.php on line 165

PHP Warning: Use of undefined constant MYSQL_ASSOC - assumed 'MYSQL_ASSOC' (this will throw an Error in a future version of PHP) in ..../includes/init.php on line 165

PHP Warning: Use of undefined constant MYSQL_BOTH - assumed 'MYSQL_BOTH' (this will throw an Error in a future version of PHP) in ..../includes/init.php on line 165

PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in ..../includes/functions_navigation.php on line 588

PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in ..../includes/functions_navigation.php on line 612

PHP Warning: Use of undefined constant misc - assumed 'misc' (this will throw an Error in a future version of PHP) in ..../global.php(29) : eval()'d code(6) : eval()'d code on line 1

PHP Warning: Use of undefined constant index - assumed 'index' (this will throw an Error in a future version of PHP) in ..../global.php(29) : eval()'d code(6) : eval()'d code on line 1

PHP Warning: Use of undefined constant misc - assumed 'misc' (this will throw an Error in a future version of PHP) in ..../includes/class_bootstrap.php(1422) : eval()'d code(4) : eval()'d code on line 1

PHP Warning: Use of undefined constant index - assumed 'index' (this will throw an Error in a future version of PHP) in ..../includes/class_bootstrap.php(1422) : eval()'d code(4) : eval()'d code on line 1

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 85

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6
New mc Method.
Results 1 to 5 of 5

Thread: New mc Method.

  1. #1
    Super Moderator klusbert's Avatar
    Join Date
    Dec 2007
    Posts
    1,201

    New mc Method.

    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
    Last edited by klusbert; 05-20-2013 at 03:51 PM.
    How to find battlelist address --> http://tpforums.org/forum/thread-8146.html
    Updating addresses --> http://tpforums.org/forum/thread-8625.html
    DataReader --> http://tpforums.org/forum/thread-10387.html

  2. #2
    Senior Member
    Join Date
    Jan 2011
    Posts
    182
    Great idea. Thank you

  3. #3

    New mc Method

    I have been using this method for finishing my pen barrels for a while now and find it is fast and works great for me.

    Les

  4. #4

    You actually stated this fantastically!

    Really a lot of fantastic info.|
    Nicely put, Kudos! - http://www.viagrabelgiquefr.com/

  5. #5
    Just change PUSH 0x09A4950 to PUSH 0, you will create unnamed mutex which is unique.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •