Вернуться   CoderX :: Forums > Lineage II > L2PacketHack
Войти через OpenID

L2PacketHack Форум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела! Обсуждение багов Lineage ЗАПРЕЩЕНО!

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 01.02.2008, 20:11   #1
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию L2PacketHack 3.2.0

Очередная версия программы со следующими нововведениями:
- в логе теперь отображаются пакеты посылаемые скриптами и не отображаются заблокированные скриптами, ну и если скрипт модифицировал пакет то он в логе в содифицированном виде появиться
- в newxor.dll можно писать разные алгоритмы шифрации/дешифрации для входящего и исходящего трафика (подробнее смотрите в исходниках, старые длл так же поддерживаются)
- в просмотре заменил кнопки картинками и добавил удаление пакетов из лога (не путать с фильтрацией!) и кроме того теперь можно удалять и фильтровать не по одному пакету а выделить всё что надо
- добавлено несколько новых встроенных функций для работы с именем/id соединения, а так же для отключения соединения, подробнее о них смотрите в теме viewtopic.php?f=9&t=4 с пометкой v. 3.2.0
- при старте программы выполняется скрипт из файла RunScript.ini который загружает сам себя с моего сайта, нужен он впринципе только для оповещения о новых версиях и для установки адреса страници программы, но при необходимости может сделать с интерфейсом программы многое)

Качаем тут:
http://coderx.ru/downloads.php?do=cat&id=1
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился 8 спасибками от:
Старый 01.02.2008, 21:44   #2
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

И снова первыйнах =) Уряяяя! Все го тестировать!!!!!!!!!!

Добавлено спустя 1 минуту 21 секунду:
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+)

Мегавесчи!
QaK вне форума   Ответить с цитированием
Старый 01.02.2008, 22:22   #3
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от 4uTePoK
Лёха это то что я тебе писал сегодня в асюку насчёт алгоритмов нахождения теперь newxor.dll сам выевляет?)
Пошёл тестить Скоро буду :Yahoo!:
и как это ты себе представляеш самонастраивающийся на твой сервер newxor.dll?, такого и в сказке небывает)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 01.02.2008, 23:31   #4
Гость
 
Сообщений: n/a
По умолчанию 393NKAE

Как заблокировать пакеты чтобы не шли в клиент?)
  Ответить с цитированием
Старый 01.02.2008, 23:49   #5
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

pck:='';
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 03.02.2008, 01:42   #7
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: L2PacketHack 3.2.0

После выбора чара в клиенте, пакетхак выкидывает окно с ошибкой и перестает принимать пакеты:
Код:
Access violation at adress 0052B13 in midule 'l2phx.exe'. Read of address 000000
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 03.02.2008, 19:28   #8
Гость
 
Сообщений: n/a
По умолчанию

в процедуры
Код:
procedure OnConnect(WithClient: Boolean);
procedure OnDisconnect(WithClient: Boolean);
передается всегда WithClient = False. Проверьте скриптом.

причем, основное тело скрипта выполняется в контексте основного потока (реализовано с помощью SendMessage), а Onсonnect и OnDisconnect выполняются в контексте сетевых потоков.

Куча лишних критических секций. Для потокобезопасности в данном случае достаточно не обращаться к VCL-контролам не из мейн нити, также продублировать все чекбоксы и прочие настройки глобальными переменными. Это важный момент - большая часть критикалов пакетхака именно из-за этого.

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

Улыбнуло то, что при включенном сохранении пакетов каждый из них читает инфу о себе из ини файла. ИМХО верней было бы сделать один раз сделать массив при запуске проги и сделать кнопку "Перечитать из ини", как это было сделано в хлапексе. Производительность на лицо.

Для меня остается тайной, почему используется TTime вместо TDateTime, если уж на то пошло...

Также не понимаю смысл JVCL, все вещи которые с помощью них реализованы можно сделать RichEdit'ом и fsSyntaxMemo (которая так или иначе все-равно цепляется к проекту) и не тащить за собой лишние 400 кб.

Да, кстати, и прекрати юзать WM_USER+77 и WM_USER+45, для приложений создана специально зона WM_APP и выше.

Чтобы длл не ошибалась в выборе окна, которому отправлять инфу о коннекте предлагаю юзать FileMapping'и...

Если ListView5 заменить ListBox'ом со своим OnDrawItem можно добиться оптимизации загрузки лога раз в 40...
(попробуйте 20ти-метровый файл лога загрузить в пакетхак...если он не повиснет xD... в листбокс у меня грузится 4 секунды)
Ссылку на строку в Thread[].Dump можно хранить так:
Код:
lbPckList.Items.AddObject('', TObject(msg.LParam));
т.е. строк как таковых в ListBoxe не будет, будет в Object храниться integer = номеру строки в Thread[].Dump, а в OnDrawItem уже отрисовывать иконку и текст, читая целиком пакет из Thread[].Dump.

