GMWarning Versuch !?
Versucht euer Glück ;)
Mfg CyberRazzer
Code:
struct CUserList
{
CHAR UserName[64];
}
CUserList GetUserList(INT Index)
{
return ( 0xA2A7AC + ( Index * 0x40 ) );
}
VOID ReloadUserList()
{
DWORD ADR_ReloadUserList = 0x7B2980;
__asm
{
/*
[ Der Return Wert der Funktion ist "RETN 0C" = 0xC / 0x4 = 3 Argumente ]
PUSH ...
PUSH ...
PUSH ...
*/
CALL [ ADR_ReloadUserList ];
}
}
for ( INT iUser = 0; iUser < 32; iUser ++ )
{
CUserList* pUserList = GetUserList(iUser);
if ( pUserList->UserName == "Admin 1" )
{
MessageBox(GetActiveWindow(),"HackCoder >> Admin 1 Is Online","Warning",MB_OK);
}
if ( pUserList->UserName == "Admin 2" )
{
MessageBox(GetActiveWindow(),"HackCoder >> Admin 2 Is Online","Warning",MB_OK);
}
if ( pUserList->UserName == "Admin 3" )
{
MessageBox(GetActiveWindow(),"HackCoder >> Admin 3 Is Online","Warning",MB_OK);
}
}
ReloadUserList();
So jetzt sind aber auf den Server nicht nur 32 Spieler Online, jetzt müsste man nach jeder Schleife, die Liste erneuern, damit man die anderen Spieler auch auslesen kann .. Habe mich damit jetzt nicht viel beschäftig, wäre euere Aufgabe.
Wenn ich nichts falsch gemacht habe, wird mit dieser Funktion, die Liste erneuert.
Adresse: 007B2980
Hier noch ein Beispiel, wo WarRock die Funktion aufruft:
Code:
CPU Disasm
Address Hex dump Command Comments
004CE323 |. E8 28462E00 CALL 007B2950 ; \WarRock_23_08_2012.007B2950
004CE328 |. 8B8B 30510000 MOV ECX,DWORD PTR DS:[EBX+5130]
004CE32E |. 68 00020000 PUSH 200 ; /Arg3 = 200
004CE333 |. 68 70BF8F00 PUSH 008FBF70 ; |Arg2 = ASCII "NULL"
004CE338 |. 50 PUSH EAX ; |Arg1
004CE339 |. 03CF ADD ECX,EDI ; |
004CE33B |. E8 40462E00 CALL 007B2980 ; \WarRock_23_08_2012.007B2980
glaube das würde so gehen:
Code:
DWORD ADR_ReloadUserList_1 = 0x7B2980;
DWORD ADR_ReloadUserList_2 = 0x7B2950;
__asm
{
/*
Hier müssen nochmal 2 Argumente
*/
CALL ADR_ReloadUserList_2//Das Return Wert der Funktion wird in EAX gespeichert /
PUSH [ 0x200 ];
PUSH [ 0x8FBF70 ];
PUSH [ EAX ];
CALL [ ADR_ReloadUserList_1 ];
}