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

> 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
StaticZ   и еще два плагина от меня: 1) автоконект, реконет...   15.5.2012, 10:32
Warstone   С сорцами что-ли?   15.5.2012, 12:01
StaticZ   ну скорее всего да, для этого и спрашивал разрешен...   15.5.2012, 13:14
Warstone   r57. Добавил проект UOExt.GUI. Сама dll'ка отт...   15.5.2012, 18:38
Ozzy Osbourne   Оззя, у тебя сфера и 2 клиент? А то мне вздумалос...   16.5.2012, 0:53
Warstone   Оззи, а у тебя Скайп/Аська есть? Можно в личку. Д...   16.5.2012, 11:25
Warstone   Нашел, как можно вытаскивать протокол из клиента. ...   17.5.2012, 0:55
Warstone   Нашел, как можно вытаскивать протокол из клиента....   17.5.2012, 22:41
Ozzy Osbourne   Ну добавить пакет в сферу - проблем нет если он пр...   17.5.2012, 12:32
Warstone   Вчерась вап говорил что на логин стадии - не можеш...   17.5.2012, 15:36
StaticZ   Хотел сделать, сел и припух - вообще не вкурил че ...   18.5.2012, 2:18
Warstone   Сегодня сделал поиск протокола в загруженном ехе (...   22.5.2012, 1:28
StaticZ   А кто-то что-то все-еще не сделал...Что именно? я ...   23.5.2012, 3:01
Warstone   r60 Убрал мерцание и UOExt.gui.dll. Залил тестовый...   26.5.2012, 2:13
Warstone   Только что удалось добиться синхронизации отдельно...   26.5.2012, 16:03
Warstone   Теперь один и тот-же серверный код умеет работать ...   26.5.2012, 19:52
Warstone   r62. Закоммител все, что сделал. Коротко: Сервер о...   26.5.2012, 20:30
Warstone   r64. Гуй интегрирован в процесс запуска (пишется т...   28.5.2012, 0:09
Warstone   r65. Плагины грузятся с сервера. HelloWorld.plg ...   28.5.2012, 20:38
Warstone   r66. Прокинуто общение с Апдейт сервером в плагины...   29.5.2012, 23:42
Warstone   Подогрею интерес... Сейчас 70-я ревизия... С 69-й ...   14.6.2012, 0:21
Warstone   r71 она-же 0.1.0-RC1 Собственно можно начинать см...   15.6.2012, 15:55
StaticZ   Спасибо за труды =) Гениальная задумка и хорошая р...   15.6.2012, 16:50
Warstone   Я-же говорил вроде-бы, что как только 0.1.0 будет ...   15.6.2012, 18:18
Warstone   r77 - фикс, кода Инъектора. Предыдущий код не рабо...   17.6.2012, 20:12
Warstone   r78 - Теперь, если UOExt обновился, то перезагружа...   18.6.2012, 10:44
StaticZ   Клиент 7.0.18.0 и 7.0.23.1 в winXP виснит и/или вы...   18.6.2012, 18:29
Warstone   Собственно r79. Решает проблему незагрузки на WinX...   18.6.2012, 22:21
StaticZ   который я не юзал....   19.6.2012, 0:37
Warstone   Значит ты что-то намудрил в своей версии. Текущая ...   19.6.2012, 10:47
Warstone   Если не влом - займитесь кто-нибудь вычиткой (а по...   21.6.2012, 19:25
StaticZ   Она у меня больше опухла когда все ето навалилось ...   23.6.2012, 2:03
Warstone   А насчет англиского, мой те совет - забей пока на ...   23.6.2012, 11:03
Warstone   wiki заполнена в первом приближении. Этого должно ...   24.6.2012, 15:03
Warstone   Я в шоке... После того, как добил вики - насоздав...   25.6.2012, 15:38
StaticZ   ну да... Тому же махону возможно будет интересно, ...   25.6.2012, 19:29
Warstone   Залез я ради интереса на сайт махаона... Не - не б...   25.6.2012, 23:34
StaticZ   Ну сайт-то тут причем? у нас тоже не фонтан и по б...   26.6.2012, 0:18
Warstone   А что Димка вебом не занимается что-ли? Вроде-бы к...   26.6.2012, 0:38
StaticZ   А что Димка вебом не занимается что-ли? Вроде-бы ...   26.6.2012, 1:06
Warstone   97-я ревизия. Как известно - последний патч засун...   30.6.2012, 16:22
Warstone   98-я ревизия. Апдейтер теперь будет пробовать подк...   3.7.2012, 20:53
Warstone   99-я В апдейт нотах все написано, основное - в тре...   19.7.2012, 20:37
Warstone   100-я ревизия. Добавлен механизм экспорта API из п...   21.7.2012, 15:20
Warstone   101-я ревизия: Сервер работает под x64 и в Никсах....   28.7.2012, 1:46
Warstone   103. Я переделал начальную картинку на более аске...   2.8.2012, 20:18
PolDev   а где 102 ?)   2.8.2012, 22:29
Warstone   Там вики правилось ) Можно пойти и посмотреть   2.8.2012, 23:39
Warstone   104: 16 таск (UOExt перехватывает connect в плаг...   5.8.2012, 21:23
Warstone   Я тут составил список изменений: [Ядро] ...   5.8.2012, 22:18
GblPower   Слежу с самого начала бурной деятельности. С кажды...   5.8.2012, 23:17
Warstone   Перспективы охренительные... Вон, СтатикЗ к клиент...   5.8.2012, 23:31
Warstone   105: Багфиксинг. Теперь работает с Разором. И UO...   6.8.2012, 22:44
Warstone   Сейчас докинул себе таск -сделать любой API вызов ...   7.8.2012, 23:19
wap   1) Чистый клиент 2.0.3 (да, да, loginserver там то...   10.8.2012, 21:44
Ozzy Osbourne   Да он вроде сказал что для 2.0.3 облом   10.8.2012, 22:09
Warstone   Да он вроде сказал что для 2.0.3 облом Если не ши...   10.8.2012, 22:45
StaticZ   Если не шифрованный, то должно попахать Да там п...   11.8.2012, 12:51
Warstone   Сфере, насколько я знаю, плевать - шифрованный ил...   11.8.2012, 13:28
wap   Да там памоему никто не юзает шифрование с такими...   11.8.2012, 14:29
StaticZ   Кстати... СтатикЗ, почему тебя нету в Аське и пост...   11.8.2012, 15:02
Warstone   И да я тебе могу сказать с тем же успехом тоже сам...   11.8.2012, 20:08
StaticZ   Не можешь. Жаббер - это для красноглазиков и упер...   12.8.2012, 1:29
Warstone   Сейчас это модно, поэтому вот: http://vk.com/club4...   12.8.2012, 23:24
Warstone   r106: Фиксанул Standalone сервер и немного перер...   15.8.2012, 0:48
Warstone   Порадую сферойдов... С 2.0.3 нешифрованным UOExt р...   15.8.2012, 1:34
Warstone   r107 Обход TransServ через чтение порта и специаль...   15.8.2012, 10:43
Warstone   Я тут снял дампик пакетов на вход в игру со сферы ...   15.8.2012, 22:13
Warstone   r108 Фикс ошибки в сервере обновлений. Парсилка па...   15.8.2012, 23:47
Warstone   Господа... Я победил 2.0.3 клиент... Так-что на пу...   16.8.2012, 0:40
Ozzy Osbourne   Стоит NET Framework 4 Win2003 R2 SP2 http://s48.r...   16.8.2012, 9:39
StaticZ   Не та версия, скорее всего нужна 2sp2 или просто 2...   16.8.2012, 10:04
Ozzy Osbourne   А как же совместимость новых версий к старым? или ...   16.8.2012, 10:21
StaticZ   Причем тут совместимости? Это не блокнот а платфор...   16.8.2012, 10:40
Ozzy Osbourne   И так всюду - если игра написана под директХ 9 она...   16.8.2012, 10:45
Warstone   Пересобрать сервер и будет... Я идею понял... Сейч...   16.8.2012, 10:41
Warstone   Э-э-э... А подключался ты к куда? 127.0.0.1 2593?   16.8.2012, 11:03
Ozzy Osbourne   Нет на свой реальный сервак, а он что не с login.c...   16.8.2012, 11:10
Warstone   Нет на свой реальный сервак, а он что не с login....   16.8.2012, 11:15
Ozzy Osbourne   Ну я ж скинул скрины выше. Запустил UOExt-Standalo...   16.8.2012, 11:39
Warstone   Гм... Забыл сказать... да private static string m_...   16.8.2012, 11:50
Ozzy Osbourne   Тогда тестите пока без меня ) Будет возможность сл...   16.8.2012, 12:08
Warstone   Переделал... Теперь слушает все, что есть (ну или ...   16.8.2012, 12:22
Ozzy Osbourne   Все норм, подключился   16.8.2012, 12:29
Warstone   А показал умную фразу UOExt: Hello World! ?   16.8.2012, 12:59
Ozzy Osbourne   ага, все окей умная фраза есть консоль клиента ht...   16.8.2012, 13:09
Warstone   Собственно 109 ревизия... Сервер слушает все или т...   16.8.2012, 13:14
Warstone   http://code.google.com/p/uo-ext/downloads/list ))...   16.8.2012, 13:40
Warstone   Возникает вопрос: А что делаем дальше? Нет, просте...   16.8.2012, 21:13
Nickname   Могу ошибаться, но кажется когда-то говорилось о з...   16.8.2012, 21:39
Warstone   Защите чего от чего?   16.8.2012, 22:09
wap   Дальше-то что? Чего вам не хватает в клиенте?А UOE...   16.8.2012, 22:20
Warstone   А UOExt может отображать в клиенте какой-то свой ...   16.8.2012, 23:36
Warstone   Внимание вопрос: Где зохавать исходники Инжекта? И...   17.8.2012, 0:19
StaticZ   на сайте не пробовал? http://users.i.com.ua/~zomb...   17.8.2012, 0:27
Warstone   Кстати... придумал новый смешной плагин... Рисует ...   17.8.2012, 0:39
StaticZ   ога а еще лучше фразу - "Чё зассал? выпей яду...   17.8.2012, 0:41
Warstone   Красным на всю УО: "ПвП или зассал?!...   17.8.2012, 0:44
Nickname   Защите чего от чего? Я имел ввиду защиту от прог...   17.8.2012, 0:50
4 страниц V < 1 2 3 4 >


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

 

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