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

        
Группа: Модераторы Наличность: 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. Тесты совместимости с другими сопутствующими программами не проводились. Механизм проверки сервера на работу с UOExtUOExt проверяет сервер на поддержку 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.
|
|
|
|
|
  |
Ответов
Vizit0r |
15.11.2010, 9:40
|

Registred
Сообщений: 2
Регистрация: 15.11.2010 Группа: Пользователи Наличность: 0
Пользователь №: 13.189

|
Цитата(Warstone @ 1.11.2010, 11:09)  UOExt или Ultima Online ® © Protocol Extender Суть идеи: На клиенте повесить обработчик протокола между клиентом и сервером. То есть технология такая: Клиент читает Login.cfg... Как только он делает CreateFileA, перехватчик создает, в отдельном потоке, слушающий тред и скармливает клиенту Что-то типа LoginServer=127.0.0.1,XXX, где XXX - динамически порт. Клиент коннектится к этому "серверу", тот, в свою очередь, коннектится к настоящему серверу и начинает пропускать протокол через себя. Естественно что через такую прокси систему так-же можно получать пакеты, которые неизвестны клиенту и обрабатывать их, посылать пакеты клиенту, не получая их с сервера. Что это дает: Возможность часть логики переложить на клиента. Я приведу пару примеров, которые просто очень хорошо ложатся в эту идеологию: 1) Есть "хотелка": Раскрашивать проперти вещи различными цветами. То есть красным если требование не выполнено и зеленым, если оно - выполнено. Это можно сделать на сервере, но зачем? Это будет занимать лишнее время сервера, которое всегда дорого. Можно это-же сделать на клиенте. Тогда раскрашивать будет сам клиент, а серверу, простите, пофигу. 2) Есть "хотелка": Хочу ощще ппц спец. эффекты при касте магии. То есть кидается спелл... Дальше начинаются спец. эффекты по всему экрану. Они ни на что не влияют, но они есть... Такую штуку, опять-таки, хорошо делать на клиенте, а сервер будет просто посылать id анимации, время, прошедшее с запуска анимации.
Вообще, тут возможности безграничны.
Что есть на данный момент: преАльфа версия. Перехват протокола реализован. Инъекция производится с помощью "Запускатора".
Что будет дальше: преАльфа, после вылова глюков и, возможно, рефакторинга кода, перейдет в Альфу, с которой удастся поработать некоторым шардам (пока один на RunUO. Возможно нужен будет еще один на Sphere/POL, но все зависит от активности Сферойдов и POLотеров =))
я обожаю изобретателей велосипедов. они натыкаются на проблемы, сто раз решенные до них, при этом не читают эти ваши интернеты, и героически их преодолевают. Даю намек - исходники инжекта уже лет 10 как лежат на сурс форже. Там как раз и расшифрование+расжатие трафика, подмены пакетов, и отсыл своих пакетов клиенту\серверу, и прочее, прочее. Вариантов два - или автор как раз их и использовал (но скромно молчит об этом), либо автору надо вручить медаль героического изобретателя велосипедов. После прочтения постов про возможность встраивания ЛЮБЫХ плагинов-аддонов - стало понятно, что надо будет детектить еще и эту dll'ку в кач-ве вредной. P.S. Вообще замечательная тема, не мог пройти мимо. даже потратил минуту на регистрацию (IMG: style_emoticons/default/smile.gif) P.P.S. А название топика- то какое классное "We do what EA can't.". Я бы сказал, что EA это нафиг не надо просто. впрочем автор видимо себя считает более крутым, чем программисты из EA )))
|
|
|
|
StaticZ |
15.11.2010, 17:44
|

        
Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009 Группа: Пользователи Наличность: 0 Из: РФ, Москва
Пользователь №: 11.948

|
Цитата(Vizit0r @ 15.11.2010, 9:40)  P.P.S. А название топика- то какое классное "We do what EA can't.". Я бы сказал, что EA это нафиг не надо просто. впрочем автор видимо себя считает более крутым, чем программисты из EA )))
EA много чего не надо, однако это не значит что пользователям это не надо. Например изменение расширения игрового окна в UO EA досихпор не может сделать хотябы 1024х768, что совсем не много при современной диагонали монитора минимум 17-19 дюймов, я уже молчу про то что и 24-26 дюймовые мониторы давно уже продаются по приемлемой цене. То что современные компьютеры без проблем потянут UO на любом разрешении тоже очевидно.. EA выпускает аддоны но исправить это даже не хотят, хотя уверен там работы на день максимум на неделю, а при помощи Razor'а можно ставить любое разрешение и все этим пользуются и всем это надо... Также не стоит забывать что EA делает клиент только для офф сервера а не для фришардов, а у многих фришардов UO мягко сказать сильно переделанна, при этом так сказать возникают проблемы связанные с ограничением клиента, т.е. клиент мешает реализовать многие задумки такчто слоган "We do what EA can't." имеет полное право на жизнь. Конечно есть Инжект (у которого кстати проблемы совместимости с новыми клиентами), но он ориентирован на игроков, а данная тулса предназначена для использования нестандартных фишек фришардов и плагины тут в основном делают не игроки а администрация под конкретно свой сервер. Без подержки плагинов сервером толку от них будет не много. Кстати один из вариантов - "теневая авторизация" и запрет разора и инжекта и прочего макросного софта, о чем кстати мечтают много фришардов. Такчто сам проект востребован, но конечно не для игроков оси-стайл серверов, ну а дальше все зависит от реализации идеи... :-)
--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.Game isn't a dream, it is the reality, reality which is coming while we dream...
|
|
|
|
Сообщений в этой теме
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 Warstone
я обожаю изобретателей велосипедов. они натыкаютс... 15.11.2010, 10:21 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|