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

> 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
Ozzy Osbourne   Надо надо :) Сейчас анимации на весь экран приходи...   1.11.2010, 12:31
StaticZ   Конечно надо, только вот поддержка Razor всеже нуж...   1.11.2010, 13:37
d`ArcZeal   Надо надо :) Сейчас анимации на весь экран приход...   15.11.2010, 17:59
Ozzy Osbourne   ну разоры шмазоры это можно и потом прикрутить. по...   1.11.2010, 15:15
Warstone   Итак... Пройден этап первичного тестирования и выл...   13.11.2010, 2:22
wap   Потенциально штука для сферы неплоха в плане хотя ...   13.11.2010, 2:57
Warstone   На вопрос общаственности... Как делать систему пла...   13.11.2010, 14:33
StaticZ   Серверные плагины скачиваются непосредственно с с...   13.11.2010, 15:58
Warstone   Нужна система защиты иначе могут просто подменить...   14.11.2010, 0:50
Soteric   Оно вообще-то надо? Нам надо хоть один завершенный...   13.11.2010, 20:41
Vizit0r   UOExt или Ultima Online ® © (tm) Protocol Extende...   15.11.2010, 9:40
Warstone   я обожаю изобретателей велосипедов. они натыкаютс...   15.11.2010, 10:21
StaticZ   P.P.S. А название топика- то какое классное ...   15.11.2010, 17:44
Vizit0r   про P.P.S. - а EA оно просто не надо. вот и все. ...   15.11.2010, 10:43
Warstone   про P.P.S. - а EA оно просто не надо. вот и все. ...   15.11.2010, 12:46
Ozzy Osbourne   Работают отлично, с этим проблем нет. Но когда в м...   16.11.2010, 0:34
Warstone   А все просто... Так ты напрягаешь сервер рассчитыв...   16.11.2010, 0:35
GblPower   Полезная штука. Особенно для ПОЛа. И вопрос, как о...   17.11.2010, 11:55
StaticZ   Полезная штука. Особенно для ПОЛа. И вопрос, как ...   17.11.2010, 13:02
Warstone   На самом деле - надо проверять... Надо знать как р...   17.11.2010, 13:04
Destruction   На самом деле - надо проверять... Надо знать как ...   17.11.2010, 13:09
Warstone   Как сделать - я и так понимаю. Вопрос куда я попад...   17.11.2010, 18:47
Warstone   Итак... первая встраиваемая версия готова. Запуска...   12.12.2010, 0:17
Warstone   Некоторые люди сильно ругали меня за то, что не ви...   12.12.2010, 3:50
Warstone   Итак... Хотелось-бы немного рассказать об API и по...   12.12.2010, 23:49
Warstone   Да, ну и дальнейшие планы: 1) Переделать инициали...   13.12.2010, 0:01
wap   Потестил "демонстрационную" версию. Запу...   22.12.2010, 17:39
Warstone   Потестил "демонстрационную" версию. Зап...   24.12.2010, 13:05
Ozzy Osbourne   А что поддержки более ранних версий клиента можно ...   23.12.2010, 1:50
Warstone   Только что получилось в ран-тайме объяснить что в ...   26.12.2010, 2:42
Warstone   Текущий код залит в транк. Код доступен тут: http:...   7.1.2011, 16:34
StaticZ   наконец-то!!, уже солидный проект с сайтом...   7.1.2011, 16:50
Warstone   Ну плагины действительно на чем угодно можно писат...   7.1.2011, 16:55
StaticZ   Ну плагины действительно на чем угодно можно писа...   7.1.2011, 16:59
Warstone   Тут не понял.Пока не надо, но если очень интересно...   7.1.2011, 17:30
Warstone   Почистил код. 5-я ревизия должна автоматом собират...   10.1.2011, 3:04
Warstone   Волонтеров нету (внезапно). Вопрос сообществу: Не...   15.1.2011, 4:29
StaticZ   Волонтеров нету (внезапно). Вопрос сообществу: Н...   15.1.2011, 5:13
Warstone   Когда я это говорил? Да, но если у тебя версия до ...   15.1.2011, 15:23
StaticZ   Когда я это говорил?"Волонтеров нету (внезап...   15.1.2011, 16:42
Warstone   А до этого фразу 5 дней назад про необходимость во...   15.1.2011, 17:49
wap   Что касается меня, я вроде уже отписывался(касаетс...   16.1.2011, 23:28
Warstone   Да.... насколько я понял тут 3 калеки (включая мен...   17.1.2011, 10:23
Warstone   Собственно новости: В готовящейся версии: - Фикс б...   30.1.2011, 5:36
wap   Да, похоже что Шифрование это началось с 3-х клие...   1.2.2011, 20:56
StaticZ   Что такое Blowfish и Twofish я лично не в курсе, ...   2.2.2011, 11:13
Warstone   Следующая ревизия. Детект шифрования клиента. Полн...   1.2.2011, 16:38
Warstone   http://code.google.com/p/uo-ext/source/bro...der/T...   1.2.2011, 23:21
Warstone   Поддержка шифрованного клиента есть. Надо потестит...   12.2.2011, 17:43
Warstone   Да, 10-я ревизия обновила транк (реинтеграция шифр...   12.2.2011, 18:10
Александр Needle™   Прикрепил тему , давно пора было это сделать.   13.2.2011, 18:45
Warstone   Решил пока отвлечься от разработки ядра и сделать ...   13.2.2011, 23:08
Warstone   Если вдруг кто-то что-то пишет (нет, ну а вдруг), ...   16.2.2011, 16:35
Warstone   Столкнулся с интересной проблемой. Если в основном...   29.3.2011, 17:15
StaticZ   Столкнулся с интересной проблемой. Если в основно...   29.3.2011, 17:52
Warstone   Может чето перенамудрил и падение происходит из-з...   29.3.2011, 21:55
Warstone   Удивительное рядом... LoadLibrary в инъектируемой ...   29.3.2011, 23:21
Warstone   Сделал перехват Entry Point для клиента и теперь и...   31.3.2011, 1:32
Warstone   Переделал проект под XE, ошибка осталась. Почитал ...   10.4.2011, 3:15
Warstone   Ошибка найдена. Сам и д и о т. Если коротко, то по...   10.4.2011, 5:35
Warstone   Залил 11-ю ревизию. Список изменений: All: ...   15.4.2011, 17:50
StaticZ   Еще один шажок на пути к революции остался позади....   15.4.2011, 20:47
Warstone   Еще один шажок на пути к революции остался позади...   15.4.2011, 23:31
wap   Я вообще по-русски в программно-технических постах...   15.4.2011, 22:07
Warstone   Собрал черновой вариант динамической статики (снач...   16.4.2011, 2:01
Александр Needle™   Кашерно , как бы мне в этом покавырятся?   16.4.2011, 7:42
Warstone   http://code.google.com/p/uo-ext/ Там есть сорс и,...   16.4.2011, 11:02
Warstone   Нашел ошибку в ядре... [props не работает. Скорее ...   18.4.2011, 0:59
Александр Needle™   А я все никак выкачать не могу с сайта сорсы))   18.4.2011, 7:20
Warstone   Если не можешь - это хорошо... Но вообще надо пост...   18.4.2011, 10:21
Warstone   12-я ревизия. Баг починен. Core: [ADD...   18.4.2011, 19:19
Александр Needle™   Скачал , вроде как скомпилил , пока не могу судить...   19.4.2011, 14:14
Warstone   Ну ессно не можешь... Это ядро. В идеале, когда за...   19.4.2011, 23:36
Warstone   Плагин динамической статики умеет отслеживать пози...   21.4.2011, 23:57
StaticZ   Плагин динамической статики умеет отслеживать поз...   22.4.2011, 0:47
Warstone   http://ruosi.org/packetguide/index.xml#bothC8 Мож...   22.4.2011, 1:19
Warstone   Еще один маленький шажок... Технически - плагин за...   24.4.2011, 0:44
Warstone   Гм... Меня тут просили выложить скрины... Выкладыв...   1.5.2011, 14:04
d`ArcZeal   А чего это скрин, не пойму.   1.5.2011, 21:34
Warstone   Это скрин обычного шарда, практически любого, прос...   1.5.2011, 22:10
Warstone   Переделал заголовочный текст. Как вам такой вариан...   3.5.2011, 9:50
Александр Needle™   Шикарно , но видимо многие пока просто не знают ка...   3.5.2011, 14:41
Warstone   В следующем коммите будет новая фишка: Добавлена н...   10.5.2011, 22:50
Warstone   Следующие маилстоуны: Ядро: - Сделать загрузку пл...   12.5.2011, 14:32
Warstone   Слушайте, а кто-нибудь вообще думал использовать U...   14.5.2011, 21:10
StaticZ   Слушайте, а кто-нибудь вообще думал использовать ...   15.5.2011, 1:22
Warstone   Я думал... * Ориентировался правда на работу со ...   15.5.2011, 1:37
StaticZ   1) Почему... Все срастается. Просто это отдельные...   15.5.2011, 2:09
Destruction   А че там фантазировать??? проверяем процесы запус...   15.5.2011, 6:45
StaticZ   Конечно все можно всегда взломать, ни одно криптов...   15.5.2011, 9:09
Warstone   1-2) Я про мулы - ты вначале толкал тему о том чт...   15.5.2011, 8:49
Doberman   Я думаю желающих много. Лично меня интересует возм...   14.5.2011, 21:59
Warstone   Простейший метод - поиск по названию/размеру/сигна...   15.5.2011, 0:47
Doberman   Эээ :blink: Не хочу обидеть или показаться не ве...   15.5.2011, 1:23
Warstone   Проект опенсорсный, сам он GPL'ный, однако пла...   15.5.2011, 13:22
StaticZ   Да проблемы нет, как и везде есть своим + и -.. Пл...   15.5.2011, 13:34
Warstone   Да проблемы нет, как и везде есть своим + и -.. П...   15.5.2011, 15:07
Destruction   Warstone, я отвечал на пост StaticZ. Не вижу там н...   15.5.2011, 13:44
wap   Слушайте, а кто-нибудь вообще думал использовать ...   15.5.2011, 14:08
4 страниц V  1 2 3 > » 


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

 

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