Jump to content

Warden - The definitive anti-cheat system


Recommended Posts

Hi, i have some compile error, my environment is Ubuntu 10.10 server 64bit GCC 4.4.1 - Mangos REV 11382:

In file included from /root/mangosdev/src/game/WardenMgr.h:27,
                from /root/mangosdev/src/game/WardenMgr.cpp:19:
/root/mangosdev/src/game/WorldSession.h:182: warning: unused parameter 'packet'
/root/mangosdev/src/game/WardenMgr.h: In constructor 'WardenMgr::WardenMgr()':
/root/mangosdev/src/game/WardenMgr.h:211: warning: 'WardenMgr::m_Banning' will be initialized after
/root/mangosdev/src/game/WardenMgr.h:207: warning:   'bool WardenMgr::m_HalfCall'
/root/mangosdev/src/game/WardenMgr.cpp:36: warning:   when initialized here
/root/mangosdev/src/game/WardenMgr.cpp: In member function 'void WardenMgr::Initialize(const char*, u_short, bool)':
/root/mangosdev/src/game/WardenMgr.cpp:60: warning: suggest parentheses around assignment used as truth value
/root/mangosdev/src/game/WardenMgr.cpp: In member function 'void WardenMgr::Update(uint32)':
/root/mangosdev/src/game/WardenMgr.cpp:123: warning: unused variable 'res'
/root/mangosdev/src/game/WardenMgr.cpp: In member function 'bool WardenMgr::LoadFromDB()':
/root/mangosdev/src/game/WardenMgr.cpp:186: error: 'WorldDatabase' was not declared in this scope
compilation terminated due to -Wfatal-errors.
make[2]: *** [src/game/CMakeFiles/game.dir/WardenMgr.cpp.o] Error 1
make[1]: *** [src/game/CMakeFiles/game.dir/all] Error 2
make: *** [all] Error 2

Solved adding:

#include "Database/DatabaseEnv.h"

But i have other compile error... maybe related with PCH:

In file included from /root/mangosdev/src/shared/Database/DatabaseEnv.h:40,
                from /root/mangosdev/src/game/WardenMgr.cpp:23:
/root/mangosdev/src/shared/Database/Database.h: In constructor 'Database::Database()':
/root/mangosdev/src/shared/Database/Database.h:308: warning: 'Database::m_pingIntervallms' will be initialized after
/root/mangosdev/src/shared/Database/Database.h:277: warning:   'int Database::m_nQueryConnPoolSize'
/root/mangosdev/src/shared/Database/Database.h:225: warning:   when initialized here
/root/mangosdev/src/game/WardenMgr.h: In constructor 'WardenMgr::WardenMgr()':
/root/mangosdev/src/game/WardenMgr.h:211: warning: 'WardenMgr::m_Banning' will be initialized after
/root/mangosdev/src/game/WardenMgr.h:207: warning:   'bool WardenMgr::m_HalfCall'
/root/mangosdev/src/game/WardenMgr.cpp:37: warning:   when initialized here
/root/mangosdev/src/game/WardenMgr.cpp: In member function 'void WardenMgr::Initialize(const char*, u_short, bool)':
/root/mangosdev/src/game/WardenMgr.cpp:61: warning: suggest parentheses around assignment used as truth value
/root/mangosdev/src/game/WardenMgr.cpp: In member function 'void WardenMgr::Update(uint32)':
/root/mangosdev/src/game/WardenMgr.cpp:124: warning: unused variable 'res'
/root/mangosdev/src/game/WardenMgr.cpp: In member function 'void WardenMgr::SendLoadModuleRequest(WorldSession*)':
/root/mangosdev/src/game/WardenMgr.cpp:520: error: invalid use of incomplete type 'struct WorldSocket'
compilation terminated due to -Wfatal-errors.
make[2]: *** [src/game/CMakeFiles/game.dir/WardenMgr.cpp.o] Error 1
make[1]: *** [src/game/CMakeFiles/game.dir/all] Error 2
make: *** [all] Error 2

Best Regards

Link to comment
Share on other sites

  • Replies 286
  • Created
  • Last Reply

Top Posters In This Topic

I will write again the same things:

1) Warden modules are from blizz and for wow client and client is for windows.

2) Warden modules are some DLL win32

3) To have the keys, we need to run the module

4) The daemon is for this, so it is for windows 32, it can run on linux wine x32

5) Core can be on Windows/Linux x32 or x64

6) If the code in the wardend was in core, core had to run on windows only

That's it.

Note: I will take a look and the compilation problems

Link to comment
Share on other sites

I have to say Neo2003, you have outdone yourself with this project.

I just have a question or two, what programs/hacks/cheats does this currently stop? And how can we add more cheat protection?

Regards,

ogchaos.

PS:

Suggestions

