Not logged in - Click here to login to your Account Welcome Guest!

Voobly notes
Author Info:
Ksbunker
Posted 12 months ago.
User Avatar
Total XP: 674

The latest zone wannabe and apperant IGZ successor is, if you didn't already know, 'Voobly'. (Yes I know, odd name).

I'll be periodically posting my notes as I come across anything noteworthy and more importantly, when I can. Thus far I havn't come across anything particularly enthralling but i'll keep you informed and I encourage everyone else to do the same. Just append a response - my intention is to make this the one stop shop for Voobly information.

Here's what i've got. Notice 'voobly.txt' in the main directory - it serves as a log file updating as we perform actions. Each load of 'voobly.exe' results in a new log file being created. Not that special, but what is does do is provide us with a neat vehicle to log our actions from our injected or via manually loaded dll's.

Address 'gui.009FCA10' is where the fun is. Given that gui refers to a module, for this to be of any use, we'll have to subtract the modules ImageBase from this RVA. [gui.009FCA10h - 009F0000h = CA10h]. In our dll get the imagebase of gui using either GetModuleHandle [or any other (un)documented method] then add CA10h to get the working RVA.

When I inject the DLL then open up 'voobly.txt' it reads;

There we have it, an easy method of logging our behaviour in any given situation.

Cheers

Ksbunker
Posted 12 months ago.
User Avatar
Total XP: 674

MSDN Description: Creates or opens a named or unnamed mutex object.

CreateMutex is most often used to restrict a process to only a single instance. Voobly via gui.dll calls CreateMutex(), if the mutex handle as pointed to by the third parameter "Voobly-Installer" already exists, the return is the handle to the existing mutex. If it fails it is NULL.

MSDN: Return Value

If the function succeeds, the return value is a handle to the newly created mutex object.

If the function fails, the return value is NULL. To get extended error information, call GetLastError.

If the mutex is a named mutex and the object existed before this function call, the return value is a handle to the existing object, GetLastError returns ERROR_ALREADY_EXISTS, bInitialOwner is ignored, and the calling thread is not granted ownership. However, if the caller has limited access rights, the function will fail with ERROR_ACCESS_DENIED and the caller should use the OpenMutex function.

The Solution is to change the "TEST EAX, EAX" to "XOR EAX, EAX" which immediately follows the CreateMutex function.

Cheers

RANCID
Posted 12 months ago.
User Avatar
Total XP: 460

Also, on a side note; it looks like they changed the network encryption from ICE to DES.

tOrMeNtIuM
Posted 11 months ago.
User Avatar
Total XP: 8

>Address 'gui.009FCA10' is where the fun is. Given that gui refers to a module, for this to be of any use, we'll have to subtract the modules ImageBase from this RVA. [gui.009FCA10h - 009F0000h = CA10h].

I obviously wouldn't suggest hardcoding this address...

>CreateMutex is most often used to restrict a process to only a single instance. Voobly via gui.dll calls CreateMutex(), if the mutex handle as pointed to by the third parameter "Voobly-Installer" already exists, the return is the handle to the existing mutex. If it fails it is NULL.

In this case it's only used to lock out the installer so people don't try to update Voobly whilst it's running. The multiple instances are prevented via shared memory on Voobly. It'll cause problems if you break this as you'll get a messenger instance per-lobby.

>Also, on a side note; it looks like they changed the network encryption from ICE to DES.

No.. it should still be ICE.

Ksbunker
Posted 11 months ago.
User Avatar
Total XP: 674

OK so I had a quick mess around with the internal anti-flooding feature...

I've been able to disable the popup box informing us that we have been temporarily muted for flooding (patch lobby.dll @ 1007AE19 to 'JMP 1007B0B2') and i've also managed to turn off the feature where it temporarily diables the input editbox (so we can't send text when muted). I've also stopped the client from changing the send button caption from send to mute as well as preventing the client from disabling the button altogether (patch lobby.dll @ 1007AFE2 to 'JMP 1007B0B2').

Alas, all these efforts are somewhat redundant because their effects are only cosmetic, I still am yet to fully disable this anti-flood feature.

For those keen on investigating polygamy, I suggest looking into (lobby.dll) CreateFileMappingA and OpenFileMappingA.

NB: I fkn hate this QWidget pos.

tOrMeNtIuM
Posted 11 months ago.
User Avatar
Total XP: 8

>Alas, all these efforts are somewhat redundant because their effects are only cosmetic, I still am yet to fully disable this anti-flood feature.

It's not going to be possible as the anti-flood is server side. It does the same thing as a moderator mute and marks your client as muted. The chat message functions drop any incoming requests whilst the user is in that state.



Last modified by tOrMeNtIuM on October 16, 2009, 11:56 am
RANCID
Posted 10 months ago.
User Avatar
Total XP: 460

LoL, somebody cares! Cool. Still ICE? Okay. My lazy analysis is full of fail.


Not logged in - Click here to login to your Account
Other Topics of Interest
Topic Title Forum Last post Info
Aoc delete hack for voobly: Need help Game Hacking June 22, 2010, 9:36 pm by itsokman
Memory Scanner Game Hacking January 16, 2010, 1:47 am by boringwall
[Help] SetWindowsHookEx Dll Injection Questions and Answers November 20, 2009, 6:07 pm by boringwall
Any plans? General Discussion October 5, 2009, 10:20 am by tOrMeNtIuM
Hmm General Discussion September 22, 2009, 1:33 am by Ksbunker