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

19 страниц V « < 2 3 4 5 6 > »   
Ответить в эту темуОткрыть новую тему
> Uoext. Расширяя Возможности Клиента, We do what EA can't.
Warstone
сообщение 10.4.2011, 5:35
Сообщение #61


*********

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



Ошибка найдена. Сам и д и о т. Если коротко, то по закрытию потока от клиента или от сервера - принудительно перегружал все плагины. Через FreeLibrary и LoadLibrary. Что в этом случае с хуками происходит - сами понимаете.

А то я уже перехват через VEH сделал... (Это когда ставится свой перехватчик брейкпоинта, а в перехватываемой процедуре изменяется только один байт) А оно все-равно падает... А оно и должно было падать...

Сообщение отредактировал Warstone - 10.4.2011, 5:38


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


*********

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



Залил 11-ю ревизию.
Список изменений:
Код
All:
[ADD] Delphi XE support.

Core:
[ADD] Initialization code refactoring. All init code now in CoreInitialization
module.
[ADD] WRITELOG directive to make debug build without protocol dump.
[CHANGE] Plug-ins initialization now makes before main executable starts.

Plug-ins:
[ADD] ProxyStart, ProxyEnd event.
[CHANGE] Plug-in export procedure renamed to UOExtInit.

UOLoader:
[CHANGE] Dll inject code reworked.

Many minor improvements.


Сообщение отредактировал Warstone - 15.4.2011, 17:51


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


*********

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



Еще один шажок на пути к революции остался позади... Спасибо за упорство и труды, главное не бросай начатое! (IMG:style_emoticons/default/wink.gif) За державу правда обидно, такая нелюбовь к русскому, что даже готов с словариком мучится переводить на буржуйский?

Чето я уже немного отстал от этой темы, летом буду наверствовать... попробую чтонибудь путное через UOExt намутить и опробовать в полевых условиях... Кстати уже есть подвиги с рануошным модулем и енкриптом и вообще кто-то этим занимается? а то могу помочь как время появиться )


--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Wap
сообщение 15.4.2011, 22:07
Сообщение #64


**********

Администратор Форума
Сообщений: 3.005
Регистрация: 22.12.2006
Группа: Администраторы
Наличность: 31648
Пользователь №: 9.227



Я вообще по-русски в программно-технических постах Warstone с трудом что-то понимаю, а тут еще на английском. (IMG:style_emoticons/default/smile.gif)


--------------------
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Warstone
сообщение 15.4.2011, 23:31
Сообщение #65


*********

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



Цитата(StaticZ @ 15.4.2011, 21:47) *

Еще один шажок на пути к революции остался позади... Спасибо за упорство и труды, главное не бросай начатое! (IMG:style_emoticons/default/wink.gif) За державу правда обидно, такая нелюбовь к русскому, что даже готов с словариком мучится переводить на буржуйский?

Чето я уже немного отстал от этой темы, летом буду наверствовать... попробую чтонибудь путное через UOExt намутить и опробовать в полевых условиях... Кстати уже есть подвиги с рануошным модулем и енкриптом и вообще кто-то этим занимается? а то могу помочь как время появиться )

Ну... С Английским у меня проблем нету (или я о них не знаю), а модуль GPL, значить может быть и RunUO'шники с RunUO.com подтянуццо.
РанУОшный модуль в зачаточном состоянии и пока на холде, так как не до него.
Энкрипт работает. Автодетект клиента (шифрованный или не шифрованный) и хардкодед конфиг сервера (может быть как шифрованный так и не шифрованный). То есть можно не шифрованным клиентом подключаться к шифрованному серверу и после прохождения прокси протокол будет шифроваться.
Всем этим занимаюсь я. Больше нету никого.

Цитата(wap @ 15.4.2011, 23:07) *

Я вообще по-русски в программно-технических постах Warstone с трудом что-то понимаю, а тут еще на английском. (IMG:style_emoticons/default/smile.gif)
Спецом для тебя код с камментами одного куска из UOLoader'а:
Код
Function InjectDll(Process: dword; ModulePath, InitProcedureName: PAnsiChar): Boolean;
const
  InjectThreadSize = 568;
var
  Memory:pointer;
  Code, ICode: dword;
  BytesWritten: dword;
  ThreadId: dword;
  hThread: dword;
  hKernel32: dword;
  pInject: Pointer;
