seg000:0050753B mov eax, ds:dword_9DD0A8 <========== server pointer seg000:00507540 cmp eax, ebx seg000:00507542 jz loc_507867 seg000:00507548 cmp dword ptr [eax+574h], 5 <========== GMMode offset seg000:0050754F jl loc_507867 seg000:00507555 push offset aKick ; "/kick" <========== search string
seg000:005790BB push offset aIngame_gage_sp ; "Ingame_Gage_SP_0" <========= search string seg000:005790C0 seg000:005790C0 loc_5790C0: ; CODE XREF: sub_578EDB+19Aj seg000:005790C0 ; sub_578EDB+1AFj ... seg000:005790C0 mov ecx, [esi+0B0h] seg000:005790C6 call sub_60C210 seg000:005790CB seg000:005790CB loc_5790CB: ; CODE XREF: sub_578EDB+83j seg000:005790CB ; sub_578EDB+EDj ... seg000:005790CB push edi seg000:005790CC mov edi, ds:dword_AE356C <====== player pointer seg000:005790D2 mov eax, [edi+0C498h] seg000:005790D8 imul eax, 1D20h
seg000:0050753B mov eax, ds:dword_9DD0A8 <- Server Adress gets stored inside eax seg000:00507540 cmp eax, ebx <- you compare the eax with ebx seg000:00507542 jz loc_507867 <- if it's zero we jump to 507867 seg000:00507548 cmp dword ptr [eax+574h], 5 <- as stated this is the Gm offset addy which is used in the server, so it's always the server pointer + the offset (574) and as we have seen a few moments ago eax = 9DD0A8 <- that's the server adress seg000:0050754F jl loc_507867 <- if eax+574 is lower then 5 we jump to 507867 seg000:00507555 push offset aKick ; "/kick" <- can be used to easely trace the adress.
PlayerPointer = 0x9C ServerPointer = 0x?? ServerPointer = PlayerPointer + 0x70 PlayerPointer = ServerPointer - 0x70 ->PlayerPointer = 0x9C ->ServerPointer = 0x10C or ServerPointer = (PlayerPointer + 0x70)
#define ADR_PLAYERPOINTER 0xAF17F0 #define ADR_SERVERPOINTER 0xAEBFB8 #define ADR_PLAYERPOINTER 0xAED41C #define ADR_SERVERPOINTER 0xAE7BE4 #define Adr_PlayerPTR 0x00AE2C00 #define Adr_ServerPTR 0x00AE3AC4
try to use critical thinking on that its like a reverse thinking
if they give u one then u have now a clue 