avatar_Fantazy

Ошибка GetQueueCompletionStatus в MU online: Серверные файлы MU, Помощь

Автор Fantazy, 2011 Март 11, 12:45

« назад - далее »

0 Пользователи и 3 гостей просматривают эту тему.

Ключевые слова [SEO] mu onlineонлайн серверgetqueuecompletionstatus

Fantazy

GameServer: 1.00.90

Знаю что данная проблема уже обсуждалось и фиксов при достаточно, но у меня немного все выглядит иначе:

- Фикс у меня активен вот этот:
https://forum.ragezone.com/f508/gameserver-...tml#post5564020

Казалось бы GetQueueCompletionStatus - нигде в гс-е не мерцает, но оказывается нет, примерно через пару дней онлайн сервера, мне выскакивает ошибка:

ЦитироватьError Thread : GetQueueCompletionStatus( 1231 )

после же всех выбивает из игры и никого не пускает пока не сделать рестарт.

GameServer можно скачать тут

Через дебагер перейдя на оффсет 004B1D8F, можно увидеть как разработчик уже воспользовался фиком и сделал JMP.

Цитировать004B1D8F  . E9 B8020000      JMP GameServ.004B204C

Перейдя на оффсет 004B204C можно увидеть сам фикс:

004B204C  > 837D D0 40        CMP DWORD PTR SS:[EBP-30],40
004B2050  .^0F84 83FDFFFF    JE GameServ.004B1DD9
004B2056  . 837D D0 79        CMP DWORD PTR SS:[EBP-30],79
004B205A  .^0F84 79FDFFFF    JE GameServ.004B1DD9
004B2060  . 817D D0 D4040000  CMP DWORD PTR SS:[EBP-30],4D4
004B2067  .^0F84 6CFDFFFF    JE GameServ.004B1DD9
004B206D  . 817D D0 E3030000  CMP DWORD PTR SS:[EBP-30],3E3
004B2074  .^0F84 5FFDFFFF    JE GameServ.004B1DD9
004B207A  .^E9 28FDFFFF      JMP GameServ.004B1DA7

Что может быть не так, где может быть проблема, и почему после стольки фиксов мне все равно выдает

ЦитироватьError Thread : GetQueueCompletionStatus( 1231 )

Killbrum

потому что это не фикс. Я вот вообще не понимаю... как такое можно называть фиксом? -_- ... все фиксы ядра сводятся к нопам и джампам х_х . Переведя на русский это всё значит что "ошибка есть, но видеть вы её не будете".

ShoT

Цитата: Fantazy от 2011 Март 11, 13:45  GameServer: 1.00.90

Знаю что данная проблема уже обсуждалось и фиксов при достаточно, но у меня немного все выглядит иначе:

- Фикс у меня активен вот этот:
https://forum.ragezone.com/f508/gameserver-...tml#post5564020

Казалось бы GetQueueCompletionStatus - нигде в гс-е не мерцает, но оказывается нет, примерно через пару дней онлайн сервера, мне выскакивает ошибка:



после же всех выбивает из игры и никого не пускает пока не сделать рестарт.

GameServer можно скачать тут

Через дебагер перейдя на оффсет 004B1D8F, можно увидеть как разработчик уже воспользовался фиком и сделал JMP.



Перейдя на оффсет 004B204C можно увидеть сам фикс:

004B204C   > 837D D0 40        CMP DWORD PTR SS:[EBP-30],40
004B2050   .^0F84 83FDFFFF     JE GameServ.004B1DD9
004B2056   . 837D D0 79        CMP DWORD PTR SS:[EBP-30],79
004B205A   .^0F84 79FDFFFF     JE GameServ.004B1DD9
004B2060   . 817D D0 D4040000  CMP DWORD PTR SS:[EBP-30],4D4
004B2067   .^0F84 6CFDFFFF     JE GameServ.004B1DD9
004B206D   . 817D D0 E3030000  CMP DWORD PTR SS:[EBP-30],3E3
004B2074   .^0F84 5FFDFFFF     JE GameServ.004B1DD9
004B207A   .^E9 28FDFFFF       JMP GameServ.004B1DA7

Что может быть не так, где может быть проблема, и почему после стольки фиксов мне все равно выдает

Не хочеш ср*ть не мучай *опу... Скачай другой гс и все...

Fantazy

За финансовую помощь кто поможет?
ICQ: 462-157-679, Skype: fantazymd.

[P4F]v1ru5

исходники есть?

одним дебаггом тут офк ничего не сделаешь.... да и как верно подметил килл, это и не было фиксом...

Simp1e

#5
Фикс просто корявый)

я тоже пробовал этот фикс что обсуждался в темах но в принципе он не помогает не чему..

вот мой фикс который действительно решает проблему для ОС x64 то есть добавлена обработка ошибки 79 Фикс и оффсеты предназначены для основного гса 1.00.90


ЦитироватьBYTE IOCPResponceErrorJump[] = {0xE9, 0xC3, 0x02, 0x00, 0x00, 0x90, 0x90, 0x90, 0x90};
// ----
memcpy((int*)0x004B1D9E     , IOCPResponceErrorJump ,     sizeof(IOCPResponceErrorJump));



BYTE IOCPAdd79Error[] = {0x81, 0x7D, 0xD0, 0xE3, 0x03, 0x00, 0x00, 0x0F, 0x84,
0x66, 0xFD, 0xFF, 0xFF, 0x83, 0x7D, 0xD0, 0x79, 0x0F,
0x84, 0x5C, 0xFD, 0xFF, 0xFF, 0xE9, 0x25, 0xFD, 0xFF, 0xFF};
// ----
memcpy((int*)0x004B2066     , IOCPAdd79Error ,     sizeof(IOCPAdd79Error));

Imp0ssible

Вадим, в чем собственно разница между тем что есть и то что ты дал?

Simp1e

а я не смотрел) в чём разница я смотрел фикс что есть на рз да и ты помнишь тот фикс что делал Legrand ты сам говорил что он кривой) я его попробовал он у меня не работал я сделал свой у меня работает всё как надо на x64 .. работает без лаж вот и выложил)

Imp0ssible

У него не фикс Егора, да и фикс тот был от Хаббита.
У него фикс в ГС-е уже и более того он такой же что и твой код делает.

Simp1e

#9
Миша ты ошибаешься смотри как тут

Цитировать004B1D86   . FF15 0CAFFF0A  CALL DWORD PTR DS:[<&KERNEL32.GetLastErr>; [GetLastError
004B1D8C   . 8945 D0        MOV DWORD PTR SS:[EBP-30],EAX
004B1D8F   . E9 B8020000    JMP GameServ.004B204C > Прыгаем на функцию N1
004B1D94     90             NOP
004B1D95   . 817D D0 D40400>CMP DWORD PTR SS:[EBP-30],4D4
004B1D9C   . 74 3B          JE SHORT GameServ.004B1DD9
004B1D9E     FF25 00B57100  JMP DWORD PTR DS:[71B500] > Прыгаем на функцию N 2
004B1DA4     90             NOP
004B1DA5     90             NOP
004B1DA6     90             NOP
004B1DA7   > 68 104B7307    PUSH GameServ.07734B10                   ; /pCriticalSection = GameServ.07734B10

Функция N 1

004B204C     837D D0 40     CMP DWORD PTR SS:[EBP-30],40
004B2050    ^0F84 83FDFFFF  JE GameServ.004B1DD9
004B2056     837D D0 79     CMP DWORD PTR SS:[EBP-30],79
004B205A    ^0F84 79FDFFFF  JE GameServ.004B1DD9
004B2060     817D D0 D40400>CMP DWORD PTR SS:[EBP-30],4D4
004B2067    ^0F84 6CFDFFFF  JE GameServ.004B1DD9
004B206D     817D D0 E30300>CMP DWORD PTR SS:[EBP-30],3E3
004B2074    ^0F84 5FFDFFFF  JE GameServ.004B1DD9
004B207A    ^E9 28FDFFFF    JMP GameServ.004B1DA7



Функция N 2

void __declspec(naked) GetQueComplStatusFix()
{
_asm
{
//004B1D9E Hook, JMP back 004B1DA7
CMP DWORD PTR SS:[EBP-0x30],0х3Е3 //Original
JE AllowSomeShit;

CMP DWORD PTR SS:[EBP-0x30],0x79 //121 Error
JE AllowSomeShit;

mov edi, 0x004B1DA7;
jmp edi;

AllowSomeShit:
mov edi, 0x004B1DD9;
jmp edi;
}
}

у него тут вообше косяк


и как он не отличается от моего варианта?


Цитировать004B1D8C  |. 8945 D0        |MOV DWORD PTR SS:[EBP-30],EAX
004B1D8F  |. 837D D0 40     |CMP DWORD PTR SS:[EBP-30],40
004B1D93  |. 74 44          |JE SHORT GameServ.004B1DD9
004B1D95  |. 817D D0 D40400>|CMP DWORD PTR SS:[EBP-30],4D4
004B1D9C  |. 74 3B          |JE SHORT GameServ.004B1DD9
004B1D9E     E9 C3020000    |JMP GameServ.004B2066 > прыгаем на свободное место
004B1DA3     90             NOP
004B1DA4     90             NOP
004B1DA5     90             NOP
004B1DA6     90             NOP
004B1DA7  |. 68 104B7307    |PUSH GameServ.07734B10                  ; /pCriticalSection = GameServ.07734B10


004B2066     817D D0 E30300>CMP DWORD PTR SS:[EBP-30],3E3
004B206D    ^0F84 66FDFFFF  JE GameServ.004B1DD9
004B2073     837D D0 79     CMP DWORD PTR SS:[EBP-30],79
004B2077    ^0F84 5CFDFFFF  JE GameServ.004B1DD9
004B207D    ^E9 25FDFFFF    JMP GameServ.004B1DA7 > возвращаем прыжок на CriticalSection

не видишь в этих 2 фиксах не какого различия?

Hybrid

004B1D9C    ^EB B4         JMP SHORT Gameserv.004B1D52

Похожие темы (5)