| 
		
	
	
	
	
	   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. 
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
 
	
		   | 
		   | 
	 
 
	Ответов	 
	
		| StaticZ | 
		
			
			
				   15.5.2011, 1:22
			 
			
			
		 | 
	 
	
		
        	 
  
        		         
  
        		Разработчик проекта "Квинтэссенция" 
        		Сообщений: 2.155 
        		Регистрация: 15.6.2009         		Группа: Пользователи Наличность: 0         		Из: РФ, Москва 
        		Пользователь №: 11.948
  
        		 
        	 
        	   
        | 
       
			
			Цитата(Warstone @ 14.5.2011, 22:10)    Слушайте, а кто-нибудь вообще думал использовать UOExt в своих проектах? Или я тут сам для себя пока-что делаю?
 
 Я думал...  * Ориентировался правда на работу со статикой и мапой, но не насколько я понял с этим не срослось... а жаль, тема былабы полезная.... * ОТсюда надеялся на динамическое изменение содержимого радаркола (была такая задумка чтобы качество радара зависило от скила картографии, аля как в эсхалоне)... * Спихнуть львиную часть трудов LOS с сервера на клиенты * Дополнительная защита и валидация (для запрета мультиводства и использования нескольких акков и стороних программ, кроме разора) Ну и приятные мелочи: * Уменьшение трафика - сжатие, распаковка, частичная обработка со стороны клиента... * Реализация каким-то образом через одно место динамичный гампов (есть задумки например для мини игр). Но если честно сильно вдаваться в разработку не оч хочеться... хватает дел с сервером, сентрадом+, фидлером+, да и еще все собираюсь клиент потянуть....  
			
			
  -------------------- 
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.Game isn't a dream, it is the reality, reality which is coming while we dream... 
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
	
		| Warstone | 
		
			
			
				   15.5.2011, 1:37
			 
			
			
		 | 
	 
	
		
        	 
  
        		         
          		Группа: Модераторы Наличность: 0         		
        		Пользователь №: 10.905 
Возраст: 25
  
        		 
        	 
        	   
        | 
       
			
			Цитата(StaticZ @ 15.5.2011, 2:22)    Я думал...  * Ориентировался правда на работу со статикой и мапой, но не насколько я понял с этим не срослось... а жаль, тема былабы полезная.... * ОТсюда надеялся на динамическое изменение содержимого радаркола (была такая задумка чтобы качество радара зависило от скила картографии, аля как в эсхалоне)... * Спихнуть львиную часть трудов LOS с сервера на клиенты * Дополнительная защита и валидация (для запрета мультиводства и использования нескольких акков и стороних программ, кроме разора)
  Ну и приятные мелочи: * Уменьшение трафика - сжатие, распаковка, частичная обработка со стороны клиента... * Реализация каким-то образом через одно место динамичный гампов (есть задумки например для мини игр).
  Но если честно сильно вдаваться в разработку не оч хочеться... хватает дел с сервером, сентрадом+, фидлером+, да и еще все собираюсь клиент потянуть....
 
 1) Почему... Все срастается. Просто это отдельные проекты. Более того... 2-й маилстоун (насчет посылки кастом пакетов ЗА оригинальными) - растет именно из динамической статики. 2) А вот тут пока не представляю даже как. Так как радарколор, если мы говорим о чистом радарколоре, это набор данных, а не метод их показа. Если со статикой методом можно регулировать через пакеты, то с радарколором через пакеты не регулируется ничего. Тут 2 варианта: а) При передвижении перепосылать весь видимый на радаре набор... Извините, качалка сдохнет... Пусть и на локалхосте... Это в, порядка 100 раз, больше чем перегонять видимый набор тайлов на каждое движение, хотя у меня сейчас это работает не так. б) Изменять отрисовку радара на экран. Тут надо заниматься дизассемблером и прочими страшными вещами, от чего я, пока-что, бегу как от не знаю чего и... получается... В частности динамическая статики может работать (с некоторыми изменениями, а может и не надо будет ничего менять) и на Iris2. 3) Насчет LOS - легко... Но надо смотреть возможности чита. 4) Ну сейчас и разор не запускается )) Хотя это более общий случай от того, что предложил Добер. 5) Это у меня самого было в голове. Там может быть все не просто. 6) Тут можно работу с гампами оставить на клиенте... Ну частичную. Если, опять-таки, не лезть в дизасм. Цитата(Doberman @ 15.5.2011, 2:23)   Эээ  (IMG: style_emoticons/default/blink.gif)  Не хочу обидеть или показаться не вежливым, но я, мягко говоря, мало понял из выше сказанного. Давай пофантазируем... Как-бы ты решал эту задачу (поиск левого софта)?  
			
			
  -------------------- 
Do. Or do not. There is no Try! © Master Joda, Dagobah, Star Wars: Episode V. 
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
 
	Сообщений в этой теме 
	   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       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  
 
        				  
  | 
 |