[4.0.0 12025] Opcode ID changed ?

On domingo, 15 de agosto de 2010 0 comentarios

Hey, i have patched my cataclysm alpha to the next build (12025) and i have try to adapt emulator for this. Ok, so i have decompile with IDA in pseudo-code wow.exe ...etc.

When i try to find the new offset for ReadUint32, HandleOpcode i have find that :


//----- (004BC690) --------------------------------------------------------
void __cdecl sub_4BC690()
{
void *v0; // eax@2


if ( !dword_C1C980 )
{
v0 = sub_7A6F40(57752, (int)".\\FriendList.cpp", 1207, 0);
if ( v0 )
dword_C1C980 = sub_4B68E0(v0);
else
dword_C1C980 = 0;
sub_4B3B80(0x2FEDu, (int)sub_4BC370, 0);
sub_4B3B80(0x3B68u, (int)sub_4B69D0, 0);
sub_4B3B80(0xCBEBu, (int)sub_4B6A10, 0);
sub_4B3B80(0xBFECu, (int)sub_4BC350, 0);
sub_4B3B80(0x7FECu, (int)sub_4BC300, 0);
sub_5F9E60((int)"whois", (int)sub_4B78F0, 0, (int)"Ask the server to do an account/real name lookup on a character name");


Ok, so sub_4B3B80 is a function for handle recv opcode from the server, so the first argument of the function is opcode id !

Here you can view the same function for build 11927 :

//----- (00FriendList__Initialize) --------------------------------------------------------
void __cdecl sub_FriendList__Initialize()
{
void *v0; // eax@2


if ( !dword_B8E3E0 )
{
v0 = sub_SMemAlloc(57752, (signed int)".\\FriendList.cpp", 1207, 0);
if ( v0 )
dword_B8E3E0 = sub_FriendList__FriendList(v0);
else
dword_B8E3E0 = 0;
sub_ClientServices_SetMessageHandler(99, (int)sub_Packet_Packet_SMSG_WHO, 0);
sub_ClientServices_SetMessageHandler(101, (int)sub_Packet_Packet_SMSG_WHOIS, 0);
sub_ClientServices_SetMessageHandler(510, (int)sub_Packet_Packet_SMSG_RWHOIS, 0);
sub_ClientServices_SetMessageHandler(103, (int)sub_Packet_Packet_SMSG_CONTACT_LIST, 0);
sub_ClientServices_SetMessageHandler(104, (int)sub_Packet_Packet_SMSG_FRIEND_STATUS, 0);
sub_ConsoleCommandRegister("whois", (int)sub_4B1890, 0, (int)"Ask the server to do an account/real name lookup on a character name");

0 comentarios:

Publicar un comentario