need help about speedhack for bot

05/25/2018 03:23 ghosfromhell#1
hello guys again
thanks for those who helped me before because i successfully found everything i need and almost finish my bot but i got only one problem which is speedhack method

i know one but its old and im not sure about it
while any kind of using cheatengine speedhack will be detectable by tq team since they know how cheat engine works

thats the code i have right now
public bool NinjaFlash(ushort ToX, ushort ToY, byte jumptype,bool UpdateClient = true)
{
// Console.WriteLine(string.Format("NinjaFlash : {0}, {1} - {2}, {3}", client.X, client.Y, ToX, ToY));

if (Math.Max(Math.Abs(client.X - ToX), Math.Abs(client.Y - ToY)) < 16 && GUI.MapService.Valid((ushort)client.MapID, client.X, client.Y, ToX, ToY))
{
client.JumpDist = Math.Max(Math.Abs(client.X - ToX), Math.Abs(client.Y - ToY));

byte[] Tail = { 0xA0, 1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1 };
ActionPacket actionPacket = new ActionPacket();
actionPacket.Timestamp = (uint)Environment.TickCount;

actionPacket.UID = client.UID;
actionPacket.ToX = ToX;
actionPacket.ToY = ToY;
actionPacket.ActionType = 137;
actionPacket.ClientX = client.X;
actionPacket.ClientY = client.Y;
actionPacket.MapID = client.MapID;
actionPacket.Direction = client.GetDirection(client.X, client.Y, ToX, ToY);

MemoryStream actionData = new MemoryStream();
Serializer.NonGeneric.Serialize(actionData, actionPacket);

byte[] StreamBuff = actionData.GetBuffer();
ushort dataLen = (ushort)(actionData.Length + Tail.Length);
byte[] buffer = new byte[dataLen + 4 + 8];
ReadWrite.WriteUInt16((ushort)(dataLen + 4), 0, buffer);
ReadWrite.WriteUInt16(10010, 2, buffer);
Array.Copy(StreamBuff, 0, buffer, 4, actionData.Length);
Array.Copy(Tail, 0, buffer, 4 + actionData.Length, Tail.Length);
ReadWrite.WriteString("TQClient", buffer.Length - 8, buffer);

client.SendToServer(buffer);

ActionPacketSvr actionPacketSvr = new ActionPacketSvr();
actionPacketSvr.ClientX = ToX;
actionPacketSvr.ClientY = ToY;
actionPacketSvr.UID = client.UID;
actionPacketSvr.ActionType = 156;
actionPacketSvr.MapID = client.MapID;

MemoryStream actionDataAvr = new MemoryStream();
Serializer.NonGeneric.Serialize(actionDataAvr, actionPacketSvr);

byte[] SvrBuff = actionDataAvr.GetBuffer();
ushort SvrdataLen = (ushort)actionDataAvr.Length;
byte[] SvrBuffer = new byte[SvrdataLen + 4 + 8];
ReadWrite.WriteUInt16((ushort)(SvrdataLen + 4), 0, SvrBuffer);
ReadWrite.WriteUInt16(10010, 2, SvrBuffer);
Array.Copy(SvrBuff, 0, SvrBuffer, 4, SvrdataLen);
ReadWrite.WriteString("TQServer", SvrBuffer.Length - 8, SvrBuffer);
client.SendToClient(SvrBuffer);


if (UpdateClient && client.updateratecounter >= client.updaterate)
{

SyncActionSvr syncActionPacket = new SyncActionSvr();
syncActionPacket.Type = 1;
syncActionPacket.ToX = ToX;
syncActionPacket.ToY = ToY;
syncActionPacket.SyncFlag = 1;
syncActionPacket.UID = client.UID;

MemoryStream syncData = new MemoryStream();
Serializer.NonGeneric.Serialize(syncData, syncActionPacket);

byte[] SyncBuff = syncData.GetBuffer();
ushort SyncdataLen = (ushort)syncData.Length;
byte[] _Buffer = new byte[SyncdataLen + 4 + 8];
ReadWrite.WriteUInt16((ushort)(SyncdataLen + 4), 0, _Buffer);
ReadWrite.WriteUInt16(1114, 2, _Buffer);
Array.Copy(SyncBuff, 0, _Buffer, 4, syncData.Length);
ReadWrite.WriteString("TQServer", _Buffer.Length - 8, _Buffer);
client.SendToClient(_Buffer);


}
if (client.updateratecounter >= client.updaterate)
{
client.updateratecounter = 0;
}
else
{
// client.back++;
client.updateratecounter++;
}
return true;

}
return false;
}
public void Cyclone()
{
if (client.speedOn == false)
{

byte[] packet = new byte[96 + 8];
ReadWrite.WriteUInt16(96, 0, packet);
ReadWrite.WriteUInt16(10017, 2, packet); //packet id
ReadWrite.WriteUInt32((uint)Environment.TickCount, 4, packet);
ReadWrite.WriteUInt32(client.UID, 8, packet); //uid
ReadWrite.WriteUInt32(1, 12, packet);
ReadWrite.WriteUInt64(25, 16, packet); // Unknown
//ReadWrite.WriteUInt64(client.statusflag | 1UL << 23 | 0x30bbc3, 20, packet); // flag Cyclone
ReadWrite.WriteUInt64(client.statusflag | 1UL << 23, 20, packet); // flag Cyclone
ReadWrite.WriteString("TQServer", packet.Length - 8, packet);
client.SendToClient(packet);
BotClientChat("Cyclone ON !");
client.speedOn = true;
}
else
{
byte[] packet = new byte[96 + 8];
ReadWrite.WriteUInt16(96, 0, packet);
ReadWrite.WriteUInt16(10017, 2, packet); //packet id
ReadWrite.WriteUInt32((uint)Environment.TickCount, 4, packet);
ReadWrite.WriteUInt32(client.UID, 8, packet); //uid
ReadWrite.WriteUInt32(1, 12, packet);
ReadWrite.WriteUInt64(25, 16, packet); // Unknown
ReadWrite.WriteUInt64(client.statusflag | 0, 20, packet); // flag Cyclone
ReadWrite.WriteString("TQServer", packet.Length - 8, packet);
client.SendToClient(packet);
client.speedOn = false;
BotClientChat("Cyclone OFF !");
}

}
can someone please help me ?
05/25/2018 13:44 giacometti#2
You could put the code around CODE tag, much more easier to read. Did you and your team understand what this code is doing? Where is it failing?
05/25/2018 15:54 ghosfromhell#3
i cant make it work
it does nothing
05/25/2018 18:23 abdaboda#4
Quote:
Originally Posted by giacometti View Post
You could put the code around CODE tag, much more easier to read. Did you and your team understand what this code is doing? Where is it failing?
they copy and paste don`t care about that
it`s same code on proxy paradise :D
05/26/2018 09:23 Spirited#5
Formatted... example on using "code" tag:

