case 0x08: __asm jmp 0x0049502C break; //RandomConnectInfo
case 0x09: __asm jmp 0x004951AF break; //VersionCheck
SendKey = 0
memcpy(Packet, "\x19\x00\x08\xE2\xC3\x00\x00\x2A\x73\xFA\x4B\x23\ x42\xAB\x1C\xBF\x6A\x34\x7C\x74\xD4\x9E\x68\x01\xE 1", 25);
Plen = (*(PWORD(Packet)));
EncryptTable(SendKey,(unsigned char*)Packet+2,Plen-2);
0x08 ist random scheiße damit der server antwortet,
dann kriegst du ein Recv 0x02A
PHP Code:
if(buf[2] == 0x2A){
Print('R',0x57,buf);
SendKey=*(BYTE*)&buf[7];
RecvKey=*(BYTE*)&buf[7];
Sync=*(DWORD*)&buf[83];
printf("SnyC %X\n",Sync);
_asm{
MOV EAX, Sync
SHR EAX, 0x7
MOV ECX, EAX
MOV EDX, EAX
SHR EDX, 0x9
SHL EDX, 0x9
SUB EAX, EDX
XOR EAX, 0x1A85
MOV Sync, EAX
}
printf("Sync:%x\n",Sync);
printf("KEY:%x\n",SendKey);
AcceptAddy=*(DWORD*)&buf[3];
_asm{
MOV EAX,AcceptAddy
XOR EDX,EDX
MOV ECX,0x0ED1
DIV ECX
ADD EDX,0x235C
mov SendLogin,EDX
}
printf("Key for Serv: 0x%X\n",SendLogin);
char Packet2[12];
memcpy(Packet2, "\x0C\x00\x09", 3);
memcpy(Packet2+5,"\x00\x00\x01",3);
*(DWORD*)&Packet2[3]=Sync;
*(DWORD*)&Packet2[8]=SendLogin;
send(s,Packet2,sizeof(Packet2),0);
das ist aber mit der crypt also AES + crypttable, kp wie es ausschaut in der call func SendPacketMain, denke aber 0x09 'bd' 0x01, 'SendLogin', weißt ja jetzt wie es ausschaut
PHP Code:
memcpy(Packet2, "\x0C\x00\x09", 3);
memcpy(Packet2+5,"\x00\x00\x01",3);
*(DWORD*)&Packet2[3]=Sync;
*(DWORD*)&Packet2[8]=SendLogin;
Bei einem CL ist die verbindung unterbrochen und es werden keine Packets mehr gesendet, dadurch nicht machbar glaube ich ?!
NPC's ids ändern sich nach jedem update aber kal wird ja selten geupdatet