souleaper Newbie cheater
  Reputation: 0
  Joined: 08 Jul 2012 Posts: 24
 
  | 
		
			
				 Posted: Wed Oct 02, 2019 8:36 pm    Post subject: Reversing Packet Encryption help | 
				       | 
			 
			
				
  | 
			 
			
				 	  | Code: | 	 		  int __stdcall EncrytpionMethod(int a1, __int16 a2, char a3, char a4)
 
{
 
  int v4; // ebp@0
 
  _DWORD *v5; // eax@1
 
  char Packets[2]; // [sp+0h] [bp-44h]@1
 
  char v8; // [sp+2h] [bp-42h]@1
 
  char v9; // [sp+3h] [bp-41h]@1
 
  char v10; // [sp+4h] [bp-40h]@1
 
  char v11; // [sp+8h] [bp-3Ch]@1
 
  char v12; // [sp+9h] [bp-3Bh]@1
 
  char v13; // [sp+Ah] [bp-3Ah]@1
 
  char v14; // [sp+Eh] [bp-36h]@1
 
  int v15; // [sp+10h] [bp-34h]@1
 
  int v16; // [sp+14h] [bp-30h]@1
 
  __int16 v17; // [sp+1Ah] [bp-2Ah]@1
 
  __int16 v18; // [sp+2Ch] [bp-18h]@1
 
  int v19; // [sp+38h] [bp-Ch]@1
 
  char v20; // [sp+40h] [bp-4h]@1
 
 
  sub_5CBD48((int)dword_5FB73C, v4, Packets[0]);
 
  sub_5CB8F8((int)Packets, 0, 15u);
 
  v17 = 17652;
 
  sub_5CB864(Packets, &v17, 2);
 
  v8 = 15;
 
  v9 = 11;
 
  sub_5CB864(&v10, &a2, 2);
 
  v11 = a3;
 
  v12 = a4;
 
  v16 = sub_4670A4(a1, a2, a4);
 
  sub_5CB864(&v13, a1 + 4432, 4);
 
  sub_5CB864(&v14, &v16, 1);
 
  v18 = 12;
 
  v5 = sub_5D99DC(&v20);
 
  ++v19;
 
  sub_4224C8(a1, (int)Packets, 15, *v5);
 
  --v19;
 
  sub_5D9C10(&v20, 2);
 
  v15 = 0;
 
  do
 
  {
 
    Packets[v15] ^= 15u;
 
    ++v15;
 
  }
 
  while ( v15 < 15 );
 
  return W32_SendCheckerFunc(*(_DWORD *)(*(_DWORD *)(a1 + 1188) + 144), Packets, 15);
 
} | 	  
 
 
A while back I asked a question about the last byte of a game send packet. and I still can't figure it out.  I manage to grab that from ida pro.  
 
The eat medicine packet seems to be only 15 bytes long.  which seems to make sense in this case.   The ^=  XOR key is different everytime, but in this case is 15,  I don't no clue why.  Anyone know how the last byte gets generate from this code above..  
 
 
Thanks Chelvan.[/code]
 | 
			 
		  |