Re: UCP Anti-Cheat for Gunz Online
Why not to use the "USE_MD5": download exe, hook Match.Login on send, generate the packet on your own and encrypt the blob on your own... Example of how the check works (I rewrote it into Interlude):
Code:
using System;
using System.Text;
using System.Security.Cryptography;
using Interlude.Core;
namespace Interlude.Packet.Processors
{
class LoginReqeuest
{
public static string Hash(string sString)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] bOut = md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(sString));
return BitConverter.ToString(bOut).Replace("-", "").ToLower();
}
public static void Process(Client client, ref PacketReader packetReader, bool isClient)
{
var user = packetReader.ReadString();
var pass = packetReader.ReadString();
var version = packetReader.ReadInt32();
var checksum = packetReader.ReadInt32();
var size = packetReader.ReadInt32();
var eleSize = packetReader.ReadInt32();
var eleCount = packetReader.ReadInt32();
var md5 = packetReader.ReadBytes(eleSize);
PacketWriter packetWriter = new PacketWriter(0x3E3, 0x65);
packetWriter.Write(user);
if (Global.config.UsePasswordHahh)
packetWriter.Write(Hash(pass));
else
{
packetWriter.Write(pass);
}
packetWriter.Write(version);
packetWriter.Write(checksum);
packetWriter.Write(size);
packetWriter.Write(eleSize);
packetWriter.Write(eleCount);
packetWriter.Write(md5);
PacketCrypt.Decrypt(md5, 0, md5.Length, client.clientKey);
var md5String = BitConverter.ToString(md5);
md5String = md5String.Replace("-", "").ToLower();
if (!md5String.Equals(Global.config.GunZMD5))
{
Logger.Write("LoginRequest", "UserID: {0}. Got: {1} | Expected: {2}", user, md5String, Global.config.GunZMD5);
PacketWriter announce = new PacketWriter(0x1F5, 0x64);
announce.Write((UInt64)1);
announce.Write("Login Request Denied.\nRapeGuard is currently not up to-date.\nPlease run your launcher!");
announce.Write((Int32)1);
var packet = announce.Process(1, client.clientKey);
packetReader = new PacketReader(packet, packet.Length);
client.ClientInfo.socket.Send(packet);
packetReader = null;
return;
}
var pkt = packetWriter.Process(1, client.clientKey);
PacketCrypt.Decrypt(pkt, 2, 2, client.clientKey);
PacketCrypt.Decrypt(pkt, 6, pkt.Length - 6, client.clientKey);
packetReader = new PacketReader(pkt, pkt.Length);
}
}
}
Also, this is Phail.
Re: UCP Anti-Cheat for Gunz Online
Oh nice job man, looks epic
Re: UCP Anti-Cheat for Gunz Online
Re: UCP Anti-Cheat for Gunz Online
Very, Very nice anti-cheat... Congratulations you got my thanks :P
Re: UCP Anti-Cheat for Gunz Online
guarantee it doesn't block the oldest trick for gunz hacking using the d3d9.dll inject and it doesn't sound very promising