|
Tools Обсуждение программ для MaNGOS |
|
Опции темы | Поиск в этой теме | Опции просмотра |
28.04.2011, 14:58 | #41 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Чем больше опкодов появляется в паблике, тем сильнее защиту делает близзард
|
28.04.2011, 15:50 | #42 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
Ага, ясно.
Ну тем не менее я потихоньку допишу хотя бы минимально функциональный код, может что получится из открытого проекта. Предполагается что список опкодов и все скрипты - парсеры опкодов будут вшешними. Следовательно движок один, а уж опкоды каждый сам у себя приводит в актуальное состояние. |
Пользователь сказал cпасибо: | LordJZ (28.04.2011) |
28.04.2011, 20:49 | #43 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
ну я могу отдать на растерзание свой zPktViewer, сорцы всмысле. времени сейчас им заниматься нет совсем...
только как у вас с delphi? Йоха, я смотрю дизайн вьювера никак не хочет меняться как я его придумал 500 тыщ лет назад, а он всё такой же прям как с нортон командером |
28.04.2011, 21:37 | #44 | |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
Цитата:
Язык с++, фреймворк - WTL, есть желающие присоединиться к разработке ? |
|
28.04.2011, 22:28 | #45 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
|
04.05.2011, 09:53 | #46 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
Сделал загрузку имен опкодов из внешнего файла.
Файл ищется в папке с программой в подпапке равному номер билда Номер билда берется их заголовка pkt файла. Например открываем сниф от билда 13623, сама программа находится в папке c:\packetview. Будет загружен файл c:\packetview\13623\opcodes.txt Если для опкода нет символьного представления, то выводится просто его значение ЗЫ, в догонку вопрос, какой контейнер лучше использовать вместо std::vector для составления индекса pkt файла. Просто при открытии больших снифов (порядка 160000 пакетов) возникает задержка при формировании индекса. Насколько я помню vector делает перемещения памяти для того что бы все данные располагались единым блоком. Мне это не нужно, от контейнера требуется 2 вещи - быстрая вставка в конец списка и произвольный доступ к элементам посредством оператора []. К сожалению в STL не силен, знаю так основы. Последний раз редактировалось NeatElves; 04.05.2011 в 11:21. |
04.05.2011, 11:03 | #48 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
во! то что надо, теперь открытие любых файлов осуществляется почти мгновенно!
Последний раз редактировалось Йоха; 04.05.2011 в 11:54. |
05.05.2011, 12:56 | #49 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
Озадачился поиском скриптового языка который надо прикрутить к программе для парсинга сложных опкодов.
Оказывается их сейчас развелось вагон. В луа я почти не разбирался, так в легкой форме только, поэтому вопрос: насколько этот язык пойдет для парсинга пакетов ? Прикрутить его к программе дело плевое, как я понял прочитав документацию. И как лучше отдавать пакет в луа код ? просто как последовательность байт ? В луа есть возможности для анализа массива байт ? А, посмотрел на пример у топикстартера, лучше реализовать функции для чтения данных из пакета: Код:
Read8 - число 8бит Read16 Read32 Read64 ReadPG - пакованый GUID ReadString Последний раз редактировалось Йоха; 05.05.2011 в 13:14. |
05.05.2011, 14:50 | #50 | |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Bool
Guid Vector2 Vector3 Vector4 PackedVector PacketQuaternion UintBool - по другому не знаю как назвать. Близы используют в некоторых пакетах 4 байта для передачи да или нет, а не бул.
|
|
05.05.2011, 14:57 | #51 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
PackedVector это разница между будущем и текущем векторами, просто так его читать нельзя
Йоха, а вы только на С++ пишете? Последний раз редактировалось LordJZ; 05.05.2011 в 15:01. |
05.05.2011, 15:15 | #52 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
В общем ясно, это надо допилить по ходу дела. Сейчас допишу элементарное взаимодействие со скриптами.
В целом архитектура вырисовывается такая, для работы программы требуются 2 файла: opcodes.txt parsers.lua оба файла загружаются из папки соответсвующей номеру билда снифа (берется из заголовка pkt файла) формат opcodes.txt: Код:
опкод, текстовое_представление_опкода, имя_функции_для_парсинга например: Код:
0x8581, CMSG_WORLD_TELEPORT, cmsg_world_teleport Код:
function cmsg_world_teleport() // тут написать собственно сам парсер пакета end Код:
function cmsg_world_teleport() packet.Read8() packet.Read32() end |
05.05.2011, 15:17 | #53 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
к своему парсеру я тоже собирался луа прикручивать. еще есть PascalScript и оно вроде как даже по главнее будет, но отдавая себе отчет в том, что вьюверы будут еще и что бы как то стандартизировать и унифицировать формат "плагинов"-"парсеров", я бы выбрал луа. грубо говоря один и тот же парсер какого нить опкода, написанный на луа (скажем SMSG_CHAR_ENUM.lua) одинаково хавался бы всеми вьюверами, и моим, и йохавским, и томаруса и еще чьим угодно.
|
05.05.2011, 16:23 | #54 | |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
на с++, на придурашном языке 1С (это слава богу в прошлом), на ассемблере, на делфи немного (давно не практиковался)
ах да, забыл добавить - еще на бейсике -)))) со школы его не забуду Добавлено через 3 минуты Цитата:
Добавлено через 1 час 1 минуту ну для этого можно использовать Read32 |
|
Пользователь сказал cпасибо: | LordJZ (05.05.2011) |
05.05.2011, 18:24 | #55 |
Ученый
Регистрация: 17.05.2010
Сообщений: 148
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 22 сообщениях
|
Еще из луа пригодилась бы возможность распаковывать zlib'нутые данные.
То есть к функциям чтения добавить функцию распаковки. |
05.05.2011, 19:25 | #56 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
|
12.05.2011, 08:40 | #57 |
Гость
Сообщений: n/a
|
build 12340
XML замечательно описывает формат пакета ( не считая условий ) Про JSON такого сказать не получится, но он и не для этого предназначается(может я его и не так использую...?) Ипользуя XML можно организовать чтение пакетов, или кодогенератор...да и зрительно просто песня может сообразим какой нить формат описания данных? зы текущий XML формат позаимствован у TOM_RUS Последний раз редактировалось Minimajack; 12.05.2011 в 09:04. |
12.05.2011, 10:36 | #58 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
LoopLength не достаточно. попробуйте описать в xml пакет 00А9. если получится, то можно смело пользовать xml.
|
12.05.2011, 11:55 | #59 |
Гость
Сообщений: n/a
|
Код:
<Definition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Opcode="SMSG_COMPRESSED_UPDATE_OBJECT"> <Fields xsi:type="Compress" DataType="gz" > <Fields xsi:type="DynamicLoop" Name="UpdateObject" DataType="UInt32"> <Fields xsi:type="Switch" DataType="Byte"> <Fields xsi:type="Case" Value="0"> <Fields xsi:type="Simple" Name="ObjGuid" DataType="Guid"/> <Fields xsi:type="Struct" DataType="WoWObjectUpdate"/> </Fields> <Fields xsi:type="Case" Value="1"> <Fields xsi:type="Struct" DataType="MovementInfo"/> </Fields> <Fields xsi:type="Case" Value="2"> <Fields xsi:type="Simple" Name="ObjGuid" DataType="Guid"/> <Fields xsi:type="Simple" Name="ObjectType" DataType="Byte"/> <Fields xsi:type="Struct" DataType="MovementInfo"/> <Fields xsi:type="Struct" DataType="WoWObjectUpdate"/> </Fields> <Fields xsi:type="Case" Value="3"> <Fields xsi:type="Simple" Name="ObjGuid" DataType="Guid"/> <Fields xsi:type="Simple" Name="ObjectType" DataType="Byte"/> <Fields xsi:type="Struct" DataType="MovementInfo"/> <Fields xsi:type="Struct" DataType="WoWObjectUpdate"/> </Fields> <Fields xsi:type="Case" Value="4"> <Fields xsi:type="DynamicLoop" Name="NumbRangeObject" DataType="UInt32"> <Fields xsi:type="Simple" Name="ObjGuid" DataType="Guid"/> </Fields> </Fields> <Fields xsi:type="Case" Value="5"> <Fields xsi:type="DynamicLoop" Name="NumbNearObject" DataType="UInt32"> <Fields xsi:type="Simple" Name="ObjGuid" DataType="Guid"/> </Fields> </Fields> </Fields> </Fields> </Fields> </Definition> Последний раз редактировалось Minimajack; 12.05.2011 в 12:04. |
12.05.2011, 13:23 | #60 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
ну это понятно, а где собсно самое интересное то?
где чтение блоков данных в завимости от флагов? где чтение и разбор битовой маски? где собсно разбор MovementInfo? не обязательно всё, ключевые моменты. |
12.05.2011, 13:31 | #61 | |
Гость
Сообщений: n/a
|
Цитата:
как приду на работу ( 30 мин ), скину парочку основных моментов, в общем то из-за них и начал, т.к. не всем может быть понятно такое описание. |
|
12.05.2011, 13:52 | #62 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
разобрать пакет не проблема, он давно разобран, спрашивай что непонятно.
проблема описать это для вьювера и использовать в нем то, что описал. |
12.05.2011, 14:25 | #63 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Пакет:
Код:
0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 Код:
uint32 flags; if(flags & 0x1) uint32 value1; if(flags & 0x2) uint32 value2; Код:
<Definition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Opcode="CMSG_TEST_ACTION"> <Fields xsi:type="ConditionMultiple" Name="Condition2" DataType="UInt32"> <Fields xsi:type="ConditionCheck" Name="Condition2Field1" DataType="UInt32" ConditionType="And" ConditionValue="1"> <Fields xsi:type="Simple" Name="ConditionCheckField1" DataType="UInt32"/> </Fields> <Fields xsi:type="ConditionCheck" Name="Condition2Field2" DataType="UInt32" ConditionType="And" ConditionValue="2"> <Fields xsi:type="Simple" Name="ConditionCheckField2" DataType="UInt32"/> </Fields> </Fields> </Definition> Код:
Opcode: CMSG_TEST_ACTION Condition2: 3 ConditionCheck: type And, value 1 ConditionCheckField1: 4 ConditionCheck: type And, value 2 ConditionCheckField2: 8 Последний раз редактировалось TOM_RUS; 12.05.2011 в 14:38. |
12.05.2011, 14:59 | #64 |
Гость
Сообщений: n/a
|
пока только обычные Condition
Код:
<Struct xsi:type="Struct" StructName="MovementInfo"> <Fields xsi:type="Simple" Name="UpdateFlags" DataType="Byte"/> <Fields xsi:type="Condition" ConditionType="8" variable="UpdateFlags" ConditionValue="32"> //ConditionType::And <Fields xsi:type="Simple" Name="Flags" DataType="UInt32"/> <Fields xsi:type="Simple" Name="Flags2" DataType="UInt32"/> <Fields xsi:type="Simple" Name="TimeStamp" DataType="UInt32"/> <Fields xsi:type="Simple" Name="Position" DataType="Coords3"/> <Fields xsi:type="Simple" Name="Facing" DataType="Single"/> <Fields xsi:type="Condition" ConditionType="8" variable="Flags" ConditionValue="512"> <Fields xsi:type="Struct" DataType="TransportInfo"/> </Fields> </Fields> ..... </Struct> |
13.05.2011, 11:52 | #65 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
1 вопрос : какой тип (применительно к с++) имеют вышеперечисленные данные ?
2 вопрос - float используется где-нибудь ? Последний раз редактировалось Йоха; 13.05.2011 в 12:07. |
13.05.2011, 12:13 | #67 |
Гость
Сообщений: n/a
|
|
01.06.2011, 11:12 | #68 |
Гость
Сообщений: n/a
|
надумал собрать, что то вроде, парсера-конструктора структуры пакетов...
то есть - при выводе пакета, выводить hex, отпарсенные данные и структуру пакета с возможностью изменения. Думаю реально, но как это можно удобно представить...так как хотелось бы ввести побольше плюшек для лентяев как я... кто то пытался такое соорудить? остановился на тулбаре, деревом структуры пакета и панелью для изменения( настройки ) узла. Не знаю куда втулить вложенные структуры...или отдельной панелью...или вообще отдельно хранить и при надобности использовать...часто ли в пакетах присутствуют повторяющиеся структуры? ps вообще хочется размять мозги...скучно стало |
2 пользователя(ей) сказали cпасибо: | Konctantin (01.06.2011), Lordronn (02.06.2011) |
02.06.2011, 15:45 | #70 |
Гость
Сообщений: n/a
|
|
03.06.2011, 17:02 | #71 |
Гость
Сообщений: n/a
|
"если структуры пакета можно представить в виде дерева, то почему бы и результаты разбора так не отображать..."
Экономия, при написании вывода. Думаю в структуре выделить пунктик и под необходимость вывода элементов. Вложение 1001 пока что, только фейковый разбор( структура еще не редактируется)...но это только пока Последний раз редактировалось Minimajack; 10.09.2011 в 03:17. |
03.06.2011, 18:53 | #72 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
мне не нравится колонка direction. зачем она? я поэтому и сделал в своем вьювере слева отображаются клиентские, справа серверные опкоды. по мне так как то нагляднее.
далее, как ни крути - хочется видеть хекс и парсинг ОДНОВРЕМЕННО, а не через закладки. ну, опять же - имхо. парсинг в виде дерева - здраво. наверное. время покажет. |
03.06.2011, 19:15 | #73 | |
Гость
Сообщений: n/a
|
Цитата:
а поподробнее можно почему так нагляднее (опять же есть группировка...но результат будет не тот конечно), Возможно слева ввести дополнительную панель и по кнопочке разбросать... хекс и парсинг...да пришлось на вкладочки - ибо место ограниченное.Либо уменьшить шрифт, либо делить одну вкладку по горизонтали, либо придумать кнопочку настройки "Отображения" - это надо подумать( имхо лучший вариант, но жесткий ). можно увидеть скриншот парсера? |
|
03.06.2011, 20:43 | #74 | |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Цитата:
Но я вижу мало смысла в Hex View. Подумываю о вынесении во вкладки Hex View и Parsed View. |
|
03.06.2011, 23:22 | #75 |
Ученый
Регистрация: 17.05.2010
Сообщений: 148
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 22 сообщениях
|
Если посмотреть на первый скрин темы то там уже была идея с выводом структурой )
|
04.06.2011, 00:20 | #76 | |
Гость
Сообщений: n/a
|
Цитата:
вывод( как и парсинг ) - происходит исключительно за счет описания структуры пакета. Если у тебя аналогично - значит мыслим в одном направлении. Кстати как проект живет? Пока 3 варианта хранения:
|
|
04.06.2011, 09:58 | #77 | |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
ну собственно я ничего нового не скажу, просто приведу скриншот июля далекого 2007го: http://wowcore.ru/downloads/zPktViewer.png
Цитата:
имхо |
|
10.06.2011, 12:11 | #78 |
Гость
Сообщений: n/a
|
расположение панелей для изменения структуры...
правая панель пока пустует(для описание элемента и его настройки) добавил схематическое изображение циклам... вот думаю все в одну кучу валить или разбивать на подменю? Логично циклы объединить, структуры впихнуть, но и лишние клики тоже не хочется делать Вложение 1005 Последний раз редактировалось Minimajack; 10.09.2011 в 03:17. |
21.06.2011, 23:37 | #79 |
Гость
Сообщений: n/a
|
не прошло и пол года...остановился на вложенных структурах.
Понемногу правлю тулбар....после очередной правки оказалось - наследование кривоватое ...буду переписывать (не хочется - что бы после удаления сложных структур - удалялись вложенные или ненужные драг-н-дроп нормальный прикрутить) Вложение 1010 пока скрестил комбобокс+дерево...не нравится...буду скрещивать комбобокс с меню... Последний раз редактировалось Minimajack; 10.09.2011 в 03:17. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Parser 4.x.x | ANTOMA | Tools | 3 | 10.12.2010 18:15 |
MaNGOS баг-трекер (разработка) | KiriX | WWW | 34 | 26.10.2010 12:45 |
wdb-parser | Konctantin | Tools | 0 | 23.08.2010 11:14 |
[git] Командная разработка | Hantet | Новичкам | 3 | 06.07.2010 09:01 |
Глобальный FAQ (разработка) | Konctantin | Новичкам | 6 | 14.03.2010 10:46 |