PDA

Просмотр полной версии : Кусочек l2phx4


xkor
18.08.2008, 03:42
Решил вот показать миру как будет выглядеть просмотр и разбор пакетов в новом пакетхаке, пока что работает мало чего но уже можно думаю составить представление что получается, а главное можно и нужно прокоментировать что лучше изменить/удалить/добавить.

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

Вобщем работает собсно только загрузка лога от предыдущих версий пакетхака, отображение списка пакетов и разбор выбранного пакета.

Ключевая особенность нового разборщика это разбор скриптом, тоесть на смену packets.ini пришли скрипты, за щёт этого немного подрос размер файла, но зато сильно возросли возможности разбора.

Скрипт разбора пишется на Паскале с помощью следующих функций:
// задаёт имя пакета
procedure SetName(const text: string);
// возвращает и выводит в поле разбора число типа Byte
function b(const name: string): Byte;
// возвращает и выводит в поле разбора число типа Cardinal
function d(const name: string): Cardinal;
// возвращает и выводит в поле разбора число типа Integer
function i(const name: string): Integer;
// возвращает и выводит в поле разбора число типа Word
function h(const name: string): Word;
// возвращает и выводит в поле разбора число типа Double
function f(const name: string): Double;
// возвращает и выводит в поле разбора число типа Int64
function i64(const name: string): Int64;
// возвращает и выводит в поле разбора в шестнадцатиричном виде число типа Byte
function bh(const name: string): Byte;
// возвращает и выводит в поле разбора в шестнадцатиричном виде число типа Cardinal
function dh(const name: string): Cardinal;
// возвращает и выводит в поле разбора в шестнадцатиричном виде число типа Integer
function ih(const name: string): Integer;
// возвращает и выводит в поле разбора в шестнадцатиричном виде число типа Word
function hh(const name: string): Word;
// возвращает и выводит в поле разбора Hex строку массива байт
function ba(const name: string; const size: Integer): string;
// возвращает и выводит в поле разбора число типа Cardinal
// и добавляет соответствующую результату строку из файла filename
function df(const name, filename: string): Cardinal;
// возвращает и выводит в поле разбора Unicode строку
function s(const name: string): string;
// пропускает заданное число байт в пакете
function z(const size: Integer): Integer;

Вобщем в приложении скрин и собсно сама программа, можете осмотреть и начинать заполнять скрипты разбора ;)

Кстати одно замечание, для формирования списка пакетов каждый пакет прогоняется через скрипт без вывода в поле разбора, за счёт этого список имён формируется не мгновенно, у меня лог весом в мегабайт разбирается гдето за 3 секунды.


История преверсий:
0.3:
+ раскраска пакетов с возможностью менять цвета
+ при перемещении курсора в поле разбора выделяется кусок пакета соответствующий этой строке

0.2:
! ещё увеличена скорость формирования списка пакетов
+ работают фильтры, правда они пока не сохраняются

0.1:
+ кнопочка перезагрузки скрипта парсинга
+ увеличена скорость формирования списка пакетов
+ добавлено завершение разбора пакета при достижении его конца
! увеличил поле Description с 15 до 20 символов

Amorality
18.08.2008, 05:10
Впечатляет :)
Опен Сорс проект ? :)

NLObP
18.08.2008, 05:22
Не хватает функции разделитель для повторов
[Начало блока 1/10]
[Конец блока 1/10]
Строку ошибки в pakets.ini (по старому) пишет только при загрузке программы. Если потом править инишку, то просто окошко с ошибкой и парсинг больше не возможен, перезагружать программу надо.

Если Description длинный то сбивает всю красоту.
На цикле, что-то колбасит, 'Count' повторяет в каждой итерации и по этому глючит.
$13: begin
SetName('CharSelectInfo')
for for1:=1 to d('Count') do begin
s('Name');
dh('CharID');
s('LoginName');
dh('SessionID');
dh('ClanID');
d('d');
d('Sex');
d('Race');
df('ClassID',cid_fl);
d('active');
d('X');
d('Y');
d('Z');
f('cur_HP');
f('cur_MP');
d('SP');
d('Exp');
d('Level');
d('Karma');
d('d');
d('d');
d('d');
d('d');
d('d');
d('d');
d('d');
d('d');
d('d');
d('Under');
d('Rear');
d('Lear');
d('Neck');
d('RFinger');
d('LFinger');
d('Head');
d('RHand');
d('LHand');
d('Gloves');
d('Chest');
d('Legs');
d('Feet');
d('Back');
d('LRHand');
d('Hair');
d('Under');
d('Rear');
d('Lear');
d('Neck');
d('RFingerc');
d('LFingerc');
d('Head');
d('RHand');
d('LHand');
d('Gloves');
d('Chest');
d('Legs');
d('Feet');
d('Back');
d('LRHand');
d('Hair');
d('HairStyle');
d('HairColor');
d('Face');
f('Max_HP');
f('Max_MP');
d('DELdays');
df('ClassID',cid_fl);
d('autSel');
b('EnchEffect');
end;
end;


