Здравствуйте, гость ( Вход | Регистрация )

> Uoext. Расширяя Возможности Клиента, We do what EA can't.
Warstone
сообщение 1.11.2010, 12:09
Сообщение #1


*********

Группа: Модераторы
Наличность: 0
Пользователь №: 10.905
Возраст: 25



UOExt - Ultima Online protocol Extender

Текущая версия: 0.1.0-RC1

Данная программа позволяет вам добавить еще один уровень абстракции в связке клиент - сервер для более эффективного управления как ресурсами так и самим клиентом.

Данная программа выполнена в виде dll, которая подключается к клиенту во время запуска (клиента). Она запускает в адресном пространстве клиента еще один "прокси-сервер" и перенаправляет весь протокол через себя. В отличие от других программ того-же класса, которые перехватывают recv/send, прокси сервер работает в отдельном потоке, что положительно сказывается на плавности картинки клиента, однако налагает дополнительные требования к программисту. В частности: Если прокси-сервер, по приходу какого-то пакета должен сделать серьезную обработку этого пакета, то клиент все-еще может сделать несколько шагов, до того, как переполнится локальный буфер действий клиента и он встанет (эффект потери соединения с сервером). Для игрока - это не большое время, но для программы - это миллиарды тактов.
Побочный эффект данного подхода состоит в том, что вам больше не надо следить за тем, является-ли ваш клиент шифрованным, так как программа автоматически расшифрует протокол, если сервер не принимает зашифрованный протокол.

Так как данная программа выполняется в адресном пространстве клиента, ей так-же доступны любые данные клиента. Более того, перехват API распространяется и на клиент. Поэтому вы имеете все данные клиента и можете производить относительно долгие вычисления без "фризов" клиента.

Сам исходный код данной программы доступен по адресу: http://code.google.com/p/uo-ext/ и имеет лицензию GPL. Однако плагины, написанные вами, являются самостоятельным продуктом (так-же dll) и, насколько я понимаю, могут не попадать под лицензию GPL. Если это не так, и тут есть кто-нибудь, кто разбирается в лицензиях - свяжитесь со мной, пожалуйста, для консультаций по лицензиям.

Исходный код программы написан на Object Pascal, однако плагины могут быть написаны на любом языке (соглашение о вызовах stdcall или, в терминах Си это должно быть, WINAPI соглашение).

История версий (с r53)
r60
- UOExt.GUI: Убрано мерцание при частом обновлении картинки.
- UOExt.GUI: Добавлен проект-тест для UOExt.gui.dll
r57
- Добавлен проект UOExt.GUI. Это шкурка "по умолчанию". Нет поддержки UOExt. Сама картинка сделана командой сервера "Квинтэссенция". Все скопировано правильно!

r56
- UOExt выгружается на старте клиента, если она не поддерживается сервером.

r55
- Убран проект UOLoader из репозитория. Фактически, он не использовался в работе с тех пор, как заработало заражение ехе
- Добавлена проверка на поддержку сервером UOExt в купе с передачей настроек. Аналог Razor'овского Negotiate features with server.
- Поправлен баг с падением клиента при разрыве соединения во время игры.
- В репозиторий добавился код для RunUO для поддержки UOExt

r53
Первый релиз, относительно которого будет вестись история.


Мини FAQ по работе с UOExt

Начальная установка
UOExt поставляется в 2-х основных форматах: debug и release. Отличие их в том, что debug "выкидывает" консоль и пишет туда отладочные сообщения. release, же работает без дополнительного окна.
На данный момент предпочтительный метод работы с UOExt состоит в заражении выполняемого файла клиента игры UO вызовом UOExt при запуске.
Процесс заражения происходит так: Скопировать UOExt.dll в папку с клиентом, открыть командную строку (Пуск - Выполнить cmd.exe), перейти в папку с клиентом и выполнить следующую команду:
Код
%windir%\system32\rundll32.exe UOExt.dll,Infect32 client.exe

Где client.exe - название выполняемого файла клиента УО. Так-же рекомендуется сохранить резервную копию, так как UOExt пропишет себя в текущем exe и будет запускаться каждый раз при старте модифицированного клиента.
После этой операции вы можете работать с клиентом, как раньше. Просто он будет загружать UOExt.

Поддерживаемые программы
На данный момент UOExt умеет работать с клиентом с которого снято или не снято шифрование (авто определение факта снятия шифрования).
Так-же UOExt запускается с Razor.
Тесты совместимости с другими сопутствующими программами не проводились.

