Isn't needed, they do not update the send function only the features.. because there's not yet been any packetbot again, they will remain stucking on the same send function. and this function just grabs the packet ID based on this it decrypt/encrypt's the packet, still it is the same mechanism as before, but no strings anymore, but bytearray's..Quote:
Of course it's possible to do it. But after every BP update, you have to synchronize your protocol with the SeafightMain changes and that is just too much work.
O I bet there's in the swf a sort of array which contains the so called new "PacketID's" so a grabber is not hard to make for that..Quote:
The packet ID is the problem.
It always changes. There is no algorithm to know which packet ID means what.
You could update the packet ID with protocol analyzing after every BP update, but as I said.. too much work in my opinion.
Well you do.. u can sniff them, and create a packet decrypter with the encrypt/decrypt function of the swf, then look what is what and get the ID etc. then if there's an update u can compare the old one on the same place of the new one, and you know the ID's to..Quote:
So you've got an array like
1937, 3874, 443, 3455, 5354, 3245, 232, ...
And now?
The problem is, that you do not know, which ID represents which type of message.
You can try to suggest but in the end, you need to analyze.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace wBot___SeafightEdit.Utilities
{
public class IncomingBotResponse
{
public byte[] arr;
public IncomingBotResponse(byte[] iArray)
{
try
{
if (BitConverter.IsLittleEndian)
Array.Reverse(iArray);
arr = iArray;
}
catch { }
}
#region "readInt32"
public Int32 readInt32()
{
return BitConverter.ToInt32(arr, 0);
}
public Int32 readInt32(int ofs)
{
return BitConverter.ToInt32(arr, ofs);
}
#endregion
#region "readShort"
public short readShort()
{
return BitConverter.ToInt16(arr, 0);
}
public short readShort(int ofs)
{
return BitConverter.ToInt16(arr, ofs);
}
#endregion
#region "readString"
public String readString()
{
return BitConverter.ToString(arr, 0);
}
public String readString(int ofs)
{
return BitConverter.ToString(arr, ofs, arr.Length);
}
#endregion
#region "readBool"
public Boolean readBool()
{
return BitConverter.ToBoolean(arr, 0);
}
public Boolean readBool(int ofs)
{
return BitConverter.ToBoolean(arr, ofs);
}
#endregion
#region "readDouble"
public Double readDouble()
{
return BitConverter.ToDouble(arr, 0);
}
public Double readDouble(int ofs)
{
return BitConverter.ToDouble(arr, ofs);
}
#endregion
}
}
Let the packet IDs change - the code that generates each single packet will stay the same, even obfuscated.Quote:
The packet ID is the problem.
It always changes. There is no algorithm to know which packet ID means what.
You could update the packet ID with protocol analyzing after every BP update, but as I said.. too much work in my opinion.
AgreeQuote:
Let the packet IDs change - the code that generates each single packet will stay the same, even obfuscated.
Since you can be sure that they have a script that randomizes (?) the packet IDs, you can do the same thing in reverse automatically too. A small script that knows the code that generates each packet and extracts its ID then. It doesn't even have to understand the AS3 code for that, just some Regex.
That doesn't exactly require black magic or alot of work :rolleyes:
...Quote:
Let the packet IDs change - the code that generates each single packet will stay the same, even obfuscated.
Since you can be sure that they have a script that randomizes (?) the packet IDs, you can do the same thing in reverse automatically too. A small script that knows the code that generates each packet and extracts its ID then. It doesn't even have to understand the AS3 code for that, just some Regex.
That doesn't exactly require black magic or alot of work :rolleyes: