Исходники здесь
Вот такие скомпилированные версии есть у меня.
Ниже данные устарели.
Репозиторий находится тут (открывать через SVN клиент)
Удобный просмотр репозитория через браузер тут
Скомпилированные версии тут Пароль к архиву: coderx.ru
Есть ли предложения по модернизации существующего кода с описанием как должно и что хотелось бы заменить/добавить?
Дополнительные компоненты брать тут. (<-- TPerlRegEx есть только там)
/upd:
для компиляции последних ревизий понадобятся JCL, JVCL (ссылки выше) а так же:
jwapi2.2a, SyntEdit, TRichView.v11.0+ScaleRichView.v2.0, TsiLang (letitbit / upload.com.ua)
Немного подправленный FastScript искать в файловом архиве.
Последний раз редактировалось NLObP, 17.10.2016 в 00:02.
а слабо придумать как из клиента вынимать способ шифравания пакетов?
как раньше был ключь для защиты, его сломали... теперь каждый апкеты по своему выворачивает, не круто, особенно когда после релогина все пакеты другие
Для шифрации/дешифрации в данной программе всегда использовалась newxor.dll для каждого сервера нужна своя библиотека. Она писалась по разным причинам:
1) Была нужна математику.
2) На заказ.
3) От нефиг делать.
Слабо здесь вряд ли играет какую-то роль, учи математикаму, анализируй пакеты, делай обратную функцию и будет тебе шифратор/дешифратор в виде библиотеки newxor.dll.
Прикрутил к парсеру разбор SWITCH CASE. Сделал расшифровку серверных пакетов для packetsFreya.ini
delphi Код:
44=ShortCutRegister:d(type:switch.2.6)d(slot page*12)d(id скилла или object id вещи)_(TYPE_ITEM:case.1.6)d(неизвестно, если не 1, то черный квадрат)d(если больше чем -1, то показывать реюз)d(оставшееся время реюза в секундах)d(реюз в секундах)h(0)h(0)_(TYPE_SKILL:case.2.3)d(level)c(0)d(1)_(TYPE_ACTION:case.3.1)d(1)_(TYPE_MACRO:case.4.1)d(1)_(TYPE_RECIPE:case.5.1)d(1)_(TYPE_UNKNOWN:case.6.1)d(1)45=ShortCutInit:d(size:Loop.1.1)d(type:switch.2.6)d(slot page*12)d(id скилла или object id вещи)_(TYPE_ITEM:case.1.6)d(неизвестно, если не 1, то черный квадрат)d(если больше чем -1, то показывать реюз)d(оставшееся время реюза в секундах)d(реюз в секундах)h(0)h(0)_(TYPE_SKILL:case.2.3)d(level)c(0)d(1)_(TYPE_ACTION:case.3.1)d(1)_(TYPE_MACRO:case.4.1)d(1)_(TYPE_RECIPE:case.5.1)d(1)_(TYPE_UNKNOWN:case.6.1)d(1)62=SystemMessage:d(_messageId:Get.MsgID)d(size:Loop.1.1)d(type:switch.0.13)_(TYPE_TEXT:case.0.1)s(String)_(TYPE_NUMBER:case.1.1)d(Number)_(TYPE_NPC_NAME:case.2.1)d(Number:Get.NpcID)_(TYPE_ITEM_NAME:case.3.1)d(ItemID:Get.Func01)_(TYPE_SKILL_NAME:case.4.2)d(skill_id:Get.SkillID)d(skill_level)_(TYPE_UNKNOWN_5:case.5.1)d(Number)_(TYPE_LONG:case.6.1)q(Long)_(TYPE_ZONE_NAME:case.7.3)d(coord.x)d(coord.y)d(coord.z)_(TYPE_UNKNOWN_8:case.8.3)d(ItemID:Get.Func01)h(Number)h(Number)_(TYPE_UNKNOWN_9:case.9.1)d(Number)_(TYPE_UNKNOWN_10:case.10.1)d(Number)_(TYPE_UNKNOWN_11:case.11.1)d(Number)_(TYPE_UNKNOWN_12:case.12.1)s(String)
F3=ConfirmDlg:d(_messageId)d(size:Loop.1.1)d(t:switch.0.8)_(TYPE_TEXT:case.0.1)s(String)_(TYPE_NUMBER:case.1.1)d(t1)_(TYPE_NPC_NAME:case.2.1)d(t1:Get.NpcID)_(TYPE_ITEM_NAME:case.3.1)d(ItemID:Get.Func01)_(TYPE_UNKNOWN_5:case.5.1)d(t1)_(TYPE_SKILL_NAME:case.4.2)d(skill_id:Get.SkillID)d(skill_level)_(TYPE_LONG:case.6.1)q(t1)_(TYPE_ZONE_NAME:case.7.3)d(coord.x)d(coord.y)d(coord.z)d(_Time)d(_requestId)
Так теперь выглядит SystemMessage
delphi Код:
Тип: 0x62 (SystemMessage)
Размер: 43+2
Время прихода: 01:51:27:0310002 d _messageId: $c1 наносит цели $c2 $s3 урона. ID:2261(0x08D5)0006 d size: 3(0x00000003)
[Начало повторяющегося блока 1/3]
0010 d type: 12(0x0000000C)0014 s String: ЯнеБот
[Конец повторяющегося блока 1/3]
[Начало повторяющегося блока 2/3]
0028 d type: 2(0x00000002)0032 d Number: Гремлин ID:1018342(0xF89E6)
[Конец повторяющегося блока 2/3]
[Начало повторяющегося блока 3/3]
0036 d type: 1(0x00000001)0040 d Number: 12(0x0000000C)
[Конец повторяющегося блока 3/3]
PS: дайте кто нибудь логи от AION, чтобы можно было ошибки с разбором пакетов поправить.
Народ а можно указать в Packetsxxx.ini например новый параметр, чтоб из другого Id текста взял данные как из SkillId, ItemsId и т.д? Или все новые Опознанные Id прога умеет читать только из стандартных файлов? Например хочу добавить в Packets.ini новый пакет MapId. Откуда PHX умеет читать? Я делаю так, в SkillsId.ini пишу имя карты (MapID) и указываю d(MAPID:Get.ClassId). Так вот хочется все мап-ы записать в отдельный текст файл (так как их очень много). Что нужно писать чтоб указать на этот файл? Спасибо.
В юнит uSettingsDialog добавить еще один TEdit, значение которого будет сохранятся в Options.ini
В юнит uMainReplacer добавить код alexteam. Только вместо 'hervam' считывать строку из Options.ini
Ну и в inject.dpr надо будет поправить функцию ConnectHookProc, перед строкой apph:=FindWindow('TfMainReplacer',nil); читать значение параметра из Options.ini и использовать этот параметр вместо 'TfMainReplacer'.
__________________
В любом из нас спит гений. И с каждым днем все крепче.
У нас на жуке все жалуются...на эту ошибку...
Так вот: http://i.zhyk.ru/?v=2612.png
в 164 небыло а в 165 и 166 есть
Я наверное забыл сказать что такая проблема в Айоне=)
П.С. А если нажать "Обновить инфу из *.ini" то выделять пакеты в списке можно сколько угодно и ошибка не вылазит=)
Во добавил этот файл=)
Нашёл и пофиксил эту ошибку.
Добавлено через 1 минуту
Цитата:
Сообщение от Torbins
В какой версии делфей лучше всего компилировать пакетхак?
В первом посте написано и ещё вот здесь мануал есть, почитай.
В первом посте написано и ещё вот здесь мануал есть, почитай.
Просто к свн-у я так и не смог подключится. Подумал что пост все таки старый, вдруг уже все поменялось.
Логи выложил сюда: http://narod.ru/disk/8432363001/Aion.rar.html Семь кусков я попытался подписать, остальные записались автоматически. Пароль на архив отправил в личку. Надеюсь вы не хакнете мой акк на легенде