[code]
insert your code here
[/code]


Results:

Code:
public bool NinjaFlash(ushort ToX, ushort ToY, byte jumptype, bool UpdateClient = true)
{
    // Console.WriteLine(string.Format("NinjaFlash : {0}, {1} - {2}, {3}", client.X, client.Y, ToX, ToY));

    if (Math.Max(Math.Abs(client.X - ToX), Math.Abs(client.Y - ToY)) < 16 && GUI.MapService.Valid((ushort)client.MapID, client.X, client.Y, ToX, ToY))
    {
        client.JumpDist = Math.Max(Math.Abs(client.X - ToX), Math.Abs(client.Y - ToY));

        byte[] Tail = { 0xA0, 1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1 };
        ActionPacket actionPacket = new ActionPacket();
        actionPacket.Timestamp = (uint)Environment.TickCount;

        actionPacket.UID = client.UID;
        actionPacket.ToX = ToX;
        actionPacket.ToY = ToY;
        actionPacket.ActionType = 137;
        actionPacket.ClientX = client.X;
        actionPacket.ClientY = client.Y;
        actionPacket.MapID = client.MapID;
        actionPacket.Direction = client.GetDirection(client.X, client.Y, ToX, ToY);

        MemoryStream actionData = new MemoryStream();
        Serializer.NonGeneric.Serialize(actionData, actionPacket);

        byte[] StreamBuff = actionData.GetBuffer();
        ushort dataLen = (ushort)(actionData.Length + Tail.Length);
        byte[] buffer = new byte[dataLen + 4 + 8];
        ReadWrite.WriteUInt16((ushort)(dataLen + 4), 0, buffer);
        ReadWrite.WriteUInt16(10010, 2, buffer);
        Array.Copy(StreamBuff, 0, buffer, 4, actionData.Length);
        Array.Copy(Tail, 0, buffer, 4 + actionData.Length, Tail.Length);
        ReadWrite.WriteString("TQClient", buffer.Length - 8, buffer);

        client.SendToServer(buffer);

        ActionPacketSvr actionPacketSvr = new ActionPacketSvr();
        actionPacketSvr.ClientX = ToX;
        actionPacketSvr.ClientY = ToY;
        actionPacketSvr.UID = client.UID;
        actionPacketSvr.ActionType = 156;
        actionPacketSvr.MapID = client.MapID;

        MemoryStream actionDataAvr = new MemoryStream();
        Serializer.NonGeneric.Serialize(actionDataAvr, actionPacketSvr);

        byte[] SvrBuff = actionDataAvr.GetBuffer();
        ushort SvrdataLen = (ushort)actionDataAvr.Length;
        byte[] SvrBuffer = new byte[SvrdataLen + 4 + 8];
        ReadWrite.WriteUInt16((ushort)(SvrdataLen + 4), 0, SvrBuffer);
        ReadWrite.WriteUInt16(10010, 2, SvrBuffer);
        Array.Copy(SvrBuff, 0, SvrBuffer, 4, SvrdataLen);
        ReadWrite.WriteString("TQServer", SvrBuffer.Length - 8, SvrBuffer);
        client.SendToClient(SvrBuffer);


        if (UpdateClient && client.updateratecounter >= client.updaterate)
        {

            SyncActionSvr syncActionPacket = new SyncActionSvr();
            syncActionPacket.Type = 1;
            syncActionPacket.ToX = ToX;
            syncActionPacket.ToY = ToY;
            syncActionPacket.SyncFlag = 1;
            syncActionPacket.UID = client.UID;

            MemoryStream syncData = new MemoryStream();
            Serializer.NonGeneric.Serialize(syncData, syncActionPacket);

            byte[] SyncBuff = syncData.GetBuffer();
            ushort SyncdataLen = (ushort)syncData.Length;
            byte[] _Buffer = new byte[SyncdataLen + 4 + 8];
            ReadWrite.WriteUInt16((ushort)(SyncdataLen + 4), 0, _Buffer);
            ReadWrite.WriteUInt16(1114, 2, _Buffer);
            Array.Copy(SyncBuff, 0, _Buffer, 4, syncData.Length);
            ReadWrite.WriteString("TQServer", _Buffer.Length - 8, _Buffer);
            client.SendToClient(_Buffer);


        }
        if (client.updateratecounter >= client.updaterate)
        {
            client.updateratecounter = 0;
        }
        else
        {
            // client.back++;
            client.updateratecounter++;
        }
        return true;

    }
    return false;
}
public void Cyclone()
{
    if (client.speedOn == false)
    {

        byte[] packet = new byte[96 + 8];
        ReadWrite.WriteUInt16(96, 0, packet);
        ReadWrite.WriteUInt16(10017, 2, packet); //packet id
        ReadWrite.WriteUInt32((uint)Environment.TickCount, 4, packet);
        ReadWrite.WriteUInt32(client.UID, 8, packet); //uid
        ReadWrite.WriteUInt32(1, 12, packet);
        ReadWrite.WriteUInt64(25, 16, packet); // Unknown
                                               //ReadWrite.WriteUInt64(client.statusflag | 1UL << 23 | 0x30bbc3, 20, packet); // flag Cyclone
        ReadWrite.WriteUInt64(client.statusflag | 1UL << 23, 20, packet); // flag Cyclone
        ReadWrite.WriteString("TQServer", packet.Length - 8, packet);
        client.SendToClient(packet);
        BotClientChat("Cyclone ON !");
        client.speedOn = true;
    }
    else
    {
        byte[] packet = new byte[96 + 8];
        ReadWrite.WriteUInt16(96, 0, packet);
        ReadWrite.WriteUInt16(10017, 2, packet); //packet id
        ReadWrite.WriteUInt32((uint)Environment.TickCount, 4, packet);
        ReadWrite.WriteUInt32(client.UID, 8, packet); //uid
        ReadWrite.WriteUInt32(1, 12, packet);
        ReadWrite.WriteUInt64(25, 16, packet); // Unknown
        ReadWrite.WriteUInt64(client.statusflag | 0, 20, packet); // flag Cyclone
        ReadWrite.WriteString("TQServer", packet.Length - 8, packet);
        client.SendToClient(packet);
        client.speedOn = false;
        BotClientChat("Cyclone OFF !");
    }

}
On that note, I would be SHOCKED if TQ never fixed this exploit.
05/26/2018 10:06 ghosfromhell#6
Quote:
Originally Posted by Spirited View Post
Formatted... example on using "code" tag:

[code]
insert your code here
[/code]


Results:

Code:
public bool NinjaFlash(ushort ToX, ushort ToY, byte jumptype, bool UpdateClient = true)
{
    // Console.WriteLine(string.Format("NinjaFlash : {0}, {1} - {2}, {3}", client.X, client.Y, ToX, ToY));

    if (Math.Max(Math.Abs(client.X - ToX), Math.Abs(client.Y - ToY)) < 16 && GUI.MapService.Valid((ushort)client.MapID, client.X, client.Y, ToX, ToY))
    {
        client.JumpDist = Math.Max(Math.Abs(client.X - ToX), Math.Abs(client.Y - ToY));

        byte[] Tail = { 0xA0, 1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1 };
        ActionPacket actionPacket = new ActionPacket();
        actionPacket.Timestamp = (uint)Environment.TickCount;

        actionPacket.UID = client.UID;
        actionPacket.ToX = ToX;
        actionPacket.ToY = ToY;
        actionPacket.ActionType = 137;
        actionPacket.ClientX = client.X;
        actionPacket.ClientY = client.Y;
        actionPacket.MapID = client.MapID;
        actionPacket.Direction = client.GetDirection(client.X, client.Y, ToX, ToY);

        MemoryStream actionData = new MemoryStream();
        Serializer.NonGeneric.Serialize(actionData, actionPacket);

        byte[] StreamBuff = actionData.GetBuffer();
        ushort dataLen = (ushort)(actionData.Length + Tail.Length);
        byte[] buffer = new byte[dataLen + 4 + 8];
        ReadWrite.WriteUInt16((ushort)(dataLen + 4), 0, buffer);
        ReadWrite.WriteUInt16(10010, 2, buffer);
        Array.Copy(StreamBuff, 0, buffer, 4, actionData.Length);
        Array.Copy(Tail, 0, buffer, 4 + actionData.Length, Tail.Length);
        ReadWrite.WriteString("TQClient", buffer.Length - 8, buffer);

        client.SendToServer(buffer);

        ActionPacketSvr actionPacketSvr = new ActionPacketSvr();
        actionPacketSvr.ClientX = ToX;
        actionPacketSvr.ClientY = ToY;
        actionPacketSvr.UID = client.UID;
        actionPacketSvr.ActionType = 156;
        actionPacketSvr.MapID = client.MapID;

        MemoryStream actionDataAvr = new MemoryStream();
        Serializer.NonGeneric.Serialize(actionDataAvr, actionPacketSvr);

        byte[] SvrBuff = actionDataAvr.GetBuffer();
        ushort SvrdataLen = (ushort)actionDataAvr.Length;
        byte[] SvrBuffer = new byte[SvrdataLen + 4 + 8];
        ReadWrite.WriteUInt16((ushort)(SvrdataLen + 4), 0, SvrBuffer);
        ReadWrite.WriteUInt16(10010, 2, SvrBuffer);
        Array.Copy(SvrBuff, 0, SvrBuffer, 4, SvrdataLen);
        ReadWrite.WriteString("TQServer", SvrBuffer.Length - 8, SvrBuffer);
        client.SendToClient(SvrBuffer);


        if (UpdateClient && client.updateratecounter >= client.updaterate)
        {

            SyncActionSvr syncActionPacket = new SyncActionSvr();
            syncActionPacket.Type = 1;
            syncActionPacket.ToX = ToX;
            syncActionPacket.ToY = ToY;
            syncActionPacket.SyncFlag = 1;
            syncActionPacket.UID = client.UID;

            MemoryStream syncData = new MemoryStream();
            Serializer.NonGeneric.Serialize(syncData, syncActionPacket);

            byte[] SyncBuff = syncData.GetBuffer();
            ushort SyncdataLen = (ushort)syncData.Length;
            byte[] _Buffer = new byte[SyncdataLen + 4 + 8];
            ReadWrite.WriteUInt16((ushort)(SyncdataLen + 4), 0, _Buffer);
            ReadWrite.WriteUInt16(1114, 2, _Buffer);
            Array.Copy(SyncBuff, 0, _Buffer, 4, syncData.Length);
            ReadWrite.WriteString("TQServer", _Buffer.Length - 8, _Buffer);
            client.SendToClient(_Buffer);


        }
        if (client.updateratecounter >= client.updaterate)
        {
            client.updateratecounter = 0;
        }
        else
        {
            // client.back++;
            client.updateratecounter++;
        }
        return true;

    }
    return false;
}
public void Cyclone()
{
    if (client.speedOn == false)
    {

        byte[] packet = new byte[96 + 8];
        ReadWrite.WriteUInt16(96, 0, packet);
        ReadWrite.WriteUInt16(10017, 2, packet); //packet id
        ReadWrite.WriteUInt32((uint)Environment.TickCount, 4, packet);
        ReadWrite.WriteUInt32(client.UID, 8, packet); //uid
        ReadWrite.WriteUInt32(1, 12, packet);
        ReadWrite.WriteUInt64(25, 16, packet); // Unknown
                                               //ReadWrite.WriteUInt64(client.statusflag | 1UL << 23 | 0x30bbc3, 20, packet); // flag Cyclone
        ReadWrite.WriteUInt64(client.statusflag | 1UL << 23, 20, packet); // flag Cyclone
        ReadWrite.WriteString("TQServer", packet.Length - 8, packet);
        client.SendToClient(packet);
        BotClientChat("Cyclone ON !");
        client.speedOn = true;
    }
    else
    {
        byte[] packet = new byte[96 + 8];
        ReadWrite.WriteUInt16(96, 0, packet);
        ReadWrite.WriteUInt16(10017, 2, packet); //packet id
        ReadWrite.WriteUInt32((uint)Environment.TickCount, 4, packet);
        ReadWrite.WriteUInt32(client.UID, 8, packet); //uid
        ReadWrite.WriteUInt32(1, 12, packet);
        ReadWrite.WriteUInt64(25, 16, packet); // Unknown
        ReadWrite.WriteUInt64(client.statusflag | 0, 20, packet); // flag Cyclone
        ReadWrite.WriteString("TQServer", packet.Length - 8, packet);
        client.SendToClient(packet);
        client.speedOn = false;
        BotClientChat("Cyclone OFF !");
    }

}
On that note, I would be SHOCKED if TQ never fixed this exploit.
thnx Spirited
but would explain you last line you said
is that means this method cannot work anymore ?
if thats the case then how about the string "spdup" is it still available to be called this function from the client ?
05/26/2018 19:25 Spirited#7
Quote:
Originally Posted by ghosfromhell View Post
thnx Spirited
but would explain you last line you said
is that means this method cannot work anymore ?
if thats the case then how about the string "spdup" is it still available to be called this function from the client ?
I know the string is definitely gone just from word of mouth. They stripped that from the client all together. The ninja step thing has been a very known way to get around the client, but I'd be shocked if they never fixed that. It's such an easy thing to fix. You can try... but I don't think people have been successful with it.
05/27/2018 09:10 ghosfromhell#8
Quote:
Originally Posted by Spirited View Post
I know the string is definitely gone just from word of mouth. They stripped that from the client all together. The ninja step thing has been a very known way to get around the client, but I'd be shocked if they never fixed that. It's such an easy thing to fix. You can try... but I don't think people have been successful with it.
thanks spirited
if i may ask
do you know any working method for speedhack ?
i would appreciate any kind of help because im now holding on the speedhack since all my bot works but speedhack only
05/27/2018 10:12 Spirited#9
Quote:
Originally Posted by ghosfromhell View Post
thanks spirited
if i may ask
do you know any working method for speedhack ?
i would appreciate any kind of help because im now holding on the speedhack since all my bot works but speedhack only
No. I only repeat what I've seen repeated in the community. I don't make bots, and never will.
Botters ruin games.