Добавлено через 46 секунд
Опен Сорс проект ?

Врядли. =)

Буквы на иконках может белыми сделать? Плохо видно.
Еще нолик добавь в смещении байтов в дампе пакетов, красивее смотрится:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

xkor
18.08.2008, 06:20
NLObP, бляя в этом скриптовом движке порог цикла вычисляется при каждой итерации, так что чтобы цаклы норм работали вместо
for for1:=1 to d('Count') do begin
придётся писать
for for1:=d('Count') downto 1 do begin

остальные замеченные тобой недороботки устранил и обновил файл...

Добавлено через 40 секунд
Впечатляет
Опен Сорс проект ? посмотрим ближе к релизу что получиться

Jes
18.08.2008, 13:07
а почему не слепить
function b(const name: string): Byte;
с
function bh(const name: string): Byte;
вот так
function b(const name: string,hex: bool = false): Byte;

xkor
18.08.2008, 16:29
Jes, потому что скриптовый движек не поддерживает параметры по умолчанию сцуко.., эт во первых, а во вторых так короче)

Jes
18.08.2008, 21:54
я вот, например, то что ты пишешь в скриптах, сделал в рантайме
ты же вроди знаешь формат моих пакетов - так там уже имена полей забиты

так разве не проще?

xkor
18.08.2008, 22:49
предлагаеш вшивать разбор в прогамму чтобы юзеры менять не могли?

Jes
18.08.2008, 23:23
почему "пусть не меняют"?
да пусть меняют - просто сделать загрузку из файла
а стандарт файла пусть будет аля на базе общепринятого
или если уже начал изобретать новый велосипед - то придумай лутший
на базе мого и существующего и еще каких нить

пс: мой позволяет именование полей,дефолты полей,множественное вложение итераций и свитчи для форматов пакетов также масивы и выравнивания и вариантное использование внутренного интерфейса

Jes
18.08.2008, 23:36
свитч
g.Add(wxT("c{cmd=0x45}d{count=#}(d{type=1:1,2:2,3:3,4:3,5:3,-1:3}d{slot}d{Id}(l:1d{=1}d{=-1}ddww l:2d{level}cd{=1} l:3d{=1}))"),wxT("s45_ShortCutInit"));
1:1,2:2,3:3,4:3,5:3,-1:3 = значение:метка перехода
l:3 метка номер 3
вложеный цикл
g.Add(wxT("c{cmd=0xd0}d{listId}d{page}d{finished}d{onpage=0x2 8}d{entrycount=#}(d{EntryId}ddc{=1}w{prodcount=#}w {itemcount=#<}(w{pItemId}dw{ptype2}d{pcount}w{penchant}dd)(w{iI temId}w{itype2}d{icount}w{ienchant}dd))"),wxT("sd0_MultiSellList"));
prodcount=# счетчик циклов

xkor
19.08.2008, 00:26
ИМХО паскаль-скрипт будет понятнее и легче...

NLObP
19.08.2008, 00:43
ИМХО паскаль-скрипт будет понятнее и легче...

Правда кто-то должен проделать не хилую работу по конвертации текущих packets.ini в новый вид. Не трудно, но муторно.

xkor
19.08.2008, 02:44
NLObP, впринципе можно написать конвертер для этого)

Добавлено через 27 минут
Такс, ещё немного ускорил загрузку пакетов и теперь пашут фильтры

xkor
22.08.2008, 01:17
версия 0.3:
+ раскраска пакетов с возможностью менять цвета
+ при перемещении курсора в поле разбора выделяется кусок пакета соответствующий этой строке

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

NLObP
22.08.2008, 02:51
кстати народ, поэкспериментируйте плиз с цветами, а то я помойму не идеальные сочетания сделал...

Смотриться хорошо.
Удачно придумано с небольшим смещением в цветовой гамме. Не сливается всё.
Показ выбранного места - давно ждал, класс!
Первое, что мне кажеться надо доделать, это переход отметки кода в конце и начале блока, без расцвечивания той части где идет расшифровка символами и указателя смещения. То есть расцвечивать надо только шестнадцатиричные коды. Круто было бы параллельное расцвечивание и расшифровку символами.
Второе что заметил. Хочу поменять цвета. На форме Цвета при выборе типа данных они отмечаются так как будто я шифт держу, одну позицию не могу выделить.
При выборе желаемого цвета, может автоматом палитру делать? Самому подбирать наверное влом будет.

