L2PacketHack 3.2.0 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Ботоводство

Ботоводство Вопросы по установке, настройке и подключению ботов задавайте в данном форуме.

Ответ
Опции темы
Непрочитано 30.06.2008, 23:01   #1
Пользователь

Автор темы (Топик Стартер) L2PacketHack 3.2.0

Описание:
Для начала её надо распаковать в отдельную папку (ни в коем случае не распаковывайте в папку с игрой!).
В результате в папке появятся следующие файлы:

* l2phx.exe - сама программа, которую и надо запускать
* inject.dll - библиотека внедряемая программой в клиент чтобы перенаправить соединение с сервервером
* ItemsID.ini - список вещей и их идентификаторов (используется просмотрщиком пакетов)
* Options.ini - файл настроек программы
* Packets.ini - список пакетов и их расшифровка (вы можете самостоятельно его менять чтобы корректировать или добавлять расшифровки пакетов)
* SkillsID.ini - список умений и их идентификаторов (используется для учения скилов)
* Scripts - папка со скриптами, скрипты считываются из этой папки и добавляются при создании в неё же, программа загружает скрипты при старте и при нажатии Обновить список на вкладке Скрипты

Теперь запустим программу.

Список соединений - это списик в котором будет появляться ник вашего героя когда вы зайдете им в игру (ник появится только когда вы именно зайдете в игру, а пока вы заходите просто пропадет надпись пусто), по умочанию вы можете зайти 6ю клиентами/ботами одновременно, но это число можно поменять в файле Options.ini и перезапустить программу.
Справа вверху располагается кнопка выхода, а четвертая кнопка в строке заголовка программы сворачивает её в трей (это рядом с часами, кстати свернуть/развернуть программу оттуда можно и нажатием на иконку программы)
Ну вот, теперь можно подробно изучить каждую вкладку в программе.


Вкладка "Основное":

На этой вкладке располагаются основные настройки программы, затем в самом низу располагается поле в которое выводятся сообщения о перехвате соединений.

Настроек у программы немного:

В поле Считать клиентами/ботами программы указывается список приложений соединения которых должны быть перехвачены, имена файлов перечисляются подряд через точку с запятой;
В поле Неигровые порты укзываются номера портов, соединения с которыми недолжны перехватываться программой (например порты верификации валкера);
В поле Найденные клиенты/боты отображаются приложения для которых был установлен перехват соединений;
Опция Перехват включает/выключает перехват соединений, но если соединение уже установлено то эта опция на него уже невлияет, если опция включена то программа каждые 5 скунд производит поиск новых приложений которым следует установить перехват;
Опция Пропускать логин управляет способом пропускания пакетов при общении с логин сервером и в большенстве случаев неиграет никакой роли (поэтому и была включена напостоянную, хотя её можно выключить через файл настроек);
Опция Список работающих программ просто разрешает/ запрещает показ списка работающий в системе программ у которых есть возможность перехватить соединения;
Опция Обход антибота на многих серверах уже непашет так что и описывать нет смысла
Опция Работать через прокси сервер пока неработает поэтому отключена.

С этой вкладкой пожалуй всё.


Вкладка "Просмотр":

На этой вкладке можно посмотреть список принятых и отправленых пакетов и рассмотреть каждый пакет подробно.
Пакеты запоминаются если включена опция Запоминать пакеты, если она отключена то можно только просматривать уже принятые пакеты.
Опция Изменить фильтры показывает/прячет блок с фитрами пакетов по их типу.
Опции Пакеты от клиента и Пакеты от сервера управляют фильтром по направлению пакетов.
Опция Прокручивать просто прокручивает список пакетов по мере его запонения когда она включена.
Кнопка Фильтровать этот пакет удаляет из списка все пакеты такого же типа как выделенный, что равносильно убиранию галочки рядом с типом пакета в блоке фильтров по типу.

Вкладка "Дополнительно":

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

И так чтобы выполнить скрипт его для начала нужно конечно написать.
Для этого вам понадобится умение писать на языке Pascal. Если же вы его незнаете то раскажу самые основы.
Прежде всего в скрипте должен присутствовать в обязательном порядке блок начинающийся с begin и заканчивающийся end. (после последнего end обязательно ставиться точка!). Те комманды которые находятся внутри него и будут выполнены при нажатии на кнопку Выполнить. Каждая комманда должна заканчиваться символом точка с запятой. Для начала вам понадобятся только следующие комманды:
buf := #$XX;
или
buf := #$XX#$XX;
или
buf := #$XX#$XX#$XX;
и так далее, где XX это шестнадцетиричное число от 00 до FF.
эти комманды присваивают переменной buf один, два или три байта соответственно, но можно присвоить сколько угодно, а так же можно использовать такую комманду:
buf := HStr('XX XX XX');
которая тоже присвоит 3 байта переменной buf, такая запись более удобна и наглядна при записи большего количества байт.
если же надо добавить к уже записанным байтам ещё несколько то комманда получается такой:
buf := buf + HStr('XX XX XX');
далее есть ещё несколько комманд которые нам тут пригодятся:
WriteS('текст'); - эта комманда добавит к переменной buf набор байт соответствующий строке в юникоде текст.
WriteD(d); - эта комманда добавит к переменной buf 4 байта соответствующих числу d.
WriteC( b ); - эта комманда добавит к переменной buf 1 байт соответствующий числу b.
SendToServer; и SendToClient; - отправляют набор байт из переменной buf на сервер или клиент соответственно.
таким образом скрипт написанный по умолчанию формирует и посылает пакет на то чтобы произнести в обычный чат слово Hello.
Ну а если вы ещё не совсем всё поняли, то вот код для отправки на сервер например пакета 1b 0d 00 00 00:
Код

begin
buf:=HStr('1b 0d 00 00 00');
SendToServer;
end.

Остальные комманды и переменные которые можно использовать при написании скриптов я рассмотрю немного дальше

Учение скилов рассматривать смысла нет. Это из светлого прошлого


Итак, Скрипты:

Вкладка эта служит для создания, редактирования, включения и выключения скриптов, все кнопки тут впринципе должны быть понятны так что скажу только что для включения/выключения скрипта надо просто поставить/снять флажек рядом с названием скрипта.

Все скрипты для списка справа берутся и сохраняются в папку Scripts

Как я уже говорил вам понадобится умение программирования на Object Pascal (или Delphi, что примерно тоже самое) и для манипуляций с пакетами естественно понадобится знать что они из себя представляют.

В этой теме я лиш приведу описания внутренних функций и переменных программы.

FastScript - скриптовой движок использованный в программе

Доступные переменные:

pck (string) - текущий обрабатываемый пакет (без первых двух байт с размером)
FromClient (boolean) - пакет (pck) пришел от клиента (всёравно что not FromServer)
FromServer (boolean) - пакет (pck) пришел от сервера (всёравно что not FromClient)
buf (string) - буфер, используемый некоторыми функциями
ConnectName (string) - имя чара от или к которому идёт пакет (v. 3.1.3+)
ConnectID (integer) - номер соединения для которого выполняется скрипт

Доступные функции:

ShowTab и HideTab - для отображения/скрытия панели (UserTab), управлять которой можно из скрипта
Для рисования на ней контролов надо указывать UserTab в качестве родителя
SendToClient - отправляет клиенту содержимое переменной buf
SendToServer - отправляет серверу содержимое переменной buf
SendToClientEx(CharName: string) - отправляет клиенту с именем CharName содержимое переменной buf (v. 3.1.3+)
SendToServerEx(CharName: string) - отправляет серверу с именем CharName содержимое переменной buf (v. 3.1.3+)
(к пакету buf автоматически добавляются 2 байта длины)
areal вне форума Ответить с цитированием
Непрочитано 01.07.2008, 16:30   #2
Пользователь

Автор темы (Топик Стартер) Ответ: L2PacketHack 3.2.0

NoFreeOnClientDisconnect - запрещает закрытие соединения при дисконекте клиента (v. 3.1.9+)
NoFreeOnServerDisconnect - запрещает закрытие соединения при дисконекте сервера (v. 3.1.9+)
YesFreeOnClientDisconnect - разрешает закрытие соединения при дисконекте клиента (v. 3.1.9+)
YesFreeOnServerDisconnect - разрешает закрытие соединения при дисконекте сервера (v. 3.1.9+)
(по умолчанию закрытия разрешены)
DisconnectServer - закрывает соединение с сервером (v. 3.2.0+)
DisconnectClient - закрывает соединение с клиентом (v. 3.2.0+)

ConnectNameByID(id:integer):string - возвращает имя соединения по его ID (v. 3.2.0+)
ConnectIDByName(name:string):integer - возвращает ID соединения по его имени (v. 3.2.0+)
SetName(Name:string) - устанавливает имя соединения (v. 3.2.0+)

ReadC(var index:integer):byte - читает из переменной pck байт
ReadH(var index:integer):word - читает из переменной pck число (2 байта) (v. 3.1.8+)
ReadD(var index:integer):integer - читает из переменной pck число (4 байта)
ReadF(var index:integer):double - читает из переменной pck число c плавающей запятой(8 байт) (v. 3.1.8+)
ReadS(var index:integer):string - читает из переменной pck строку (в пакете строка unicode нультерминированная, а результирующая строка обычная паскалевская)
Index - начальная позиция чтения, которая модифицируется функцией (сдвигается на число считанных байт)

HStr(h:string):string - преобразует строку в HEX-последовательность
К примеру, HStr('AA 00 BB 00 CC 00') вернёт цепочку байт #$AA#$00#$BB#$00#$CC#$00. Можно передавать строку как с пробелами, так и без них; регистр символов не имеет значения.

WriteC(v:byte; ind:integer=0) - пишет в переменную buf один байт
WriteH(v:word; ind:integer=0) - пишет в переменную buf число (2 байта) (v. 3.1.8+)
WriteD(v:integer; ind:integer=0) - пишет в переменную buf число (4 байта)
WriteF(v:double; ind:integer=0) - пишет в переменную buf число c плавающей запятой(8 байт) (v. 3.1.8+)
WriteS(v:string) - пишет в переменную buf строку (автоматический перевод в unicode)
В первых четырёх процедурах присутствует необязательный параметр ind. Если параметр не указан, то переменная buf дополняется байтом/числом, иначе модифицируется часть буфера.

LoadLibrary(LibName:String):Integer - подгружает к программе библиотеку LibName и возвращает указатель на неё (v. 3.1.8+)
FreeLibrary(LibHandle:Integer):Boolean - выгружает из памяти программы библиотеку (v. 3.1.8+)
CallFunction(LibHandle:integer;FunctionName:String ;Count:Integer;Params:array of variant):variant - вызывает функцию FunctionName из зарание подгруженной библиотеки с указателем LibHandle и параметрами перечисленными в Params (v. 3.1.8+)

Пример:
buf=HStr('AA BB CC DD EE');
Если вызвать функцию WriteD(10,1), то получим buf=[0A 00 00 00 EE].
А если просто WriteD(10), то [AA BB CC DD EE 0A 00 00 00].

Например скрипт:

Код:
begin
if FromClient and (ConnectName='SokolA')
and (pck=HStr('1b 04 00 00 00')) then begin
buf:=HStr('45 00 00 00 00 00 00 00 00 00');
SendToServerEx('SokolB');
pck:='';
end;
end.

При получении от клиента играющего за чара с ником SokolA пакета 1b 04 00 00 00 (социальное действие "Victory") непропустит этот пакет и отправит пакет 45 00 00 00 00 00 00 00 00 00 (команда сесть) от имени клиента играющего за чара с ником SokolB, тоесть играете вы в два окна, в одном SokolA, в другом SokolB, нажимаете в первом Victory, и SokolB садится.

Пример вызова функций из системных библиотек:

Код:
var
lib,Lib1:Integer;
Res:variant;
ar:array of variant;
begin
lib := loadLibrary('User32.dll');
lib1 := loadLibrary('GDI32.dll');
Res := CallFunction(lib,'MessageBoxW',4,[nil,'Text1','text2',0]);
Res := CallFunction(lib,'GetDC',1,[0]);
CallFunction(lib1,'LineTo',3,[Res,100,100]);
CallFunction(lib,'ReleaseDC',2,[0,Res]);
FreeLibrary(lib);
FreeLibrary(lib1);
end.

На вкладке Скрипты:

Процедура OnConnect(WithClient: Boolean) вызывается при установке соединения, флаг WithClient указывает с клиентом ли произошло соединение (v. 3.1.9+)
Процедура OnDisconnect(WithClient: Boolean) вызывается при потере соединения (v. 3.1.9+)
Процедура Init вызывается когда вы устанавливаете рядом со скриптом галочку.
Процедура Free вызывается когда вы убираете рядом со скриптом галочку.
Основное тело скрипта (между begin и end) вызывается каждый раз при получении пакета от сервера или клиента если скрипт отмечен галочкой.

На вкладке Дополнительно:

Основное тело скрипта (между begin и end) вызывается по нажатию кнопки Выполнить, и прекращается либо по нажатию Стоп, либо по окончанию работы скрипта.


Сама программа:
[HIDE="5"] http://forum.coderx.ru/uploads/l2phx320.rar [/HIDE]

Исходники программы:
[HIDE="5"] http://forum.coderx.ru/uploads/l2phx_src_320.rar [/HIDE]

WPE_Pro - Низкоуровневая работа с пакетами
[HIDE="5"] http://rapidshare.com/files/60548160/wpepro09x.zip [/HIDE]

Perm_Edit - Достаёт процесс la2.exe если он является скрытым
[HIDE="5"]http://wpepro.net/permedit.zip[/HIDE]
areal вне форума Ответить с цитированием
Сказали спасибо:
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 10:10. Часовой пояс GMT +3.

Вверх