Jump to content

Warden - The definitive anti-cheat system


Recommended Posts

  • Replies 286
  • Created
  • Last Reply

Top Posters In This Topic

Simple fix for creating needed warden (Windows/Mac), written for TC2, but with small modifications should work for mangos

I always thought that the people in the TC are kind people ... This is not a fix, this is a very bad hack. I would be ashamed to publish this.

We do not insult other projects or what they do. It's a matter of being kind.

Link to comment
Share on other sites

Why would you call it 'hack'?

  • Client sends OS data only to authserver, so the operating system detection can't be handled in worldserver
  • The value must be stored in database, because all data from authserver to worldserver is sent this way
  • Storing plain string instead of comparing it to known operating systems and storing some ID of the OS is better, because there could be more possible values other than "Win" and "OSX"

The 'if (ch->os[n]) operatingSystem.push_back(ch->os[n]);' part could be done without IFs or in loop, but really checking if byte is zero is faster than pushing 0 in end of string.

Link to comment
Share on other sites

Any new on OS X support?

I tried your implementation TOM_RUS and currently it crashes the client after loading the module (Module_0DBBF209A27B1E279A9FEC5C168A15F7_Data).

**edit

Client crashes with

Improper header received: [ CE FA ED FE 07 00 00 00 03 00 00 00 08 00 00 00 0A 00 00 00 48 07 00 00 85 20 01 00 01 00 00 00 ]

Link to comment
Share on other sites

Any new on OS X support?

I tried your implementation TOM_RUS and currently it crashes the client after loading the module (Module_0DBBF209A27B1E279A9FEC5C168A15F7_Data).

**edit

Client crashes with

Improper header received: [ CE FA ED FE 07 00 00 00 03 00 00 00 08 00 00 00 0A 00 00 00 48 07 00 00 85 20 01 00 01 00 00 00 ]

That's weird, because header looks correct... http://paste2.org/p/1478703

Link to comment
Share on other sites

I'm a Mac owner and can offer any required help regarding development and testing of Warden on Mac OS X. Unfortunately I have no skills in reverse-engineering and similar tasks (and do not expect that anybody will spend his time training me to do it, though it would be nice), but Macbook Pro itself and my decent C++ skills are always ready to help.

By the way, I'd like to note that I have tested current implementation made by TOM_RUS and it works "fine" on Mac OS X (client does not crash). But I know that it does not do any real work now.

Link to comment
Share on other sites

Hi TOM_RUS, firstly BIG thanks for amazing work.

I am testing on local, and i have questions, my gm account continue been banned by warden without any third program...

Here examples of this bans

2011-06-29 06:09:31 RESULT PAGE_CHECK fail, CheckId 800 account Id 5

2011-06-29 06:36:40 RESULT PAGE_CHECK fail, CheckId 261 account Id 7

2011-06-29 06:36:40 RESULT PAGE_CHECK fail, CheckId 88 account Id 7

2011-06-29 06:36:42 RESULT PAGE_CHECK fail, CheckId 261 account Id 5

2011-06-29 15:45:56 RESULT PAGE_CHECK fail, CheckId 799 account Id 5

2011-06-29 15:56:00 RESULT PAGE_CHECK fail, CheckId 799 account Id 5

2011-06-29 16:17:59 RESULT PAGE_CHECK fail, CheckId 261 account Id 5

2011-06-29 18:53:57 RESULT PAGE_CHECK fail, CheckId 88 account Id 5

2011-06-30 00:48:43 RESULT PAGE_CHECK fail, CheckId 261 account Id 5

2011-06-30 03:19:02 RESULT PAGE_CHECK fail, CheckId 799 account Id 5

2011-06-30 03:53:15 RESULT PAGE_CHECK fail, CheckId 134 account Id 5

2011-06-30 04:36:18 RESULT PAGE_CHECK fail, CheckId 261 account Id 11

2011-06-30 17:12:57 RESULT PAGE_CHECK fail, CheckId 782 account Id 11

2011-06-30 17:58:36 RESULT PAGE_CHECK fail, CheckId 88 account Id 11

Thanks for any reply man

Link to comment
Share on other sites

Can someone explain what the "checks" check for?

If I understand it correctly (which I may not), this check types

PROC_CHECK = 0x7E, // uint Seed + byte[20] SHA1 + byte moluleNameIndex + byte procNameIndex + uint Offset + byte Len (check to ensure proc isn't detoured)

MEM_CHECK = 0xF3, // byte moduleNameIndex + uint Offset + byte Len (check to ensure memory isn't modified)

MPQ_CHECK = 0x98, // byte fileNameIndex (check to ensure MPQ file isn't modified)

LUA_STR_CHECK = 0x8B, // byte luaNameIndex (check to ensure LUA string isn't used)

TIMING_CHECK = 0x57, // empty (check to ensure GetTickCount() isn't detoured)

check for modification of the client itself and theese

DRIVER_CHECK = 0x71, // uint Seed + byte[20] SHA1 + byte driverNameIndex (check to ensure driver isn't loaded)

PAGE_CHECK_A = 0xB2, // uint Seed + byte[20] SHA1 + uint Addr + byte Len (scans all pages for specified hash)

PAGE_CHECK_B = 0xBF, // uint Seed + byte[20] SHA1 + uint Addr + byte Len (scans only pages starts with MZ+PE headers for specified hash)

MODULE_CHECK = 0xD9, // uint Seed + byte[20] SHA1 (check to ensure module isn't injected)

look for malicious programs/drivers, ok?

And let's say I have the source code of of some well-known cheat program, like WoWEmuhacker (I don't, but _someone_ does). And I rename it, do some really minor modifications in the code and recompile it, so its checksums are different. Now it can't be detected by any of the last four checks and probably naither can it be by the rest, because it does not modify the client, only it's data in memory (like movement speed). Is this correct?

Link to comment
Share on other sites

Now it can't be detected by any of the last four checks and probably naither can it be by the rest, because it does not modify the client, only it's data in memory (like movement speed).

And what do you think MEM_CHECK is for? I'm not sure what you're definition of "modify the client" is, but if it's screwing with WoW's data I would most certainly call that modifying the client.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use