принудительная синхронизация / проблемы синхронизации / PP

Официальный сервер Ragnarok On-Line в России - https://ru.4game.com/ro/install/

Модератор: 4epT

Правила форума
ВНИМАНИЕ: реклама сторонних ботов запрещена! Всякие плюшки - можно :)
DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid » Сб янв 13, 2007 4:29 pm

japplegame писал(а):Этот баг наблюдается только с функцией 0E? Есть какая-то корреляция? Типа, как только вызывается 0E, так сразу шлются разные пакеты?
Усе =) Я нашел секвенс - возможно один из секвенсов... он прятался намного выше места где присходит глюк, вот сволач.

Вызываем ф-ю
Using Function [0E] AccID: [DA EB DE AD] MapSync: [7A E9 A6 15] Sync: [B9 6E B6 03] - MonID [C7 D2 00 00]
Len = 68 - 89 00 44 00 00 00 00 00 00 00 00 00 00 C2 C3 D2 C4 D2 00 C5 D2 00 00 C6 D2 00 00 00 C7 D2 00 00 00 00 02 00 03 00 00 00 04 00 00 00 00 00 05 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 07 00 00 00
это если вызвать ее просто - все ок.
Вызываем сначала
Using Function [0E] AccID: [DA EB DE AD] MapSync: [7A E9 A6 15] Sync: [29 FD A0 03] - MonID [E0 D2 00 00]
Len = 34 - 89 00 22 00 00 00 DF D2 00 00 00 E0 D2 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 07 00 00 00

Потом эту
Using Function [0D] AccID: [DA EB DE AD] MapSync: [7A E9 A6 15] Sync: [28 48 AF 03] - MonID [E4 D2 00 00]
Len = 66 - 89 00 42 00 00 00 00 00 DB DC D2 DD DF E0 D2 E1 D2 00 E2 D2 00 00 E3 D2 00 00 00 E4 D2 00 00 00 02 00 03 00 00 00 04 00 00 00 00 00 05 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 07 00 00 00

А потом такую же как первая:
Using Function [0E] AccID: [DA EB DE AD] MapSync: [7A E9 A6 15] Sync: [B9 6E B6 03] - MonID [C7 D2 00 00]
Len = 60 - 89 00 3C 00 00 00 00 00 DB C2 C3 D2 C4 D2 00 C5 D2 00 00 C6 D2 00 00 D2 C7 D2 00 00 03 00 00 00 04 00 00 00 00 00 05 00 00 00 00 00 05 00 06 00 00 00 00 00 06 00 00 00 07 00 00 00

Длина другая, содержимое другое.

В архиве программа, ее надо скопировать в каталог куда скопировать
ropp.dll, и модуль Win32 АПИ, что бы работал импорт из дллки, запскаем ее она читает файл console1.txt и создает logи

Похоже на интереференцию 0D и 0E ?
Последний раз редактировалось DInvalid Сб янв 13, 2007 5:15 pm, всего редактировалось 1 раз.

Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse » Сб янв 13, 2007 4:32 pm

DInvalid
Хочещь Маленький Прикол! Каждый следуйщий пакет зависит от предыдущего! так что лучше взять тупой дамп пакетов с клиента, и емуля. и сравнивать их. Иначе никак!

DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid » Сб янв 13, 2007 4:36 pm

Да ну? Вот неудача )))
Только вот почему то когда я удалял посланные пакеты выше вот
этого
Using Function [0E] AccID: [DA EB DE AD] MapSync: [7A E9 A6 15] Sync: [B9 6E B6 03] - MonID [C7 D2 00 00]
Len = 60 - 89 00 3C 00 00 00 00 00 DB C2 C3 D2 C4 D2 00 C5 D2 00 00 C6 D2 00 00 D2 C7 D2 00 00 03 00 00 00 04 00 00 00 00 00 05 00 00 00 00 00 05 00 06 00 00 00 00 00 06 00 00 00 07 00 00 00
его длина не менялась? а?

П.С. Значит я вас ввел в заблужение? )))
Фу я нуп )))

Свалю все на Jerry это все он проверял мой пакет на глючность =)))


П.С. Но мы не сдаемся ))) если я беру свой реальный лог, в котором есть глюк, и скармливаю его этой программе, она его воспроизводит )))
Так что воспроизвести глюк с помощью ее можно )))
(типа отмазался)
К тому же,

japplegame
Профессионал
Сообщения: 272
Зарегистрирован: Вс ноя 05, 2006 2:03 pm

Сообщение japplegame » Сб янв 13, 2007 6:56 pm

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

japplegame
Профессионал
Сообщения: 272
Зарегистрирован: Вс ноя 05, 2006 2:03 pm

Сообщение japplegame » Сб янв 13, 2007 7:34 pm

Джерри провел эксперимент и я его повторил. Эксперимент подтвердил, что похоже DInvalid прав.
Функции 0E и 0D интерферируют.
Сами по себе работают правильно. а вперемежку начинают глючить. Это объясняет все.
Ну чтож место порытия собаки найдено. Дальше осталось найти где пересечение этих функций. А это уже дело техники. Думаю это займет немного времени.
Спасибо всем кто принял участие в этом полезном деле.

japplegame
Профессионал
Сообщения: 272
Зарегистрирован: Вс ноя 05, 2006 2:03 pm