begin
// Here is codegenerate for CreateRemoteThread procedure
// Main idea is:
//   hLibrary := LoadLibraryA('<ProtocolExtender.dll>');
//   @pProcedure := GetProcAddress(hLibrary, 'CoreInitialize');
//   pProcedure(); // stdcall, no params.
//   ExitThread(0);
// Asm code:
//   PUSH <PointerToDllName>       ; 68 GG GG GG GG
//   CALL <PointerToLoadLibraryA>  ; 15 FF HH HH HH HH; EAX = hLibrary
//   PUSH <PointerToCoreInitialize>; 68 II II II II
//   PUSH EAX                      ; 50
//   CALL <PointerToGetProcAddress>; 15 FF JJ JJ JJ JJ; EAX = @pProcedure
//   CALL EAX                      ; D0 FF
//   PUSH 0                        ; 00 6A
//   CALL <PointerToExitThread>    ; 15 FF KK KK KK KK
//
// Addr  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
// 0000: 68 GG GG GG GG 15 FF HH HH HH HH 68 II II II II
// 0010: 50 15 FF JJ JJ JJ JJ FF D0 6A 00 15 FF KK KK KK
// 0020: KK
// Code ends here. Data begins here.
// 0020:    hh hh hh hh jj jj jj jj kk kk kk kk
// 002D - 0132 : DllName: Array [0..MAX_PATH] of Byte; Addr of GG GG GG GG
// 0133 - 0237 : DllInitProc: Array [0..MAX_PATH] of Byte; Addr of II II II II
//
// Needed memory: 568 bytes.


  Result := False;
  Memory := VirtualAllocEx(Process, nil, InjectThreadSize,
                           MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  if Memory = nil then Exit;

  Code := dword(Memory);

  pInject := GetMemory(InjectThreadSize);
  ICode := DWord(pInject);
  hKernel32 := GetModuleHandle('kernel32.dll');

  PByte(pInject)^        := $68;          // PUSH OpCode
  PDWord(ICode + $01)^   := Code + $2D;   // PUSH Argument
  PWord(ICode  + $05)^   := $15FF;        // Call OpCode (LoadLibraryA)
  PDWord(ICode + $07)^   := Code + $21;   // Call Argument
  PByte(ICode  + $0B)^   := $68;          // PUSH OpCode
  PDWord(ICode + $0C)^   := Code + $0133; // PUSH Argument
  PByte(ICode  + $10)^   := $50;          // PUSH EAX OpCode
  PWord(ICode  + $11)^   := $15FF;        // Call OpCode (GetProcAddr)
  PDWord(ICode + $13)^   := Code + $25;   // Call Argument
  PWord(ICode  + $17)^   := $D0FF;        // CALL EAX OpCode
  PWord(ICode  + $19)^   := $006A;        // PUSH 0 OpCode
  PWord(ICode  + $1B)^   := $15FF;        // Call OpCode (ExitThread)
  PDWord(ICode + $1D)^   := Code + $29;   // Call Argument
  // Code generation ends. Procedure pointers begin.
  PDWord(ICode + $21)^   := DWord(GetProcAddress(hKernel32, 'LoadLibraryA'));
  PDWord(ICode + $25)^   := DWord(GetProcAddress(hKernel32, 'GetProcAddress'));
  PDWord(ICode + $29)^   := DWord(GetProcAddress(hKernel32, 'ExitThread'));
  // Procedure pointers end. String constants begin.
  lstrcpyA(PAnsiChar(ICode + $2D), ModulePath);
  lstrcpyA(PAnsiChar(ICode + $0133), InitProcedureName);

  //записать машинный код по зарезервированному адресу
  WriteProcessMemory(Process, Memory, pInject, InjectThreadSize, BytesWritten);
  FreeMemory(pInject);
  //выполнить машинный код
  hThread := CreateRemoteThread(Process, nil, 0, Memory, nil, 0, ThreadId);

  if hThread = 0 then Exit;
  WaitForSingleObject(hThread, INFINITE);
  CloseHandle(hThread);
  Result := True;
end;

Если коротко, то тут идет кодогенерация и патчинг оффсетов для машинных кодов на лету.

Идея честно потырена с wasm. Сделаны фиксы так как тот код в некоторых случаях может вызывать дедлоки и вообще себя нехорошо вести.


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


*********

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



Собрал черновой вариант динамической статики (сначала только на клиенте)... Падает... Кажется я сам себя хучу и от этого там в хуках черт ногу сломит. Пойду-ка я поспать...


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


********

Mammy's hero
Сообщений: 1.228
Регистрация: 26.5.2009
Группа: Пользователи
Наличность: 0
Из: Украина , Одесса
Пользователь №: 11.891
Возраст: 33



Кашерно , как бы мне в этом покавырятся?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Warstone
сообщение 16.4.2011, 11:02
Сообщение #68


*********

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



http://code.google.com/p/uo-ext/

Там есть сорс и, насколько я понимаю, можно через svn слить исходники. Компилится 7-й дельфой и XE, а значит 95% что и всеми остальными.


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


*********

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



Нашел ошибку в ядре... [props не работает. Скорее всего из-за того, что props очень длинная команда и идет в несколько пакетов - где-то как-то неправильно кешируюсь. Так что скоро будет фикс.


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


********

Mammy's hero
Сообщений: 1.228
Регистрация: 26.5.2009
Группа: Пользователи
Наличность: 0
Из: Украина , Одесса
Пользователь №: 11.891
Возраст: 33



А я все никак выкачать не могу с сайта сорсы))
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Warstone
сообщение 18.4.2011, 10:21
Сообщение #71


