Upon working on my old proxy, there is not much of changes in encryption except that the DH key exchange manipulation of changing the public key from proxy will not work anymore. It seems that the client has a defined and fixed public key already which can't be altered by the packets during initial handshake.
Code:
System.Buffer.BlockCopy(Encoding.ASCII.GetBytes(Me.GameCrypthSP.PublicKey), 0, _
buffer, KeyOffset, Me.GameCrypthSP.PublicKey.Length)
Me.GameCrypthCP.Encrypt(buffer)
sharedkey = Me.GameCrypthCP.ComputeKey(Me.ClientPublicKey)
This packet will cause the client to disconnect once I will change the public key on that packet to the public key generated from Game-Proxy DH exchange.
I think the client and game server has a fixed public key which will then compared to the public key that it receive from first packet from game server. Do I need to check the public key from the memory of conquer client and how?