Сообщение japplegame » Сб янв 13, 2007 7:42 pm

Процесс пошел. Одна из функций бьет ключ соседки. Однажды побитая, функция больше вообще не дает правильных значений. Со всеми вытекающими.

DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid » Сб янв 13, 2007 7:46 pm

japplegame писал(а):Джерри провел эксперимент и я его повторил. Эксперимент подтвердил, что похоже DInvalid прав.
Функции 0E и 0D интерферируют.
Сами по себе работают правильно. а вперемежку начинают глючить. Это объясняет все.
Ну чтож место порытия собаки найдено. Дальше осталось найти где пересечение этих функций. А это уже дело техники. Думаю это займет немного времени.
Спасибо всем кто принял участие в этом полезном деле.
Пытаюсь вспомнить СИ.

Хм... это ф-я инициализирует массив из 16 слов
word MSTKey1[16], MSTKey2[16];
и вызывается так
MSTInit(MSTKey1, Key);
В качестве агрумента - массив слов длиной 16.


void MSTInit(word *ek, dword *key)
{
byte k[16];
int i;
byte_copy(k ,key[0]);
byte_copy(k+ 4,key[1]);
byte_copy(k+ 8,key[2]);
byte_copy(k+12,key[3]);
for(i=0;i<8;i++) ek = k[i*2]*256 + k[i*2+1];
for(i=0;i<8;i++)
{
ek[i+ 8] = fi(ek, ek[(i+1)%8]);
ek[i+16] = ek[i+8] & 0x1FF;
ek[i+24] = ek[i+8] >> 9;
}
}

Вот тут нет выхода за границы массива? вроде обращаемся как с ловам а не как к байтам, и пишем в память offset ek+i+16 а это уже следуюший массив MSTKey2[16]; ? нет?

ek[i+16] = ek[i+8] & 0x1FF;
ek[i+24] = ek[i+8] >> 9;
Т.е при вызове инита для ф-ии D она запортит MSTKey2[16], а при очередном вызове ф-ии E она не будет инитить его так как
if( MSTInited2 == 0 ) {
MSTInit(MSTKey2, Key);
MSTInited2 = 1;
}

Т.е. если мы вызвали сначала 0E потом 0D то следующий вызов 0E будет... гхм.. глючным...

Это все имхо :crazy:

П.С. Ниуспел %)

japplegame
Профессионал
Сообщения: 272
Зарегистрирован: Вс ноя 05, 2006 2:03 pm

Сообщение japplegame » Сб янв 13, 2007 8:03 pm

DInvalid писал(а):П.С. Ниуспел %)
Гы-гы-гы. Ниуспел :). Но какая разница? Помощь ты оказал весьма серьезную. Му-ха-ха-ха. Победили-таки это дело. Ждите, ща выложу новый ropp.dll лишенный этого постыдного глюка.

japplegame
Профессионал
Сообщения: 272
Зарегистрирован: Вс ноя 05, 2006 2:03 pm

Сообщение japplegame » Сб янв 13, 2007 8:44 pm

Сам алгоритм MISTY оказался верным. Неверная длина ключей. Она должна быть равна не 16-ти словам, а 32. Я закоммитил изменения, но пока Бибиан перекомпилит это добро, пройдет время. Но зачем нам ждать Бибиана? Вот новая версия ropp.dll тестируйте на здоровье.
Вложения
ropp.zip
(100.83 КБ) 183 скачивания

Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse » Сб янв 13, 2007 9:46 pm

ББ. Тупой баг. Мать его.
Надеюсь ето пока все. Далее нужно будет тестить те что ещё на асме. Я их по одному буду загружать в СВНку.

Аватара пользователя
Jerry
Профессионал
Сообщения: 1047
Зарегистрирован: Сб ноя 04, 2006 12:26 pm
Контактная информация:

Сообщение Jerry » Вс янв 14, 2007 1:08 pm

пирожок намути апдейт релиза

japplegame
Профессионал
Сообщения: 272
Зарегистрирован: Вс ноя 05, 2006 2:03 pm

Сообщение japplegame » Вс янв 14, 2007 10:49 pm

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

Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse » Пн янв 15, 2007 8:36 am

japplegame
Дявай пока оставим. Ибо там ещё остались те сорсы что в папочке драфт. Их тоже нужно замутить и протестить.
Правда ети алогоритмы оказывается оч редкие, так-что прийдётся чистить их ибо выдраны ХЗ откуда.

japplegame
Профессионал
Сообщения: 272
Зарегистрирован: Вс ноя 05, 2006 2:03 pm

Сообщение japplegame » Пн янв 15, 2007 1:01 pm

kLabMouse писал(а):japplegame
Дявай пока оставим. Ибо там ещё остались те сорсы что в папочке драфт. Их тоже нужно замутить и протестить.
Правда ети алогоритмы оказывается оч редкие, так-что прийдётся чистить их ибо выдраны ХЗ откуда.
Не вижу связи между проблемами синхронизации и твоими исходниками. Да и не понимаю зачем нужна для этого тема на форуме?

Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse » Пн янв 15, 2007 4:00 pm

japplegame
Тему можно снести. А те сорсы нужно привети в порядко. Ибо времени совсем ниначто нет.

Ответить