*********

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



Если не можешь - это хорошо... Но вообще надо поставить TortoiseSVN и там сделать checkout для http://uo-ext.googlecode.com/svn/trunk/ с пользователем uo-ext-read-only

Если-же ты счастливый обладатель православного linux например Ubuntu, то:
sudo apt-get install svn
mkdir ~/uo-ext
cd ~/uo-ext
svn checkout http://uo-ext.googlecode.com/svn/trunk/ uo-ext-read-only


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


*********

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



12-я ревизия. Баг починен.
Код
Core:
[ADD] Compile time directives now showed in debug window.
[ADD] DEBUGWINDOW directive. When it's active core makes console window. Useful for plug-ins debugging. (Auto added when DEBUG active )
[CHANGE] Renaming main dll to UOExt.dll
[FIX] When bulk packet arrives (like [props) dll didn't work correctly.


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


********

Mammy's hero
Сообщений: 1.228
Регистрация: 26.5.2009
Группа: Пользователи
Наличность: 0
Из: Украина , Одесса
Пользователь №: 11.891
Возраст: 33



Скачал , вроде как скомпилил , пока не могу судить о плюсах и минусах)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Warstone
сообщение 19.4.2011, 23:36
Сообщение #74


*********

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



Ну ессно не можешь... Это ядро. В идеале, когда запустил в релиз версии ты должен играть в нормальную УО без изменений. Все "фишки" делаются через плагины. Причем я, скорее всего, перепишу плагины так, что-бы результатом было 2 dll после компиляции... Что-то типа UOExt.client.dll и UOExt.server.dll. 2-я опциональная. Клиентская будет загружаться с сервера при входе на него ядром (UOExt.dll), инициализироваться и после этого будет запускаться сам клиент. Серверная будет использоваться в RunUO/Sphere/<YourEmulatorNameHere> и с ней пока все туманно.

На повестке дня:

- Надо-ли делать поддержку fpc/lazarus? Так как там довольно много надо переделывать.
- Предложения, пожелания, плюшки?

На данный момент работаю над динамической статикой... Есть подвижки, но до релиза еще не скоро и, честно говоря, пока не знаю - буду-ли ее выкладывать в свободный доступ.

Да, еще один маилстоун: Для интеграции в ваши лоадеры/стартеры и т.д. Надо мне будет предусмотреть коммуникацию. Кстати, собственные лоадеры есть у кого? Ну которые проверяют дистриб допустим и патчат его по мере необходимости?


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


*********

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



Плагин динамической статики умеет отслеживать позицию клиента. Правда пока не опирается на подтверждение сервера (там по реджекту надо откатывать позицию, а пока не откатывается).

Вопрос: UpdateRange что, по умолчанию не отсылается ни клиентом ни сервером и всегда равен 18?

Сообщение отредактировал Warstone - 21.4.2011, 23:58


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


*********

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



Цитата(Warstone @ 22.4.2011, 0:57) *

Плагин динамической статики умеет отслеживать позицию клиента. Правда пока не опирается на подтверждение сервера (там по реджекту надо откатывать позицию, а пока не откатывается).

Вопрос: UpdateRange что, по умолчанию не отсылается ни клиентом ни сервером и всегда равен 18?

Нет, он вообще не отсылается это параметр ранки отвечающий за то на каком расстоянии от итема/мабайла шлутся клиентам пакеты о нем... для разных итемов мобайлов может быть свой UpdateRange. У меня например для мультисов завышен раза в 3-4 чтобы на радаре рисовались


--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Warstone
сообщение 22.4.2011, 1:19
Сообщение #77


*********

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



http://ruosi.org/packetguide/index.xml#bothC8

Может быть послано как клиенту, так и серверу. Клиент это посылает, когда хочет видеть дальше. Сервер посылает - хз когда. То что Ранка исказила смысл - не волнует. Если я правильно помню - Разор может этим управлять.


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


*********

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



Еще один маленький шажок... Технически - плагин заработал... Правда там такая ахинея пока-что показывается...


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


*********

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



Гм... Меня тут просили выложить скрины... Выкладываю:
SetUpdateRange 17:
(IMG:http://i20.fastpic.ru/thumb/2011/0501/f3/9692d3d51135402e8d0eddfae150bcf3.jpeg)

SetUpdateRange 8:
(IMG:http://i20.fastpic.ru/big/2011/0501/9a/52fa6a014376a65b0d341bb2cf75eb9a.jpeg)

Бегает... Пока глюков не обнаружено.


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


**********

Elder
Сообщений: 2.963
Регистрация: 27.11.2005
Группа: Пользователи
Наличность: 7638
Пользователь №: 4.522
Возраст: 34



А чего это скрин, не пойму.


--------------------
Olmer online administrator
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

19 страниц V « < 2 3 4 5 6 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

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