Механизм проверки сервера на работу с UOExt
UOExt проверяет сервер на поддержку UOExt путем отсылки серверу пакета 0xEF с пустыми значениями. Если в ответ в течении 5 секунд не прилетит пакет 0x00, то считается что сервер не поддерживает UOExt. Содержание пакета можно почитать в комментариях в коде.

Механизм расширения функционала путем написания плагинов
Будет позже.


Roadmap

r53 (29.04.2012) - UOExt: Решение косяков с шифрованием.
- UOExt: Очередь загрузки плагинов
- UOExt: Взаимодействие между плагинами
r53 (29.04.2012) - UOExt: PE_PROXYEND - добавить в параметры наличие коннекта до клиента и сервера, а так-же причину завершение прокси.
- UOExt (фича): Поддержка старого шифрования (Которое основано на Pi... Это 2-е клиенты что-ли)
Устарело - UOExt (фича): Если UOExt словило какой-то неизвестный пакет, то его надо записать в отдельный файл на диске.
- UOExt (фича): Автоматическое чтение протокола зи запущенного ехе (только для 2д версий).
- UOExt (фича): Если пришел неизвестный пакет с сервера (с клиента он придти не может ибо выше), то просто не пропускать его дальше. Заодно и сдампить.
- UOExt (фича): В дебаг режиме пользуясь VEH уметь ловить ошибки и откатываться до вызова плагина. (с возможным продолжением работы, хотя этого скорее всего не будет)
r54 (01.05.2012) - UOExt (фича): Ловить первый пакет с сервера и проверять его на "каноничность". Если он "каноничен", то UOExt не поддерживается этим сервером, если он специальный, то из него прочитать настройки для UOExt.
r56 (01.05.2012) - UOExt (фича): Если сервер не поддерживает UOExt, то она выгружается из АП клиента, позволяя ему продолжать работать в штатном режиме.
r57 (15.05.2012) - UOExt (фича): Добавить специальную dll'ку, которая будет заниматься визуализацией процесса клиенту.
- UOExt (правка): Сделать проверку что на этапе инициализации IP/порт те-же что и на этапе коннекта самого клиента.
- UOExt (правка): При заражении ставить метку о заражении. Это нужно для того, чтобы убрать возможность повторного заражения и/или перезаражать, если механизм заражения изменился.


