void CServer::GetSoloExpHook( ) { lpAsm->MakeBaseAddress( 0x00560E2C ); lpAsm->Push( EDI ); lpAsm->Push( EBX ); lpAsm->Call( ( int )&_GetSoloExp ); lpAsm->AddEsp( 8 ); lpAsm->FillNops( 109 ); };
void CServer::GetPartyExpHook( ) { lpAsm->MakeBaseAddress( 0x00575020 ); lpAsm->Push( ECX ); lpAsm->PushPtrEsp( 0x4 ); lpAsm->Call( ( int )&_GetPartyExp ); lpAsm->AddEsp( 8 ); lpAsm->Retn( 8 ); };
void CServer::CheckExpGainedHook( ) { lpAsm->MakeBaseAddress( 0x00450099 ); lpAsm->Push( EBP ); lpAsm->PushPtrEsp( 0x14 ); lpAsm->Call( ( int )&_CheckExpGained ); lpAsm->AddEsp( 8 ); lpAsm->Test( EAX, EAX ); lpAsm->Jnz( 0x00450135 ); lpAsm->FillNops( 112 ); };
void CServer::CheckPlayerLevelHook( ) { lpAsm->MakeBaseAddress( ( int )EditData ); lpAsm->Push( EBX ); lpAsm->Call( ( int )&_CheckPlayerLevel ); lpAsm->AddEsp( 4 ); lpAsm->Test( EAX, EAX ); lpAsm->Je( 0x00571A43 ); lpAsm->Jmp( 0x00571A04 ); lpAsm->SetLastAddress( ); lpAsm->MakeBaseAddress( ( int )0x005719FB ); lpAsm->Jmp( ( int )EditData ); lpAsm->FillNops( 4 ); lpAsm->AtualizeAddress( &EditData, true ); };
void CServer::PacketHook( ) { lpAsm->MakeBaseAddress( ( int )EditData ); lpAsm->Push( EAX ); lpAsm->Push( EBP ); lpAsm->Push( EDI ); lpAsm->Call( ( int )&_ReceivedPacket ); lpAsm->AddEsp( 8 ); lpAsm->Pop( EAX ); lpAsm->Cmp( ESI, 0x48478400 ); lpAsm->Jmp( 0x0056F527 ); lpAsm->SetLastAddress( ); lpAsm->MakeBaseAddress( ( int )0x0056F521 ); lpAsm->Jmp( ( int )EditData ); lpAsm->FillNops( 1 ); lpAsm->AtualizeAddress( &EditData, true ); };