Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Guide] Detecting server crash problem from bad player

Joined
Apr 9, 2012
Messages
2,355
Reaction score
440
if your server crash when you open it (in loading) you might have wrong configuration, you dont need to follow this guide if that is the case.

this is an example case :
http://forum.ragezone.com/f152/crashes-saved-1069518/
http://forum.ragezone.com/f152/logout-packets-1060031/
this is problem from @sadi, not sure if he fixed it...

but, as you can see, zone creating exception log when your server is crashing...
what you need to do is open the log
this is an example from that thread :

Code:
================================================================================== 
ZoneServer : Exception Program 

Exe :         D:\2232\2.ZoneServer\RF_Bin\~~.exe 
OS :          Windows 6.1(XP), build7601 PlatformId 2 "Service Pack 1" 
Computer :    
Time :        2015-07-01 WED, 03:08:38.387 PM 
[COLOR=#FF0000][SIZE=3][B]Code :        C0000005 ACCESS_VIOLATION 
Address :     4041034A [/B][/SIZE][/COLOR]
================================================================================== 


------------------------------------------------------------------------ 
    Call stack 
------------------------------------------------------------------------ 
Address   Frame     Function            SourceFile 
4041034A  AB11FB40  <2>0000:00000000  
401C1617  AB11FB80  <2>0000:00000000  
401DF141  AB11FC80  <2>0000:00000000  
401DB780  AB11FCB0  <2>0000:00000000  
40478A68  AB11FD90  <2>0000:00000000  
40477D96  AB11FDD0  <2>0000:00000000  
40481CB9  AB11FE10  <2>0000:00000000  
401F4E03  AB11FE80  <2>0000:00000000  
401EE85D  AB11FEC0  <2>0000:00000000  
616353C5  AB11FF10  <2>0001:000043C5 C:\Windows\WinSxS\amd64_microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.4053_none_9cf5f2ffebeea69a\MSVCR80D.dll 
6163538C  AB11FF50  <2>0001:0000438C C:\Windows\WinSxS\amd64_microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.4053_none_9cf5f2ffebeea69a\MSVCR80D.dll 
771E652D  AB11FF80  <2>0001:0001552D C:\Windows\system32\kernel32.dll 
7731C541  AB11FFD0  <2>0001:0002B541 C:\Windows\SYSTEM32\ntdll.dll 


------------------------------------------------------------------------ 
    Load Modules 
------------------------------------------------------------------------ 
40000000  D:\2232\2.ZoneServer\RF_Bin\~~.exe 
772F0000  C:\Windows\SYSTEM32\ntdll.dll 
771D0000  C:\Windows\system32\kernel32.dll 
FD280000  C:\Windows\system32\KERNELBASE.dll 
FADE0000  C:\Windows\system32\NETAPI32.dll 
FADB0000  C:\Windows\system32\netutils.dll 
FE590000  C:\Windows\system32\msvcrt.dll 
FCB30000  C:\Windows\system32\srvcli.dll 
FE9D0000  C:\Windows\system32\RPCRT4.dll 
FAD60000  C:\Windows\system32\wkscli.dll 
F1660000  C:\Windows\system32\ODBC32.dll 
FD470000  C:\Windows\system32\ADVAPI32.dll 
FF1D0000  C:\Windows\SYSTEM32\sechost.dll 
770D0000  C:\Windows\system32\USER32.dll 
FEF70000  C:\Windows\system32\GDI32.dll 
FEEA0000  C:\Windows\system32\LPK.dll 
FD550000  C:\Windows\system32\USP10.dll 
FF530000  C:\Windows\system32\WS2_32.dll 
FF250000  C:\Windows\system32\NSI.dll 
F95D0000  C:\Windows\system32\WINMM.dll 
F0CB0000  C:\Windows\system32\DDRAW.dll 
FA580000  C:\Windows\system32\DCIMAN32.dll 
FD620000  C:\Windows\system32\SETUPAPI.dll 
FD240000  C:\Windows\system32\CFGMGR32.dll 
FEFE0000  C:\Windows\system32\OLEAUT32.dll 
FE630000  C:\Windows\system32\ole32.dll 
FD300000  C:\Windows\system32\DEVOBJ.dll 
FB740000  C:\Windows\system32\dwmapi.dll 
00400000  D:\2232\2.ZoneServer\RF_Bin\d3dx9_30.dll 
614C0000  C:\Windows\WinSxS\amd64_microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.4053_none_9cf5f2ffebeea69a\MSVCP80D.dll 
61630000  C:\Windows\WinSxS\amd64_microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.4053_none_9cf5f2ffebeea69a\MSVCR80D.dll 
60BE0000  C:\Windows\WinSxS\amd64_microsoft.vc80.debugmfc_1fc8b3b9a1e18e3b_8.0.50727.4053_none_a1d5f4f1e8c2d5cd\MFC80D.DLL 
FF580000  C:\Windows\system32\SHLWAPI.dll 
10000000  D:\2232\2.ZoneServer\RF_Bin\AntiCpSvr.dll 
00160000  D:\2232\2.ZoneServer\RF_Bin\RFACC.dll 
FF260000  C:\Windows\system32\WININET.dll 
FD3F0000  C:\Windows\system32\api-ms-win-downlevel-user32-l1-1-0.dll 
FD330000  C:\Windows\system32\api-ms-win-downlevel-shlwapi-l1-1-0.dll 
FD460000  C:\Windows\system32\api-ms-win-downlevel-version-l1-1-0.dll 
FC0F0000  C:\Windows\system32\version.DLL 
FD340000  C:\Windows\system32\api-ms-win-downlevel-normaliz-l1-1-0.dll 
774B0000  C:\Windows\system32\normaliz.DLL 
FEB30000  C:\Windows\system32\iertutil.dll 
FD320000  C:\Windows\system32\api-ms-win-downlevel-advapi32-l1-1-0.dll 
FD400000  C:\Windows\system32\USERENV.dll 
FD0C0000  C:\Windows\system32\profapi.dll 
F25E0000  C:\Windows\system32\dbghelp.dll 
721E0000  C:\Windows\WinSxS\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_88e41e092fab0294\MSVCP80.dll 
72110000  C:\Windows\WinSxS\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_88e41e092fab0294\MSVCR80.dll 
FEEB0000  C:\Windows\system32\comdlg32.dll 
F19F0000  C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_a4d6a923711520a9\COMCTL32.dll 
FD800000  C:\Windows\system32\SHELL32.dll 
FEB00000  C:\Windows\system32\IMM32.DLL 
FF0C0000  C:\Windows\system32\MSCTF.dll 
67180000  C:\Windows\system32\odbcint.dll 
67530000  C:\Windows\WinSxS\amd64_microsoft.vc80.mfcloc_1fc8b3b9a1e18e3b_8.0.50727.6195_none_bc20f59b0bdd1acd\MFC80CHS.DLL 
FB6C0000  C:\Windows\system32\uxtheme.dll 
FBA60000  C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac\comctl32.DLL 
FCF10000  C:\Windows\system32\CRYPTBASE.dll 
FEE00000  C:\Windows\system32\CLBCatQ.DLL 
04280000  D:\2232\2.ZoneServer\RF_Bin\CHI_NETD.dll 
FC210000  C:\Windows\system32\gameudp.dll 
774C0000  C:\Windows\system32\PSAPI.DLL 
FC1E0000  C:\Windows\system32\IPHLPAPI.DLL 
FC1D0000  C:\Windows\system32\WINNSI.DLL 
FC840000  C:\Windows\system32\mswsock.dll 
FC1C0000  C:\Windows\System32\wshtcpip.dll 
FCAA0000  C:\Windows\system32\CRYPTSP.dll 
FC580000  C:\Windows\system32\rsaenh.dll 
F7CE0000  C:\Windows\system32\odbccp32.dll 
FCE80000  C:\Windows\system32\SspiCli.dll 
FCA60000  C:\Windows\system32\bcrypt.dll 
FC4C0000  C:\Windows\system32\bcryptprimitives.dll 
F1000000  C:\Windows\system32\SQLSRV32.dll 
FD0D0000  C:\Windows\system32\CRYPT32.dll 
FD0B0000  C:\Windows\system32\MSASN1.dll 
02080000  C:\Windows\system32\sqlsrv32.rll 
F1D50000  C:\Windows\system32\DBNETLIB.DLL 
020A0000  C:\Windows\system32\security.dll 
FCCB0000  C:\Windows\system32\SECUR32.DLL 
FC470000  C:\Windows\system32\credssp.dll 
FC780000  C:\Windows\system32\msv1_0.DLL 
FCB60000  C:\Windows\system32\cryptdll.dll 
F9440000  C:\Windows\system32\ntdsapi.dll 
FC610000  C:\Windows\system32\schannel.DLL 
FC9D0000  C:\Windows\system32\ncrypt.dll 
FC670000  C:\Windows\system32\DNSAPI.dll 



------------------------------------------------------------------------ 
    Hardware/Driver Information 
------------------------------------------------------------------------ 
Processor:              0x9 
Display :               Unknown 
Page Size:              4096 
Min App Address:        0x00010000 
Max App Address:        0xFFFEFFFF 
Processor Mask:         0xF 
Number of Processors:   4 
Processor Type:         8664 
Allocation Granularity: 65536 
Processor Level:        6 
Processor Revision:     5898 

Percent memory used:    71 
Physical memory:        2443603968/4158242816 
Page file:              1615237120/398237696 
Virtual memory:         249012224/4294836224

see the red part?
that is our guide,
Code : C0000005 ACCESS_VIOLATION
this problem caused by access violation usually when you try to access NULL pointer member, this problem occured, that is why checking NULL pointer is very important in C++ most of (or perhaps i should say every) crash is mostly caused by this.
Address : 4041034A
this is our main problem, this is the address,
let's open ida pro, open your zone, let it analyze it (this one take time, so i would suggest to save the database by pressing ctrl+s when the analyze is done, so next time you could just load it without the need to reanalyze),

when it's done, click on assembly windows, just place the cursor anywhere in the graph, yes the one with graphic/(or something with move eax, push ecx, etc), press "G" on your keyboard, or click on jump menu, and choose jump to address -_-, jump address box will appear, copy the address from the log, the address is : 14041034A, yes, you need to add 1 in the beginning xD
then jump,
View attachment 157186
in sadi case, it will bring you to :
View attachment 157187

if you get your hand into ida pro 6.6 or above with hex-ray decompiler, you can produce pseudo code (kind like converting assembly into source code which more make sense, or you could say decompiled source of the function :p:) by pressing "F5" in the keyboard. this is the result in sadi case :
View attachment 157188

as we can see,
the problem occur when accessing v13 (this one is CUserDB pointer) this v13 which have NULL pointer, the program is trying to access m_dwAccountSerial from it, which is invalid because the pointer is NULL it's not pointing to a valid address.

usually i would just disable the whole function if the game can goes on without it,
but if it's something important you should just fix it using module, and check for NULL value, if it's NULL return an error, and allowed it if it's not NULL

goodluck with your server :p:



an example :
problem : http://forum.ragezone.com/f152/zoneserver-crash-2-2-3-a-1114400-post8692619/#post8692619
fix : http://forum.ragezone.com/f152/zoneserver-crash-2-2-3-a-1114400-post8697631/#post8697631
 

Attachments

You must be registered for see attachments list
Last edited:
Initiate Mage
Joined
Aug 26, 2011
Messages
46
Reaction score
0
Question sir :
this guide can make zoneserver save from wpe crash packet etc ?
 
Joined
Apr 9, 2012
Messages
2,355
Reaction score
440
u would have to write it in asm if im not mistaken

that is not wrong, but not a good option either,
asm is crap (if you were to ask me)

and that is why writeinstruction exist in module, learn how and what is "WriteInstruction" function in module used for,
and you could just check null value, and handle it correctly.
and really, i stopped using asm, it's crap and caused crash/more problem in my experience.
 
Back
Top