Code: Show/Hide C2S data = 00-07 C2S data = 00-07 C2S data = 00-01-00-34-DB-CD-11-00 C2S data = 00-01-00-34-DB-CD-11-00 S2C data = 00-10-E9-7A-AE-3F-DC-49-5A-49-01-00 C2S data = 00-10-E9-7A-AE-3F-DC-49-5A-49-01-00 S2C data = 00-10-EA-7A-C0-DD-62-89-8C-42-01-00 C2S data = 00-10-EA-7A-C0-DD-62-89-8C-42-01-00 C2S data = 00-01-00-34-DB-CD-11-00 C2S data = 00-01-00-34-DB-CD-11-00 S2C data = 00-10-EB-7A-70-BE-90-55-DE-46-01-00 C2S data = 00-01-00-34-DB-CD-11-00 S2C data = 00-10-EC-7A-84-2A-84-85-52-84-01-00 C2S data = 00-01-00-34-DB-CD-11-00 S2C data = 00-10-ED-7A-60-35-D4-1E-11-7A-01-00 C2S data = 00-10-EB-7A-70-BE-90-55-DE-46-01-00 S2C data = 00-10-EE-7A-74-CD-3A-8A-BA-56-01-00 C2S data = 00-10-EC-7A-84-2A-84-85-52-84-01-00 C2S data = 00-10-ED-7A-60-35-D4-1E-11-7A-01-00 C2S data = 00-10-EE-7A-74-CD-3A-8A-BA-56-01-00 |
Code: Show/Hide sub_457D60((void **)&v9, 0, 612215210); //modified MD5 sub_458E90(&v9, -1439978213); |
Code: Show/Hide void *__userpurge sub_457D60<eax>(void **a1<ecx>, int a2<ebx>, int a3) { .. v8 = __ROL__(*(_DWORD *)*a1 - 681945657, 7); v8 -= 271734071; v9 = __ROL__((v8 & 0xEFCDAAC9 | ~v8 & 0x98BACD4E) + *((_DWORD *)*v6 + 1) - 107344724, 12); v10 = v8 + v9; v11 = __ROL__((v8 & v10 | ~v10 & 0xEFCDAAC9) + *((_DWORD *)*v6 + 2) - 1126481991, 17); v12 = v10 + v11; v13 = __ROL__((v12 & v10 | v8 & ~v12) + *((_DWORD *)v3 + 3) - 1319441881, 22); v14 = v12 + v13; v15 = __ROL__(*((_DWORD *)v3 + 4) + (v14 & v12 | v10 & ~v14) + v8 - 177010401, 7); v16 = v14 + v15; v17 = __ROL__(*((_DWORD *)v3 + 5) + (v16 & v14 | v12 & ~v16) + v10 + 1200080794, 12); v18 = v16 + v17; v19 = __ROL__(*((_DWORD *)v3 + 6) + (v16 & v18 | v14 & ~v18) + v12 - 1472706653, 17); v20 = v18 + v19; v21 = __ROL__(*((_DWORD *)v3 + 7) + (v20 & v18 | v16 & ~v20) + v14 - 45706063, 22); v22 = v20 + v21; v23 = __ROL__(*((_DWORD *)v3 + 8) + (v22 & v20 | v18 & ~v22) + v16 + 1753258344, 7); v24 = v22 + v23; v25 = __ROL__(*((_DWORD *)v3 + 9) + (v24 & v22 | v20 & ~v24) + v18 - 1958414817, 12); } |
Code: Show/Hide switch(data[0]) { ..... case 0x0E: //cluster packet: try { int size = 0; int countChecked = 1; do { size = data[countChecked + 1]; if (size > countChecked + data.Length) break; byte[] littlePacket = new byte[size]; Array.Copy(data, countChecked + 2, littlePacket, 0, size); Client2ServerPacketProcessing(littlePacket); countChecked += size + 1; } while (countChecked + 1 < data.Length); } catch (IndexOutOfRangeException ioore) { } break; } |
Code: Show/Hide switch (data[1]) { case 0x0A: //huge chunk if (data.Length >= 7) { C2SHugeChunkSize = BitConverter.ToUInt32(data, 2); Console.WriteLine("[C2S]: Size = " + C2SHugeChunkSize + " bytes: so far " + C2ShugeChunkPacket.Count + " bytes"); //int size = BitConverter.ToUInt16(data, 4); if (data.Length - 6 > 0) { byte[] hugeChunkData = new byte[data.Length - 6]; Buffer.BlockCopy(data, 6, hugeChunkData, 0, data.Length - 6); C2ShugeChunkPacket.AddRange(hugeChunkData); if (C2SHugeChunkSize == C2ShugeChunkPacket.Count) { Client2ServerPacketProcessing(C2ShugeChunkPacket.ToArray()); C2ShugeChunkPacket.Clear(); } } } else { Console.WriteLine("Malformed big chunk ignored."); } break; |