- Configuration option to choose how long to ban for (1 = perm, 2d's = 2 days etc) on cheat fail

- Configuration option to IP/account ban or both on cheat fail

PSS:

infinite loop in WardenMgr::Update

http://pastebin.com/3At5xDhr

I get this too.

Link to comment
Share on other sites

hmm maybe I'm doing something wrong, but warden simply doesn't want to check anything. Installed and run perfectly

18:20:39 MaNGOS/0.17.0-DEV (* * Revision 11384 - b2dba312cbca1be289e55e26b7b76300bc5df418 at /dev/rsa branch) for Win32 (little-endian) [warden-daemon]
18:20:39 <Ctrl-C> to stop.

18:20:39 Using configuration file wardend.conf.
18:20:39 Using ACE: 5.8.3
18:20:39 Max allowed open files is 4096
18:20:39 wardend process priority class set to HIGH
18:20:39
18:20:39 Warden system initialized.
18:20:54 Accepting connection from '127.0.0.1'
18:20:54 World process connected.

Starting Warden system...
[**************************************************] 100%
>> Loaded 71 warden modules

[**************************************************] 100%
>> Loaded 45 memory checks

[**************************************************] 100%
>> Loaded 69 page checks

[**************************************************] 100%
>> Loaded 11 file checks

[**************************************************] 100%
>> Loaded 6 lua checks

[**************************************************] 100%
>> Loaded 33 driver checks

Initialize AuctionHouseBot...
AHBot-AHBuyer modified by /dev/rsa is now loaded
Starting Autobroadcast system by Xeross...
WORLD: World initialized
SERVER STARTUP TIME: 0 minutes 13 seconds
Starting up anti-freeze thread (60 seconds max stuck time)...
SESSION: received not allowed opcode CMSG_LFG_GET_STATUS (0x0296)
^CAnti-freeze thread exiting without problems.

tried WEH, WPE - no checks, no bans. Config and sql set/uploaded properly

P.S. Ubuntu 10.10 + wine

P.S.S. when I stop daemon process worldd simply freeze

Link to comment
Share on other sites

I have some troubles with some account kicks:

Warden Manager: no reply received for module load or 2 times load failed, kicking account 4856

Warden Manager: no Cheat-check reply received, kicking account 1039

I know that if a client losts the connection, it's kicked, but Warden kicks also online clients as well, even myself. May be this checks could be less restrictive?

Link to comment
Share on other sites

PSS:

infinite loop in WardenMgr::Update

http://pastebin.com/3At5xDhr

I get this too.

Mee too :S

Found what could cause this but not why yet.

Mangosd did receive a packet from Wardend which is not understood, so skipping 2 uint8 per second is low and makes like a freeze.

Moreover, I added a BanLength option in config in days. 0 = infinite else the number of days.

I will post a new version soon when I know better what could cause an invalid packet from Wardend. Maybe try to change the port used. 4321 may be used for something else so try something higher. I will move to port 6555 in next patch by default.

Link to comment
Share on other sites

If you close Warden daemon server enters in an infinite loop:

Unexpected packet [66] from Wardend, trashing it
Unexpected packet [66] from Wardend, trashing it
Unexpected packet [66] from Wardend, trashing it
Unexpected packet [66] from Wardend, trashing it
Unexpected packet [66] from Wardend, trashing it
...
...

Link to comment
Share on other sites

Was there is version without this problem or this kind of freeze always happened with this patch? Can you narrow down the faulty part?

I suspect the problem to be Linux only and I have limited access to Linux: I can compile on it and run the core but I cannot play on this setup, then not easy to detect the problem.

Link to comment
Share on other sites

I have a very similar crash, it occurs after every second server startup.

2011-05-01 16:49:50 ERROR: Unexpected packet [255] from Wardend, trashing it

It repeats until world thread hangs and got kicked out. Wardend was running and didnt produce any log entry that could help, only this:

2011-05-01 16:46:50 Warden system initialized.
2011-05-01 16:49:59 Accepting connection from '192.168.32.1'
2011-05-01 16:49:59 World process connected.
2011-05-01 16:50:14 Terminating connection from '192.168.32.1'

I used Warden110406b patch and 32bit debian lenny. I runned tests using wine and windows machine for wardend, but world daemon was always on linux. Then I started tcpdumping, and got the following results:

http://pastebin.com/tRv1bmQ9 < during startup

http://pastebin.com/G3wTGEBB < during startup

http://pastebin.com/rcTjeKGY < after closing wardend

I noticed, that there are only few packets after the loop begins, so mangosd was not getting so many bad packets as the count of log messages. Maybe one false tcp packet starts this kind of loop because world daemon cant move on. I hope I could help. Should I make a few crash backtraces too?

Link to comment
Share on other sites

The problem is around ACE and the Reactor used for Linux. I was not yet able to find a working one on Linux while the Windows one (WFMO_Reactor) just works fine.

If I use a TP_Reactor or a DEV_POL_Reactor, I get this problem of infinite loop, if I use the Select_Reactor, I cannot get data back from core, the handle_input method is simply never called.

I am still searching how to make this damn Select_Reactor work on Linux.

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