Ну, возьмем например пакет 0089 (сервер тайп 8 ).
В клиенте выглядит так(несколько, идущих друг за другом пакетов):
В боте так:89 00 36 00 47 3F 8C 02
89 00 35 00 2E 6E 8C 02
89 00 61 00 22 9D 8C 02
89 00 61 00 08 CC 8C 02
89 00 63 00 F0 FA 8C 02
Вот функция, которая формирует этот пакет:89 00 00 00 99 F0 0B 03
89 00 00 00 8B 1F 0C 03
89 00 00 00 72 4E 0C 03
89 00 00 00 6D 7D 0C 03
89 00 00 00 5B AC 0C 03
Т. е. мы видим, что в клиенте на этом месте цифры постоянно меняются, а в боте жёстко прописано нулями.sub sendSync {
my ($self, $initialSync) = @_;
my $msg;
# XKore mode 1 lets the client take care of syncing.
return if ($self->{net}->version == 1);
$syncSync = pack("V", getTickCount());
$msg = pack("C*", 0x89, 0x00, 0x00, 0x00);
$msg .= $syncSync;
$self->sendToServer($msg);
debug "Sent Sync\n", "sendPacket", 2;
}
Ну и вопрос: какого хрена?
Если так жёстко задано, то значит эта часть пакета не используется, и там просто мусор? Или клиент это использует, а бот нет? Или там какая-то содержательная инфа, но она пока на стороне сервера не обрабатывается? Или обрабатывается, но бот на это плюёт?
Просто я тут задумался, как антиботы могут определять бота, и решил глянуть на пакеты.
Ну и если там таки мусор, то можно туда прописать что-нибудь своё? Скажем вместо нулей что-нить другое?