Да и вообще есть куча мелочей, которые хкор успешно игнорит...
что-нить ужасное типа:
Код:
    CheckListBox2.Items.Strings[CheckListBox2.ItemIndex]:=scripts[CheckListBox2.ItemIndex].Name;
    CheckListBox2.Items.Strings[CheckListBox2.ItemIndex-1]:=scripts[CheckListBox2.ItemIndex-1].Name;
    tmp:=CheckListBox2.Checked[CheckListBox2.ItemIndex];
    CheckListBox2.Checked[CheckListBox2.ItemIndex]:=CheckListBox2.Checked[CheckListBox2.ItemIndex-1];
    CheckListBox2.Checked[CheckListBox2.ItemIndex-1]:=tmp;
можно заменить банальным
Код:
CheckListBox2.Items.Move(ItemIndex, ItemIndex-1);
вместо
Код:
          if CheckBox7.Checked then
          begin
            ListView5.ItemIndex:=ListView5.Items.Count-1;
            PostMessage(ListView5.Handle, WM_VSCROLL, SB_BOTTOM, 0);
            //            ListView1Click(Self);
          end;
логичней написать
Код:
MakeVisible(false);
не будет мерцать при скролле.

ну и подобные вещи, которые не критичны, но в целом определяют стиль и быстродействие кода.

Из пожеланий и рекомендаций предлагаю добавить
Код:
fsScript.AddMethod('procedure log(msg:String):String', CallMethod);
Код:
procedure log(const Msg: string);
const
  WM_COPYDATA=$004A;
var
  CD: TCopyDataStruct;
begin
  CD.dwData:=0;
  CD.cbData:=Length(Msg);
  if CD.cbData=0 then
    CD.lpData:=nil
  else
    CD.lpData:=@Msg[1];
  SendMessage(MainHWND, WM_COPYDATA, 0, integer(@CD));
end;
а в основном окне обрабатывать WM_Copydata и вытаскивать то, о чем нам хотел сообщить скрипт и отображать в ListBox3.

также предлагаю ввести прототипы функций:
Код:
function ReadS(packet: string; var index: integer; NoInc: Boolean=false): string;
function ReadD(packet: string; var index: integer; NoInc: Boolean=false): integer;
function ReadC(packet: string; var index: integer; NoInc: Boolean=false): char;
function ReadF(packet: string; var index: integer; NoInc: Boolean=false): double;
function ReadQ(packet: string; var index: integer; NoInc: Boolean=false): int64;
function ReadH(packet: string; var index: integer; NoInc: Boolean=false): word;
procedure WriteC(var destination: string; source: char);
procedure WriteH(var destination: string; source: word);
procedure WriteD(var destination: string; source: integer);
procedure WriteF(var destination: string; source: double);
procedure WriteQ(var destination: string; source: int64);
procedure WriteS(var destination: string; source: widestring);
procedure WriteZ(var destination: string; source: array of byte; size: integer);
в которых задается откуда читать и писать, не ограничиваясь pck и buf. NoInc=true в данном случае - не увеличивать index.

пример реализации
Код:
function ReadD(packet: string; var index: integer; NoInc: Boolean=false): integer;
begin
  Result:=-1;
  if Length(packet)<index then exit;
  Move(packet[index], Result, SizeOf(Result));
  if not NoInc then Inc(index, SizeOf(Result));
end;
вместо ужастного (правда это было у Хинта)
Код:
function ReadIntFromStr(str:string;index:integer):integer;
var
ab:array [1..4] of char;
ai:integer absolute ab;
i:integer;
begin
Result:=-1;
if Length(str)<index+3 then exit;
for i:=1 to 4 do ab[i]:=str[index+i-1];
Result:=ai;
end;
  Ответить с цитированием
Старый 03.02.2008, 19:39   #9
Гость
 
Сообщений: n/a
По умолчанию

забыл 2 вещи, которые мне были не удобны, пока я юзал пакет хак:

нет кнопки Inject DLL в списке работающих программ для точечного инъекта. Нахрена этот список тогда нужен?
нет кнопки Run and attach dll с помощью CreateProcessWithDll. Некоторые защиты также делают хук connect из ws2_32.dll и проверяют нет ли вражеского перехвата. С помощью CreateProcessWithDll мы создаем процесс, тормозим его до загрузки левых длл, а потом иньектимся до того, как защита сделала оригинальный "снимок" connect'a.
  Ответить с цитированием
Старый 03.02.2008, 19:42   #10
Гость
 
Сообщений: n/a
По умолчанию Re:

Цитата:
Сообщение от OllyDbg
забыл 2 вещи, которые мне были не удобны, пока я юзал пакет хак:

нет кнопки Inject DLL в списке работающих программ для точечного инъекта. Нахрена этот список тогда нужен?
нет кнопки Run and attach dll с помощью CreateProcessWithDll. Некоторые защиты также делают хук connect из ws2_32.dll и проверяют нет ли вражеского перехвата. С помощью CreateProcessWithDll мы создаем процесс, тормозим его до загрузки левых длл, а потом иньектимся до того, как защита сделала оригинальный "снимок" connect'a.
это не проблема отловить самой программой которую перехватываешь так делает GG в линейке
  Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack



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

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


Часовой пояс GMT +4, время: 19:28.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!