--------------------
Do. Or do not. There is no Try!
© Master Joda, Dagobah, Star Wars: Episode V.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Warstone   Uoext. Расширяя Возможности Клиента   1.11.2010, 12:09
Warstone   Задам еще один вопрос... Чего, на ваш взгляд, не х...   15.5.2011, 15:42
StaticZ   Дока нужна это главное, тока лучше не пиши учебник...   15.5.2011, 16:20
Warstone   Хелло ворлд есть в качестве тестового плагина в тр...   15.5.2011, 16:27
Destruction   1) Гм... Не просек, ну ладно. 2) Так храните - ни...   15.5.2011, 16:40
Warstone   2. Не правда. Что мне мешает пропатчить клиент из...   15.5.2011, 19:16
Warstone   3. Ты не прав. Могу притормозить поток, более тог...   6.6.2011, 22:31
Warstone   - Дописал возможность обрабатывать пакет после его...   6.6.2011, 20:58
Warstone   16-я Ревизия: Core: [ADD] Allow plug-i...   6.6.2011, 23:09
Warstone   Проект потихоньку обрастает Вики.   15.6.2011, 11:38
Warstone   Кто тут рвался на халяву покодить для UOExt на C#....   1.7.2011, 19:24
StaticZ   Кто тут рвался на халяву покодить для UOExt на C#...   1.7.2011, 19:41
Warstone   Вылези в аську - расскажу.   1.7.2011, 19:53
Warstone   Вообще, ближайшие малистоуны: - Доделать скачивани...   1.7.2011, 23:00
tsk   Есть возможность сделать увеличение fps клиента? Ч...   2.7.2011, 9:32
Warstone   Есть, конечно. Для этого вы берете IDA и смотрите ...   2.7.2011, 9:49
Destruction   Есть, конечно. Для этого вы берете IDA и смотрите...   2.7.2011, 17:44
Warstone   Та ты скажи - где. Я на лету патчить буду. А еще ...   2.7.2011, 18:01
tsk   На Абиссе плагин (аналог Ассиста) делает такую воз...   2.7.2011, 19:51
Warstone   Порадуем... Наверно больше себя... В готовящемся ...   3.7.2011, 0:02
Warstone   Написал заражение через модификацию последней секц...   3.7.2011, 19:13
Warstone   Доделал. Работает. Зараженный ехе: http://www.viru...   5.7.2011, 12:25
StaticZ   СтатикЗ, как твое там поживает? Я не забыл не бойс...   8.7.2011, 12:09
Warstone   Дамы и господа... Необходима ваша помощь. Надо про...   5.7.2011, 13:59
Ozzy Osbourne   http://uoa.pp.ua/testbug.jpg Решил попробовать з...   13.7.2011, 23:55
StaticZ   Решил попробовать заразить 203, может конечно и ...   14.7.2011, 0:59
Warstone   Ози, вообще заражателю должно быть глубоко фиолето...   14.7.2011, 10:01
Ozzy Osbourne   Вот мой клиент.   14.7.2011, 19:12
Warstone   Мне-бы с полным клиентом... Но вообще - я попробо...   14.7.2011, 19:58
Warstone   В процессе разработки попался глюк (один из многих...   23.7.2011, 21:24
Warstone   Сегодня рассказали как обновлять карту (mapX.mul)....   30.8.2011, 0:11
StaticZ   Сегодня рассказали как обновлять карту (mapX.mul)...   30.8.2011, 1:11
Warstone   Всмысле теперь я умею обновлять в онлайновом режим...   30.8.2011, 9:20
StaticZ   Всмысле теперь я умею обновлять в онлайновом режи...   30.8.2011, 9:29
Warstone   Там в живую тестилось... Я уже сейчас вижу примене...   30.8.2011, 10:00
Juzzver   Норм тред, над затестить эдитор )   31.8.2011, 0:54
wap   Там в живую тестилось... Я уже сейчас вижу примен...   31.8.2011, 17:05
Warstone   О чем разговор, о шахте? Коряво будет выглядеть, ...   31.8.2011, 19:55
Warstone   Сегодня во время интеграции UOExt в клиент СтатикЗ...   4.9.2011, 23:36
wap   Ну ты немного не прав. Карта в УО мешами. А квадр...   5.9.2011, 15:28
StaticZ   Какими мешами? По-моему карта в UO тоже квадратик...   6.9.2011, 16:05
Warstone   А ты посмотри поближе... При перепаде высот. на бе...   5.9.2011, 17:33
Александр Needle™   Как ты описал делает клиент господень :) http://ne...   16.12.2011, 14:54
StaticZ   Как ты описал делает клиент господень :) http://n...   16.12.2011, 16:18
Александр Needle™   Это очень древний оффициальный оси клиент для ста...   16.12.2011, 16:38
Warstone   Так... с него и рисовалось. Более того, его пакеты...   16.12.2011, 15:15
Warstone   По просьбе трудящихся, а именно СтатикЗа - доделал...   19.4.2012, 15:02
StaticZ   Дочитал до конца, понял что обрадовался раньше вре...   19.4.2012, 21:35
Warstone   ЗЫ А нельзя перехватить конект у разора вместа кл...   19.4.2012, 22:12
Warstone   Плохая новость: Managed приложения не заражаются (...   22.4.2012, 17:31
Warstone   Вообще - комичная ситуация... Я научился перехваты...   22.4.2012, 21:09
StaticZ   Оказывается что Разор все-равно тупой ))) Его мож...   24.4.2012, 15:37
Warstone   Всмысле? Это как? ))) Ну я думал что разор пользу...   24.4.2012, 17:02
StaticZ   Ну я думал что разор пользует IPC и коннектит чер...   24.4.2012, 18:05
Warstone   Сурово... Чето не особо понимаю даже зачем ему ну...   24.4.2012, 18:29
StaticZ   Да если подумать еще не хватает события инциализац...   25.4.2012, 12:33
StaticZ   Кстати, пара вопросиков, по коду ShardSetup: 1) ...   25.4.2012, 14:24
StaticZ   сначала лучше добить совместимость с ним )) а Насч...   24.4.2012, 19:05
Warstone   Нет... Интерфейсной частью я рулить не могу ((( З...   24.4.2012, 21:05
StaticZ   Странный "баг", и вроде особо не мешаетс...   24.4.2012, 21:22
Warstone   Так... Падение при работе с плагином HelloWorld.pl...   24.4.2012, 22:10
StaticZ   Собсно - этот баг и был починен )))) Все до него р...   24.4.2012, 22:48
Warstone   Ура, есть просьба - выложить потом готовую сборку...   24.4.2012, 23:10
Warstone   Собственно: http://ifolder.ru/30118440 Инструкции...   24.4.2012, 22:31
Warstone   Залил... 51-я ревизия. + Залил dll'ки   24.4.2012, 23:31
StaticZ   Смотри в ЛС, я тебе туда скинул код   25.4.2012, 0:00
Warstone   Мдя... Получил багу с шифрованием. Причем, походу,...   25.4.2012, 8:34
StaticZ   Вот ВОт я тебе об этом и говорил... а вообще с чег...   25.4.2012, 11:13
Warstone   Вот ВОт я тебе об этом и говорил... а вообще с че...   25.4.2012, 11:22
StaticZ   Не знаю, разор ведь на 100% поддерживает игру на о...   25.4.2012, 11:43
Warstone   Не знаю, разор ведь на 100% поддерживает игру на о...   25.4.2012, 14:57
StaticZ   Немного не так... Возможно позже напишу простеньки...   25.4.2012, 15:46
Warstone   Что есть Warden? А насчет плагина это я имел ввиду...   25.4.2012, 16:19
StaticZ   Warden - это анти-чит технология Близзарда для Во...   25.4.2012, 16:52
Warstone   Звучит очень сильно, хотя уверен если увидеть код ...   25.4.2012, 17:21
StaticZ   Плагины - это dll, подключенные через LoadLibrary....   25.4.2012, 18:02
StaticZ   Кстати а можно както перехватить набираемый текст ...   25.4.2012, 11:55
Warstone   Эм-м-м... СтатикЗ... А там все работает... Я тебе ...   25.4.2012, 18:22
StaticZ   Эм-м-м... СтатикЗ... А там все работает... Я тебе...   25.4.2012, 18:59
Warstone   r52 - Косметические изменения, ориентированные на ...   25.4.2012, 21:46
StaticZ   r52 - Косметические изменения, ориентированные на...   25.4.2012, 22:12
Warstone   ЗЫ а url переваривает или только ипы и как она отн...   25.4.2012, 22:25
Warstone   r53. Шифрование побеждено Вшитая база пакетов подн...   28.4.2012, 21:24
StaticZ   Супер! от меня еще пару пожеланий на будущие в...   28.4.2012, 23:42
Warstone   Сегодня узнал что топик на форуме RunUO был закрыт...   29.4.2012, 0:18
Nickname   Заметил небольшой недочёт, не знаю в курсе или нет...   29.4.2012, 21:16
Warstone   Заметил небольшой недочёт, не знаю в курсе или не...   30.4.2012, 17:43
Warstone   r55. Дропнул поддержку UOLoader. Ибо механизм зара...   1.5.2012, 1:08
StaticZ   Щас подума, не ввйдет ли хуже? ну вот я допустим с...   1.5.2012, 11:33
Warstone   Щас подума, не ввйдет ли хуже? ну вот я допустим ...   1.5.2012, 12:03
StaticZ   На лицо полное незнание того, как работает механи...   1.5.2012, 13:02
Warstone   r56. Собственно сабж. Если ехе заразить свежей вер...   1.5.2012, 13:41
Warstone   Так, господа, нужна помощь дезгинеров... Я решил д...   1.5.2012, 13:53
Warstone   RunUO писали <вырезано анти-матом>ы. Я более...   7.5.2012, 23:11
Nickname   Я в этом не сильно разбираюсь, поэтому задам вопро...   8.5.2012, 2:12
Warstone   Я в этом не сильно разбираюсь, поэтому задам вопр...   8.5.2012, 2:38
StaticZ   Простейший ответ: Вообще - можно, то это через жо...   8.5.2012, 10:38
StaticZ   не даст, ибо RunUO это дотнет тобишь управляемый к...   8.5.2012, 2:28
Warstone   Подогрею немного интерес... Сейчас одновременно го...   14.5.2012, 23:00
Nickname   Отличные новости. Подогрею немного интерес... Сей...   14.5.2012, 23:40
4 страниц V < 1 2 3 4 >


Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 3.8.2025, 5:50
Designed by Nickostyle