xkor
22.08.2008, 04:33
Удачно придумано с небольшим смещением в цветовой гамме. Не сливается всё.ну эт я из wpf идею спёр, хотя думаю Саурон тоже это у чегонить слизал)
Первое, что мне кажеться надо доделать, это переход отметки кода в конце и начале блока, без расцвечивания той части где идет расшифровка символами и указателя смещения. То есть расцвечивать надо только шестнадцатиричные коды. Круто было бы параллельное расцвечивание и расшифровку символами.непонял что ты имел в виду)

Emocean
22.08.2008, 10:03
Все это придумано в wp ppc уже два года назадВот только почему-то им не хочется пользоваться...


Добавлено через 5 минут
непонял что ты имел в виду)
Он имел в виду вот это:

http://s45.radikal.ru/i109/0808/b0/cae4c48c67eat.jpg (http://radikal.ru/F/s45.radikal.ru/i109/0808/b0/cae4c48c67ea.gif)

xkor
22.08.2008, 15:45
Emocean, ну к сожелению выделение не сплошного куска не сделать, а менять цвет временно довольно геморно, да и на мой взгляд тут главное просто показать место...

Все это придумано в wp ppc уже два года назад ну возможности смены цветов подсветки и выделения указанного места в пакете я там не припомню), а остальное впринципе и в wp ppc не эксклюзив)

NLObP
22.08.2008, 20:56
Он имел в виду вот это:

Да-да, это.

xkor
23.08.2008, 16:48
хватит флудить! :mad:

dmitry501
25.08.2008, 08:29
Emocean, ну к сожелению выделение не сплошного куска не сделать, а менять цвет временно довольно геморно, да и на мой взгляд тут главное просто показать место...

ну возможности смены цветов подсветки и выделения указанного места в пакете я там не припомню), а остальное впринципе и в wp ppc не эксклюзив)

Есть.
Глянь файл pckinfo.ini в папке data\packets

JIoMaK
25.08.2008, 09:23
Привет xkor !!!
Заценил новый вариант от души !!!
Если можеш накрутить обход стандартных защит - сделай в этой версии!!!
А так жду с нетерпением новый вариант пакет хака !!!

PanAm
25.08.2008, 14:45
Главное - это обход защиты Фриз от иновы. :D

xkor
25.08.2008, 15:54
PanAm, че за фриз %)

Добавлено через 1 минуту
dmitry501, сначала хотел начать возражать, но потом вспомнил что я уже просил кончать сравнение с wp ppc так что хватит!..

PanAm
25.08.2008, 16:17
Да где-то уже проскакивала инфа что на руоффе не будет ГГ а инова поставит собственную защиту "фриз" или что-то вроде...

xkor
25.08.2008, 22:12
ну значит будем юзать не антиГГ а антиФриз)

Добавлено через 2 часа 54 минуты
кстати вот почти офф информация о защите:
2) Будет ли использоваться для защиты игры печально известный ГГ (GameGuard) и периодически конфликтующая с Windows Vista и антивирусами система защиты Themida? Планируете ли вы подружить их с проксификаторами?
Мы уже озвучивали на пресс-конференции, что для защиты игры будет использоваться наша система - Frost.

wanick
25.09.2008, 18:18
xkor, ИМХо не мешало бы иметь возможность выключить показ пакета не только из поля фильтров но и из самого поля где пакеты показываются , может по rightClick контекстным меню ну или галочку снимать также как в фильтрах

ато пока найдеш нужный в списке :o

xkor
25.09.2008, 21:52
wanick, вообщето чуть правее кнопочки "очистить лог" есть кнопочка для внесения в фильтр всех выделенных в данный момент пакетов, тоесть после нажатия этой кнопочки исчезнут все выделенные пакеты и пакеты имеющие такие же названия...
ЗЫ эта кнопочка и в 3й версии была...

wanick
26.09.2008, 14:31
не заметил, сорри :rolleyes:

www
02.10.2008, 21:24
xkor, что за компонент использовал вместо TPageControl?
Если откуда-то качал то дай ссылку.

xkor
03.10.2008, 00:16
а кто сказал что используется не TPageControl?, просто его закладки скрыты так как они мне не нравятся и использован в качестве закладок TTabSet)

xkor
03.10.2008, 04:28
сделал в пакетхаке 4м просмотр списка подключений для любого процесса, для проверки выбрал FireFox, смарите как он сам к себе конектиться)))

DashKAaa
06.10.2008, 09:12
закрытый бета тестирование уже виднеется из-за гор, думаю там пройдет не тест ла2, а тест работоспособности ботов...

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