PDA

Просмотр полной версии : OutGame Бот на ПакеХак!


ChiterEPT
18.01.2008, 03:19
Так появилась идея сделать ОГ с помощью ПакетХака. Заходим в игру клиентом потом ПКХ отсылает клиенту пакет 7Е ( подтвердить выход) результат: клиент выходит из игры, но чар все еще в игре. Проблема: клиент разрывает соединение с сервером и Пакет Хак тупо зависает =( Вопрос: есть ли способ "заставить" ПКХ не разрывать соединение?

P.S Если тема уже обсуждалас на форуме, а скорее всего обсуждалась, прошу простить и указать на тему так, как абсолютно нет времни искать. Заранее Спасибо Всем.

QaK
18.01.2008, 10:27
Можно =) только исходный код править надо ... без этого никак.

Добавлено спустя 1 минуту 10 секунд:
Кстати тема интересная, давно хочу, но времени совсем нет, ща на работе амба ...

Добавлено спустя 1 час 48 минут 11 секунд:
Просто для ОГ бота нужно учитывать периодиччески еприходящий пакеты NetPing - на них надо обязательно слать ответ, плюс когда двигаешься - Validate position надо высчитывать координаты, ну и разные другие пакеты ... в общем ньюансов много =) давай раскручивай идею ... помогу чем смогу.

ChiterEPT
19.01.2008, 02:36
Ну с НетПингом вроде все понятно... (на ява серверах его вообще нет :) ) В ответном пакете клиент посылает 4 байта пришедшие от сервера плюс что то от себя (помоему 6 байтов ) в основном нули кроме первого из шести байтов. Ща буду тестить отпишу результаты позже...

Сейчас основная проблема это соединение. С исходником врядли разберусь, не программист, а так, самоучка. QaK давай так я пока с НетПингом и ВалидатПозишном поколдую, а ты как будет время глянь исходники ( вообще идея реализуемая или "большой геморой) :)

Добавлено спустя 47 минут 55 секунд:
Вот пара НетПинг Запрос и Ответ
D3 C9 28 91 47
A8 C9 28 91 47 0C 01 00 00 99 05 00 00

Подозреваю что последние 8 байт это время ...
Написал такой скрипт

var
bytes: integer;
begin
if FromClient and (pck[1]=#$A8) then begin
pck:='';
end;
if FromServer and (pck[1]=#$D3) then begin
Bytes:=ReadD(2);
buf:=#$A8;
WriteD(Bytes);
WriteD(363);
WriteD(1433);
SendToServer;
end;
end.
По идее перехватывает пинги клиента и посылает свои где последние 8 байт посылаются постоянно те же.
Если скрипт рабочий - то эти 8 байт не играют никакой роли.

QaK
19.01.2008, 10:10
ВалидатПозишном поколдую
Где-то на форуме Программинг это уже было ...а ты как будет время глянь исходники ( вообще идея реализуемая или "большой геморой)
Вообще идея реализуема, но в данный момент, для меня это "большой геморрой". Я просто еще в топике "Дешифрируем трафик", обитаю пока, проблема не решена, но если что - отпишу тебе ок?

ChiterEPT
19.01.2008, 21:02
[quote=АрхиНуб]ВалидатПозишном поколдую
Где-то на форуме Программинг это уже было ...а ты как будет время глянь исходники ( вообще идея реализуемая или "большой геморой)
Вообще идея реализуема, но в данный момент, для меня это "большой геморрой". Я просто еще в топике "Дешифрируем трафик", обитаю пока, проблема не решена, но если что - отпишу тебе ок?[/quote:aea55]

Да мне обсолютно не к спеху(я сам не играю просто люблю всякие идейки реализовывать), я пока почитаю раздел програминг.

Если в чем-нибудь продвинусь отпишу.

QaK
21.01.2008, 09:00
я сам не играю просто люблю всякие идейки реализовывать
:beer: :friends:

skymanrus
22.01.2008, 16:57
по моему идея ont бота конечно замечательная НО!

Но факты показывают что в сегодняшней версии пакетхака это сделать мягко говоря трудновато :(
я попытался слеоать IN game бота на пакет хаке и по началу все вроде получалось но когда скрипт перевалил за 500 строк бот начал существенно тормозить а в игре начались страшные лаги в результате меня иногда просто убивали из за лаг которые возникали из за маленькой скорости выполнения скриптов в пакет хаке.
я попытался оптимизировать бота и сделал так чтоб бот не выполнял холостых циклов, уменьшил массив с данными мобов до 20 ячеек но это все не помогло :(
таким образом даже если и написать скрипт полностью работающего out game бота в одном пакет хаке он будет так зверски лагать игру что никто не согласится его использовать включая самого разработчика :(

выход есть конечно - это подключение внешней библиотеки dll к пакетхаку и перенаправление всех пакетов туда для последующей обработки и посылки на сервер через тот же пакет результирующих пакетов.
все казалось бы очень просто и в пакет хаке существует даже такая замечательная и соблазнительная функци loadLibrary(); которая подгружает внешние dll НО!

Опять это "НО"... но функция loadLibrary(); мягко говоря очень странно работает... она прекрасно работает с библиотеками от майкрософта которые есть в винде типа User32.dll и GDI32.dll но все те библиотеки которые я писал в делфи и си++ пахать категорически не желают :(
(хотя те же дллки ПРЕКРАСНО РАБОТАЮТ В WPP! )

лично я вижу тут только 1 реальный выход это дождаться новой версии пакет хака где дллки будут нормально пахать
(что собственно я щас и делаю :) )
если вы видите ещё какие то альтернативы кроме того как перейти на WPP то буду рад выслушать ваше мнение :)

QaK
22.01.2008, 17:24
дождаться новой версии пакет хака
А мы не будем сидеть сложа ручки, а будем писать алгоритмы,тестировать их, чтобы их потом просто в дллку запихать =)

skymanrus
22.01.2008, 18:37
написать алгоритм эт конечно возможно но вот протестировать его будет сложнова то по причинам описанным выше.
а без тестирования невозможно выявить баги и глюки в коде...

поэтому я лично не смог ничего толком протестировать когда все начинает лагать... и через 20 секунд ты видиш что чар умер не понятно по каким причинам :(

и кстати у меня появились сомнения относительно того возможно ли вообще создать out бота на пакетхаке так как я тут почитал как пакет хак работает и так понял что он подключается к определённому ЗАГРУЖЕННОМУ в память процессу с помощью библиотеки inject.dll и стоит только завершить этот процесс как перехват и отправка пакетов станет навозможным :(

и все что можно сделать это просто кастрировать ла2 до минимума так чтоб она хотя бы загружалась и посылала и отправляла пакеты :)
я кстати этим уже занимался в результате исчесли все деревья и замки, текстуры есть ещё возможность скрыть мобов и людей но тестировать скрипты тогда проблематично :)

QaK
22.01.2008, 20:40
skymanrus, дели прогу на модули и тестируй отдельно каждый модуль... например отдельно мониторинг чаров, отдельно мониторинг статов своего перса, отдельно инвентарь, работа с НПЦ и т.д.

Добавлено спустя 4 минуты 38 секунд:
когда все начинает лагать
Гмм, я сделал скрипт для пвп сервака, который показывает профу, заточенность пухи и автоматом хавает ЦП и МП+весь инвентарь - не лагает, хотя машиинка слабенькая ...

skymanrus
22.01.2008, 22:01
да уже вопрос с быстродействием решился :))
я тут заметил что новая версия 19 вышла пакет хака скачал протестил и там оказывается все мои dll отлично пашут ! :))

Гмм, я сделал скрипт для пвп сервака, который показывает профу, заточенность пухи и автоматом хавает ЦП и МП+весь инвентарь - не лагает, хотя машиинка слабенькая ...

ну я думаю там было меньше 500 строк :))
у меня тоже на двухядерном проце с 2 гигами оперативки не тормозил скрипт в 400 строк :) а после добавления таблицы с идами нпц начались лаги..

в общем я продолжу свои разработки :)
а на счет out game я все же считаю что это пока невыполнимо...

ChiterEPT
23.01.2008, 00:53
и все что можно сделать это просто кастрировать ла2 до минимума так чтоб она хотя бы загружалась и посылала и отправляла пакеты :)
я кстати этим уже занимался в результате исчесли все деревья и замки, текстуры есть ещё возможность скрыть мобов и людей но тестировать скрипты тогда проблематично :)
Кстати отправлял ПакетХаком клиенту пакеты на рестарт клиент переходит на окно выбора чаров (соединение не разрывается) а чар остается в игре (не пробовал правда работают ли скрипты, времени нет щас, но по идее должны) думаю это самый хороший способ "кастрировать" клиент.

Добавлено спустя 5 минут 29 секунд:

и кстати у меня появились сомнения относительно того возможно ли вообще создать out бота на пакетхаке так как я тут почитал как пакет хак работает и так понял что он подключается к определённому ЗАГРУЖЕННОМУ в память процессу с помощью библиотеки inject.dll и стоит только завершить этот процесс как перехват и отправка пакетов станет навозможным :(


Этого я и боялся... тогда легче уже другую программку написать чем переделывать ПакетХак, так как переделывать придется ОЧЕНЬ МНОГО.

skymanrus
23.01.2008, 00:59
а соединение и НЕ должно разрыватся :D
с того момента как вы ввели логин и пароль и нажали энтер пакет хак получает полный доступ к игре и может с помощью скриптов сам дальше выбрать игровой сервер, чара и т.д..
дело в другом:
когда процесс ла2 завершается пакет хаку не к чему подключаться и некуда отправлять пакеты

ChiterEPT
23.01.2008, 02:47
а соединение и НЕ должно разрыватся :D
с того момента как вы ввели логин и пароль и нажали энтер пакет хак получает полный доступ к игре и может с помощью скриптов сам дальше выбрать игровой сервер, чара и т.д..
дело в другом:
когда процесс ла2 завершается пакет хаку не к чему подключаться и некуда отправлять пакеты
А я о чем??? Просто предложил способ "кастрирования" сервера, думаю в окне выбора персонажа клиент потребляет меньше ресурсов чем в игре.

QaK
23.01.2008, 10:30
ну я думаю там было меньше 500 строк )
Да как сказать ....завершается пакет хаку не к чему подключаться и некуда отправлять пакеты
Неа =) Для этого и приспособлена версия 9я версия =)

Добавлено спустя 4 часа 25 секунд:
Чето я никак вкурить не могу, откуда в нетпинг от клиента берутся 8 последних байт(2 числа по 4 байта)?С какого потолка их берут?

boyan
23.01.2008, 11:23
Кстати отправлял ПакетХаком клиенту пакеты на рестарт клиент переходит на окно выбора чаров (соединение не разрывается) а чар остается в игре (не пробовал правда работают ли скрипты, времени нет щас, но по идее должны) думаю это самый хороший способ "кастрировать" клиент.
таким способом делаются клоны чаров.. =)

skymanrus
23.01.2008, 11:48
Просто предложил способ "кастрирования" сервера, думаю в окне выбора персонажа клиент потребляет меньше ресурсов чем в игре.

я так понял что вы хотите как то так загрузить бота чтоб при этом в клиенте ла2 оставалось окно выбора чаров :)
дело в том что как только вы пошлёте клиенту пакет на запрос входа в мир клиент сам тут же начнёт грузить игру
ну в общем если у вас действительно что то получится то я буду только рад :)
но чесно говоря пока в это не верю...

просто попробуйте во время того как клиент игры отсутствует в процессах или находится на стадии выбора персонажа послать серверу пакет на передвижение чара и получить какие то ответы от серва. у меня лично ничего из этого не получилось

QaK
23.01.2008, 12:55
skymanrus, тормозишь =) (не в обиду), просто посылать пакет выбора персонажа серверу. а клиенту вообще ничего не посылать - все на корню срубить, чтоб траф до клиента не доходил. И вообще закрыть нах клиент =)

skymanrus
23.01.2008, 14:44
только что попробывал ваш метод :
гружу клиент с пакетхаком вместе с WPP затем как только мир загружается ставлю галку в WPP на out proxy и указываю ип ведущий в никуда тоесть посылаю все пакеты загруженного клиента на прокси которго не существует в результате соединение обрывается и пакет хак просто перестаёт получать пакеты

2 вариант попробывал
гружу клиент с пакет хаком опять жду загрузки мира потом в фаерволле запрещаю процесу l2.exe посылать и принимать пакеты в резульате тот же повисший в недоумении пакетхак не принимающий пакеты..

я могу сделать из этого только 1 вывод:
пакет хак и клиент ла2 взаимосвязанны! пакет хак сам НЕ ПОСЫЛАЕТ И НЕ ПРИНИМАЕТ ПАКЕТЫ! все происходить только через процесс l2.exe и если блокировать для этого процесса какую то часть траффика то он автоматически блокируется и для пакет хака

короч я не понимаю сути :) видимо внатуре торможу.. :D

QaK
23.01.2008, 15:20
короч я не понимаю сути видимо внатуре торможу..
skymanrus, бывает домой приеду - попробую навалять простенький скрипт с коментами, пока занят ...

skymanrus
23.01.2008, 15:41
ок! мне будет очень интересно на это взглянуть :)

xkor
23.01.2008, 16:11
я могу сделать из этого только 1 вывод:
пакет хак и клиент ла2 взаимосвязанны! пакет хак сам НЕ ПОСЫЛАЕТ И НЕ ПРИНИМАЕТ ПАКЕТЫ! все происходить только через процесс l2.exe и если блокировать для этого процесса какую то часть траффика то он автоматически блокируется и для пакет хака
ну если так сложно понять принцип работы пакетхака то поесню:
пакетхак инжектит свою длл в процесс от которого надо перехватить трафик, далее эта длл ставит хук на вызов connect и при её вызове подменяет адрес сервера локальным адресом пакетхака, в результате клиент конектится к пакетхаку а не серверу а уже пакетхак при приёме коннекта конектиться к серверу адрес которого ему был прислан от длл, далее пакетхак принимает пакеты от клиента/сервера, дешифрует, пропускает через скрипты, шифрует и отправляет получателю, тоесть серверу/клиенту
таким образом при отправке пакетов скриптом впринципе нужно чтоб пакетхак был соединён только с тем кому адресован пакет буть то клиент или сервер, однака до последней версии пакетхак в обязательном пакете рвал оба соединения (и с клиентом и с сервером) при обрыве одного из них
теперь же выполнив в скрипте одну из 4х новых процедур можно включить/выключить закрытие соединений в случае закрытия одного из них, так что если отправить клиенту пакет о выходе предварительно вызвав процедуру отключения закрытия соединений при обрыве соединения с клиентом то далее клиент можно спокойно отключать или делать с ним что угодно а пакетхак с всеми скриптами продолжит принимать пакеты от сервера и применять к ним скрипты

skymanrus
23.01.2008, 16:49
:shock: я в шоке ! :shock:
признаю я нуб :oops: :ROFL:

а можно скрипт увидить который будет проводить
процедуру отключения закрытия соединений и посылать клиенту пакет о выходе чтоб потом можно было просто процесс l2.exe убить?
на форуме просто нету ещё ни одного примера с использованием этих новых 4 процедур

NLObP
23.01.2008, 17:42
Вау!!! Супер!!! Клиент будет нужен только для выбора чара, и можно прощаться с ним! :D

xkor
23.01.2008, 18:35
а можно скрипт увидить который будет проводить
процедуру отключения закрытия соединений и посылать клиенту пакет о выходе чтоб потом можно было просто процесс l2.exe убить?
на форуме просто нету ещё ни одного примера с использованием этих новых 4 процедур
мне счас некогда, надо курсач доделывать, а так я даж ещё не проверял работу этих процедур))

skymanrus
23.01.2008, 19:14
:)
ну я тут попытался их вызвать по нубски типа
procedure NoFreeOnClientDisconnect;
begin
end;

не пашет :(
пишет Ошибка: identifer redeclared 'NoFreeOnClientDisconnect' :cry:

Добавлено спустя 34 минуты 15 секунд:
КОРОЧЕ ЛЮДИ Я В ШОКЕ!!! :shock: :shock: :shock: !!

только что забацал в новой версии такой вот скриптик
begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;

if FromClient and (pck[1]=#$1B) and (ReadD(2)=6) then
begin
buf:=#$38;
WriteS('Hello');
WriteD(0);
SendToServer;
end;
end.

короч скажу все по порядку вначале загрузил клиент затем грузанул пакет хак зашёл в мир и начал на галочку рядом с этим скриптиком,
скриптик сказал хеллоу когда я нажал YES затем я просто нажал выйти из игры в клиенте и посмотрел на окно пакетхака
а ОН ПРОДОЛЖАЕТ ЛОВИТЬ ПАКЕТЫ !!! И ПАКЕТЫ МОЖНО ДАЖЕ ПОСЫЛАТЬ!!! :shock:
никакие netPING'и пакетхак не останавливают !!!!
и можно вообще о них забыть !
просто наслаждаться !

СПАСИБО xkor !!!! :Yahoo!: :Yahoo!:

короч я в OUT game сижу щас :)

QaK
23.01.2008, 21:59
никакие netPING'и пакетхак не останавливают !!!!
посиди подольше - остановят =)

skymanrus
23.01.2008, 22:04
сидел пол часа :) не остановили
хз мож сервак такой ... :))

ChiterEPT
23.01.2008, 22:59
Кстати отправлял ПакетХаком клиенту пакеты на рестарт клиент переходит на окно выбора чаров (соединение не разрывается) а чар остается в игре (не пробовал правда работают ли скрипты, времени нет щас, но по идее должны) думаю это самый хороший способ "кастрировать" клиент.
таким способом делаются клоны чаров.. =)

Знаю :wink: Но сейчас это уже нигде неканает :cry:

Добавлено спустя 5 минут 52 секунды:
Re:

ну если так сложно понять принцип работы пакетхака то поесню:
пакетхак инжектит свою длл в процесс от которого надо перехватить трафик, далее эта длл ставит хук на вызов connect и при её вызове подменяет адрес сервера локальным адресом пакетхака, в результате клиент конектится к пакетхаку а не серверу а уже пакетхак при приёме коннекта конектиться к серверу адрес которого ему был прислан от длл, далее пакетхак принимает пакеты от клиента/сервера, дешифрует, пропускает через скрипты, шифрует и отправляет получателю, тоесть серверу/клиенту
таким образом при отправке пакетов скриптом впринципе нужно чтоб пакетхак был соединён только с тем кому адресован пакет буть то клиент или сервер, однака до последней версии пакетхак в обязательном пакете рвал оба соединения (и с клиентом и с сервером) при обрыве одного из них
теперь же выполнив в скрипте одну из 4х новых процедур можно включить/выключить закрытие соединений в случае закрытия одного из них, так что если отправить клиенту пакет о выходе предварительно вызвав процедуру отключения закрытия соединений при обрыве соединения с клиентом то далее клиент можно спокойно отключать или делать с ним что угодно а пакетхак с всеми скриптами продолжит принимать пакеты от сервера и применять к ним скрипты
что сказать ... БРАВО ... :Bravo: :Bravo: :Bravo:
Вопрос о создании OutGame бота отпал сам собой. Хкор :good: :friends: :beer:

downtester
27.01.2008, 02:48
Сейчас сделал 2 окна + 2 скриптика (200 строк каждый) с функциями
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
затем закрыл окна.
если проработает ночь, то все гуд и Xkor КРАСАВЧЕГ!

PS Натыкал этих функций во все дыры скрипта , может можно как то обойтись всего 2 строчками?

skymanrus
27.01.2008, 12:43
можно и даж нужно их писать только в главный begin который исполняется когда приходит какой то пакет с сервераbegin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;


end.

и больше никуда их вставлять не надо!

xkor
27.01.2008, 16:30
можно и даж нужно их писать только в главный begin который исполняется когда приходит какой то пакет с сервера
насамом деле их достаточно пихнуть в:
procedure OnConnect(WithClient: Boolean);
begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
end;

яж не просто так это событие сделал)
а то вызывать их при приходе каждого пакета как то расточительно)

ChiterEPT
28.01.2008, 18:17
Одного я так и недопонял зачем писать обе строчки ?? Нам ведь нужно чтоб не разрывалось соединение когда клиент отрубается... то есть NoFreeOnClientDisconnect; должно хватать. Зачем нам работа скрипта если скажем сервер отрубился ???

Добавлено спустя 1 минуту 26 секунд:
И еще. Хкор работают ли эти навороты в скрытом режиме работы ПакетХака, и если незатруднит в двух словах о разнице между режимами.

xkor
28.01.2008, 19:16
Одного я так и недопонял зачем писать обе строчки ?? Нам ведь нужно чтоб не разрывалось соединение когда клиент отрубается... то есть NoFreeOnClientDisconnect; должно хватать. Зачем нам работа скрипта если скажем сервер отрубился ???
ну на самом деле работать будет и так:procedure OnConnect(WithClient: Boolean);
begin
if WithClient then NoFreeOnClientDisconnect;
end;и так даже правильнее... (хотя я не на 100% уверен что WithClient будет верно, ибо не тестил сам)
И еще. Хкор работают ли эти навороты в скрытом режиме работы ПакетХака, и если незатруднит в двух словах о разнице между режимами.режимы на работу невлияют никак, они влияют тока на способ внедрения библиотеки осуществляющей перенаправление трафика на пакетхак, если трафик перехватывается то работает всё)

ChiterEPT
28.01.2008, 21:23
Так родился вопрос. Допустим поюзали ОутГаме Бота и хотим выйти ... а хрен :) Короче, как отменить\выключить этот NoFreeOnClient\ServerDisconnect ? Хкор есть такая процедура типа FreeOnClientDisconnect ?

xkor
28.01.2008, 22:43
Так родился вопрос. Допустим поюзали ОутГаме Бота и хотим выйти ... а хрен :) Короче, как отменить\выключить этот NoFreeOnClient\ServerDisconnect ? Хкор есть такая процедура типа FreeOnClientDisconnect ?
блин ну что сложно залезть в прекреплённую тему со списком всех встроенных функций и не задавать глупых вопросов???

ChiterEPT
28.01.2008, 23:10
Та вроде смотрел, но чет не заметил в прошлый раз :unknown: Ну извини за глупый вопрос :crazy:

29.03.2008, 23:42
Насколько я понимаю Отгейм бот через пакет хак есть желания создать по двум причинам:
1 Так как обычный валкер палится на многих серверах антиботовой системой
2 ПРи написание бота на пакетхаке мы получим полное раздолье в настройки и способах управления чаром(тоесть мы сможен реализовывать те скррипты который не предусмотренный в валкере вообще)

Исходя из этих соображений вытикает следующие:
Зачем изобретать велосипед есле он уже изобретен? Ведь чтобы выполнить эти два условия не нада придумывать как автономно запускать пакет хак. Нам всеволишь необходимо запустить валкера через него и мы убиваем сразу двух зайцев. А в частности при помощи крипнов мы сможем блокировать или посылать ключивые пакеты серверу(тоесть маскировать наш валкер под клиент) и приэтом некто не заприщает про вписать еще и скрипты.

Вобщем вывод получается таким:
Все сводится к одной непростой задачи: узнать каким именно способо система анти бота на конкретном(в каждом случаи) палит валкера. Вот в принцепи и все

P.S. Я вполне возможно и неправ поправте есле у вас есть какаята другая мысль по этому поводу.

QaK
03.04.2008, 08:43
Простите нуба=) не в тот раздел написал=))
=) Да ниче, бывает =) Скрипты на первой странице выложены (почти все) - топик "Да будет бот".

poizon
06.05.2008, 20:18
интересно продолжить тему
на счёт
procedure OnConnect(WithClient: Boolean);
begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
end;

понятно, но клиент посылает серверу нетпинг каждую минуту, надо както сделать скрипт который будет эмулировать этот нетпинг.
как расшифровывается пакет нетпинга?
Tип: 0xA8 (NetPing)
Pазмер: 13+2

A8 5E 74 20 48 0A 00 00 00 99 05 00 00 19:08:23:750
A8 9A 74 20 48 15 00 00 00 99 05 00 00 19:09:23:843
A8 D6 74 20 48 15 00 00 00 99 05 00 00 19:10:24:046
A8 12 75 20 48 15 00 00 00 99 05 00 00 19:11:24:187
A8 4F 75 20 48 15 00 00 00 99 05 00 00 19:12:25:015


нарыл такую информацию

[3148] C>s 0ms. 19:39:30
-------------------------------------------------------------------------------
TType: LA2 Server: GS1 ParseType: 2 (auto) EnCode: DT2 KT2 (auto)
------- 0 1 2 3 4 5 6 7 - 8 9 A B C D E F -------------------
000000 0F 00 A8 A8 7B 20 48 14 | 00 00 00 99 05 00 00 ..ЁЁ{ H....™...
-------------------------------------------------------------------------------
LA2: "NetPing" size: 15 prot: 750 $2EE
Addr: Size: Type: Description: Value:
0000 2 word psize 15 | $000F
0002 1 byte ID 168 | $A8 'Ё'
0003 4 integer kID 1210088360 | $48207BA8
0007 4 integer PING 20 | $00000014
000B 4 integer dta 1433 | $00000599

короче пример

сервер посылает клиенту

D3 B8 7A 20 48

где

D3 byte ID 211
B8 7A 20 48 integer kID 1210088120

что за к айди незнаю ... но он одинаковый у пакета от клиента и к клиенту, может ид сессии пинга?

далее ответ клиента -

A8 B8 7A 20 48 15 00 00 00 99 05 00 00

где

A8 1 byte ID 168
B8 7A 20 48 4 integer kID 1210088120
15 00 00 00 4 integer PING 21
99 05 00 00 4 integer dta 1433

короче Кид одинаковое
15 00 00 00 - это пинг 21 мс

а вот что за 99 05 00 00 4 integer dta 1433
незнаю...

короче походу в конце всегда 99 05 00 00

так вот мои домыслы красным отмечено то что для всех пакетов остаётся одинаковым(наверное)

запрос на пинг от сервера с айди пинга B8 7A 20 48
D3 B8 7A 20 48


ответ клиента на этот пинг (сессия B8 7A 20 48)

A8 B8 7A 20 48 15 00 00 00 99 05 00 00

пинг = 15 00 00 00 (21 мс)

и вроде получается 99 05 00 00 в конце ставится эта последовательность почемуто (у кого какие догадки)

слушайте я не понял как пинг работает вообще...
сервак отсылает клиенту пакет а клиент почемуто пишет в пакет время отклика и отсылает серверу?? а как КЛИЕНТ интересно узнал время своего пинга до сервака если запрос сервер посылает??

люди обьясните и может есть идеи по поводу наброски простейшего скрипта который имитирует нет пинг ??

ad01f
06.05.2008, 21:52
Насколько я понимаю Отгейм бот через пакет хак есть желания создать по двум причинам:
1 Так как обычный валкер палится на многих серверах антиботовой системой
2 ПРи написание бота на пакетхаке мы получим полное раздолье в настройки и способах управления чаром(тоесть мы сможен реализовывать те скррипты который не предусмотренный в валкере вообще)

Исходя из этих соображений вытикает следующие:
Зачем изобретать велосипед есле он уже изобретен? Ведь чтобы выполнить эти два условия не нада придумывать как автономно запускать пакет хак. Нам всеволишь необходимо запустить валкера через него и мы убиваем сразу двух зайцев. А в частности при помощи крипнов мы сможем блокировать или посылать ключивые пакеты серверу(тоесть маскировать наш валкер под клиент) и приэтом некто не заприщает про вписать еще и скрипты.

Вобщем вывод получается таким:
Все сводится к одной непростой задачи: узнать каким именно способо система анти бота на конкретном(в каждом случаи) палит валкера. Вот в принцепи и все

P.S. Я вполне возможно и неправ поправте есле у вас есть какаята другая мысль по этому поводу.

саурон такое в свое время делал, не знаю закончил ли, после прихода нового долбоеба-админа на АЧ сидеть желание отпало) если я правльно понял задумку это прокатит только когда антибот палит только логин а не всеь игровой процесс. насчет того зачем использовать пакетхак и скрипты вместо бота - можно сделать мини ОГ бота торговца, или рыбака. посколько ему не надо двигаться не бует гемора с валидейт позишен..
выставить на шару с хайдом
хайд тупая фишка - только для накрутки посещаемости

poizon
06.05.2008, 23:06
корче это походу невозможно , вычислять какимто фантастическим ообразом число пинга и посылать его.
кто знает секрет как вычислить пинг для отправки его пакетом а8

NLObP
07.05.2008, 01:28
корче это походу невозможно , вычислять какимто фантастическим ообразом число пинга и посылать его.
кто знает секрет как вычислить пинг для отправки его пакетом а8

В теме вроде уже предлагали, посмотреть, что шлет клиент в NetPing'е, запомнить, отключить клиент и слать самому.

PS:
На Абиссе при тесте скрипта рыбалки отключал клиент без посылки NetPing. Скрипт продолжал ловить дальше, ломался только тогда, когда начинал передвигаться. Из-за того только, что не было пакетов ValidatePosition для проверки местаположения. Думаю если самим считать координаты, то все будет работать.

poizon
07.05.2008, 01:56
NLObP, ну посмотреть тоя уже насмотрелся, но клинт ведь какимто образо вычисляет реальное число пинга, значит его можо и так вычислить а просто поддельные числа слать тоже вариант но не идеальный всётаки....я думал что может както просто можно вычислять сам пинг реальный.а с ValidatePosition делали опыты какие? я завтра посмотрю этот пакет скрипт я думаю просто будет написать, причём лучше мне кажется сделать как отдельный скрипт, как надстройка к любому скрипту, типа запускаешь его он тебе и нет пинг и валидпозишн делает а обычные скрипты по обычному играют

NLObP
07.05.2008, 02:09
NLObP, ну посмотреть тоя уже насмотрелся, но клинт ведь какимто образо вычисляет реальное число пинга, значит его можо и так вычислить а просто поддельные числа слать тоже вариант но не идеальный всётаки....я думал что может както просто можно вычислять сам пинг реальный.а с ValidatePosition делали опыты какие? я завтра посмотрю этот пакет скрипт я думаю просто будет написать, причём лучше мне кажется сделать как отдельный скрипт, как надстройка к любому скрипту, типа запускаешь его он тебе и нет пинг и валидпозишн делает а обычные скрипты по обычному играют

Мы ведь у клиента узнаем Пинг, значит он примерно тот, что нужен. Было кстати и такое предложение - рандомно в пределах 100 его ставить.
Что будет, если слать неверный пинг? Дисконект?
Где то читал, что пинг этот показывается на странице выбора серверов.

xkor
07.05.2008, 15:33
на значение пинга серверу абсолютно пох! так что можно смело ставить рандом чтоб было гдето 20-30, это для пинга самый стандарт.., пинг тока задроченый антибот может проверять но только не ноль ли он и не слишком ли рандомно скачет потому как реальный пинг 0 может быть только если играш с компа на котором серв и скакать неможет очень серьёзно...

poizon
07.05.2008, 20:41
а с валидпозишнм что?есть разбор пакета у кого?

Добавлено через 2 часа 41 минуту
короче вот скрипт который при отключении посылает нетпинги

Const
Name='kolobok';
var
ok, srvconst, pingid, ping: integer;



procedure Init; //Вызывается при включении скрипта


begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
ok:=0
end;

procedure Free; //Вызывается при выключении скрипта
begin

end;

procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения

begin

end;

procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединения
begin

end;




Procedure Say(msg:string);
begin
buf:=hstr('4A 00 00 00 00');
WriteD(2);
WriteS(Name);
WriteS(msg);
SendToClientEx(Name);
end;

begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
if (ok=0) and fromclient and (ConnectName=Name) and (pck[1]=#$A8) then
begin
srvconst:=ReadD(10);
Say('Константа сервера получена, можно выключать клиент=');
pck:='';
ok:=1;
end;


if (ok=1) and FromServer and (ConnectName=Name) and (pck[1]=#$D3) then
begin
pingid:= ReadD(2);

ping:= 31 + (int(random()*3));
buf:= #$A8;
WriteD(pingid);
WriteD(ping);
WriteD(srvconst);
SendToServerEx(Name);
say(inttostr(ping));
end;
end.
когда получена константа тогда вырубаем

есть вопросы... допустим я сделал магазин посадил бота своего и вышел.у меня чтото купили, когда купили не нужно чтото типа валид количества предметов ?

QaK
08.05.2008, 09:31
допустим я сделал магазин посадил бота своего и вышел.у меня чтото купили, когда купили не нужно чтото типа валид количества предметов ?Там, по-моему от сервака приходит 2 пакета - инветори апдейт, и пакет с инфой кто и сколько чего у тя купил.

APXAHGEJI
08.05.2008, 21:03
А мне вот еще интересен такой вопрос.
После того как рвешь соединение с клиентом и отключаешь его
возможноли восстановить его, ну, например, чтобы посматреть,
что делает бот?

NLObP
09.05.2008, 15:51
Думаю, что нет, только другим чаром.

VORON
10.05.2008, 03:53
я делал бишопа- удерживающего меня в УД нонстопом через релог.. само собой для етого надо клиент овязывать и норм работало.. бишоп за мной бегал и когда надо ставил в УД и релог производил.. и бегал по команде (т.е. выполнял мои команды без клиента).. впринципе возможно всё сделать..

rootKit
13.02.2009, 23:17
Const
Name='kolobok';
var
ok, srvconst, pingid, ping: integer;



procedure Init; //Вызывается при включении скрипта


begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
ok:=0
end;

procedure Free; //Вызывается при выключении скрипта
begin

end;

procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения

begin

end;

procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединения
begin

end;




Procedure Say(msg:string);
begin
buf:=hstr('4A 00 00 00 00');
WriteD(2);
WriteS(Name);
WriteS(msg);
SendToClientEx(Name);
end;

begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
if (ok=0) and fromclient and (ConnectName=Name) and (pck[1]=#$A8) then
begin
srvconst:=ReadD(10);
Say('Константа сервера получена, можно выключать клиент=');
pck:='';
ok:=1;
end;


if (ok=1) and FromServer and (ConnectName=Name) and (pck[1]=#$D3) then
begin
pingid:= ReadD(2);

ping:= 31 + (int(random()*3));
buf:= #$A8;
WriteD(pingid);
WriteD(ping);
WriteD(srvconst);
SendToServerEx(Name);
say(inttostr(ping));
end;
end.

Супер. спасибо работает. Но есть одно но. Когда я выключаю клиент ПакетХак начинает в окно лога писать WSA error 10038/284 и очень сильно загружать процессор. Можно ли както избежать вывода этого сообщения и соответственно разгрузить проц?

kristalik
16.02.2009, 20:56
Умоляю, поясните мне как режимом АутГейм пользоватся, я скрипт запускаю, клиент оффается, пакет хак остается и пакеты посылает... но и чар с серва тоже оффается, его просто в игре нету((... в чем смысл?? что я упустил?

QaK
16.02.2009, 22:14
kristalik, ну. ка бы тебе помягче-то сказать - кури тонны мануала, в двух словах не объяснишь...

rootKit
19.02.2009, 02:27
Что ни как нельзя подавить сообщение об ошибке?

QaK
19.02.2009, 06:26
rootKit, нахрена в запихал месту и не к месту

begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;*
if*(ok=0)*and*fromclient выделенный кусок убери

rootKit
19.02.2009, 13:47
Блин... Я конечно тоже слепой) Мог бы и заметить...

rootKit, нахрена в запихал месту и не к месту
выделенный кусок убери

Я и не пихал) тупо содрал из поста Poison)

Imperial2008
09.08.2009, 05:08
Я конечно извиняюсь за столь нубский вопрос.
У меня постоянно компилятор выбивает на "NoFreeOnClientDisconnect" Undeclared Identifier. Как понимаю незадекларированный идентификатор. Скажите как это "исправить"?)

NLObP
09.08.2009, 07:40
Imperial2008, переименованы. Воспользуйся поиском.

Imperial2008
09.08.2009, 14:42
Imperial2008, переименованы. Воспользуйся поиском.

Лажу уже который час, и так и сяк ищу, но не упоминается об этом. Я понимаю что легче послать "в поиск", но можно и просто "ткнуть меня носом". Понимаю что достал) Пожалуйста :)

NLObP
09.08.2009, 16:02
Imperial2008, вот здесь (http://coderx.ru/showpost.php?p=32300&postcount=13) есть упоминание.

SolaVento
10.08.2009, 18:47
Кто может, помогите, плиз.
Не могу включить полноценный аутгейм режим работы скриптов. После отключения клиента чар остаётся в игре, скрипты принимают и обрабатывают пакеты, НО ничего не посылают.
Использую функции
NoCloseClientAfterServerDisconnect;
NoCloseServerAfterClientDisconnect;
Версия пакетхака - 3.5.13.122. Вот кусок лога проги:

Тунель ($56272772) создан
Тунель ($56272772) запущен для чтения с сокета № 344
Тунель ($56272772), Серверный сокет № 344 / Клиентский сокет № 336, Соединение с 81.25.32.15:7777 .....
Тунель ($56272772), Серверный сокет № 344 / Клиентский сокет № 336, Соединение установлено с 81.25.32.15:7777
Имя соединения для тунеля ($56272772): xxx
Script: логаут
Тунель ($56272772) Отвалились от сервера

xkor
11.08.2009, 19:50
SolaVento, у тебя перехват через LSP включен?, возможно в этом режиме NoCloseClientAfterServerDisconnect и NoCloseServerAfterClientDisconnect пашут не полностью, а может в последних версиях и вообще они плохо пашут...

alexteam
11.08.2009, 20:06
по логу видно что сокетный движек юзается..
да и проблема в том что при отсоединении сокета - соответствующей отвалившейся стороне соединения присваивается -1 в качестве номера сокета(сервер/клиент, в зависимости от стороны)

при отваливании клиента, серверный сокет (его номер) "обнуляеться".
поиск тунеля по которому требуеться отправить порцию данных так же производиться по номеру серверного сокета.
из за этого невозможно отправить ничерта.
поправил на свн.

SolaVento
11.08.2009, 20:28
2Xkor если это ещё важно, то для перехвата у меня включен надёжный способ внедрения в клиент.

2alexteam огромное спасибо за подробный ответ, обнаружение ошибки и её оперативное исправление.
И ещё вопрос: а где можно екзешник испраленной версии стянуть?

alexteam
11.08.2009, 21:05
http://l2phx.pp.ru/arhive/

SolaVento
11.08.2009, 21:22
2Alexteam отдельное спасибо за билд.
P.S. а что такое "експлициты", если не секрет?

alexteam
11.08.2009, 21:36
explicitheight, explicitwith и прочие приблуды которые были добавлены в бдс2к6 и которых нет в д7, из за чего в д7 приходиться пересохранять каждую отдельно взятую форму для того чтобы билд скомпилленый в ней при запуске не матерился.

SolaVento
11.08.2009, 22:35
Понятно, спс за разъяснения.

Ура аутгейм режим заработал)))
Но теперь появилась следующая проблема: не работает SendToServerEx(Name), хотя с SendToServer всё ОК. Мелочь, но из-за неё не получиться юзать более 1-го соединения :(

alexteam
11.08.2009, 23:49
нашел. поправил..
капец, сейчас смотрю на этод код как не на родной, минут 10 искал где... а все так просто оказалось...
перезалил под той же версией.

SolaVento
12.08.2009, 02:23
2Alexteam я очень рад, что всё оказалось просто и уже исправлено. Ещё раз большое спасибо :good:

tiranosaur
19.12.2009, 10:31
А что делать если у мну не показывает netping? грация клиент. И насколько я понял полазив по packets.ini для Т1 и Т2 нет netping?

alexteam
19.12.2009, 12:34
если сервер на джаве то нетпинга там скорей всего и нет.

ratvier
19.12.2009, 13:59
И насколько я понял полазив по packets.ini для Т1 и Т2 нет netping?
запрос сервера D9
ответ клиента B1

tiranosaur
19.12.2009, 14:23
Нету запросов( а без запросов мона как-то запустить?

alexteam
19.12.2009, 14:49
млять, ну нету, так нету, нет запросов - не нужны ответы. в чем проблемма то ?