Первый пакет, отправляемый процессом rf_online.bin на сервер, это пакет типа 0101 (EnterWorldRequest). Вот его пример: 4A00 0101 2A150000 AD23B3BDE27284AE60600A12208B4485 00 F7ED01 00 37356133326434613664616666353438666366636234306665 61383338613064 00 A30B67 00 D122 0000 347A9C1C
Меня интересуют те байты, которые я выделил синим. Подскажите, как их получить? Знаю, что первые 16 синих байт получаются из Gkey, который отправляется клиенту при логине, но не знаю как.
Последний раз редактировалось nas4; 02.03.2014 в 08:35.
Мои аккаунты, от которых я забыл пароль: tula44, wojtek.
Взять в лапы отладчик и посмотреть откуда и как они генерируются или получаются. Подсказал, легче стало?
Нет, стало сложнее. До этого была одна задача: найти алгоритм преобразования одних данных в другие, а теперь стало три задачи: изучить язык ассемблер, изучить отладчик, и найти алгоритм преобразования одних данных в другие...
Похоже, первые синие 16 байт преобразовываются через сдвиги, ксоры и перестановки, а последние 5, возможно, связаны с systime. Мне будет тяжко вручную находить все эти сдвиги методом проб и ошибок, а язык ассемблер я еще не освоил...
Последний раз редактировалось nas4; 02.03.2014 в 11:27.
Мои аккаунты, от которых я забыл пароль: tula44, wojtek.
Какой-то странный пакет у тебя, на 223 у него стандартный размер 58 байт, если не считать голову пакета.
Код:
#pragma pack(push, 1)
struct _enter_world_request_zone
{
unsigned int dwAccountSerial;
unsigned int dwMasterKey[4];
bool bFullMode;
unsigned int dwProtocolVer;
char szClientVerCheckKey[33];
};
#pragma pack(pop)
Вот это структура стандартного пакета 0101 который отсылает клиент. Как я понял тебя интересуют ключи сессии, ключи мы получаем от логин сервера. Почитай вот эту тему для общей картины. На 223 алгоритм слегка видоизменён.
Последний раз редактировалось [Zeto]; 02.03.2014 в 12:27.
...Как я понял тебя интересуют ключи сессии, ключи мы получаем от логин сервера...
Нет, ключи сессии я знаю как получить. Мне нужен алгоритм преобразования этих ключей в те данные, которые отправляются в пакете 0101. Простые исследования показывают, что любая перестановка байт местами и применение к каждому из них своего ксора, который не зависит от ключей сессий, безуспешны. Для эксперимента я увеличил значение одного байта ключа сессии в файле DefaultSet, и оказалось, что 16 байт, которые я выделил синим, изменились координально. Стало быть алгоритм сложнее, чем я думал... Придется действовать через отладчик все таки, хотя я ничего в нем не понимаю. Я уверен, что кто-то уже разобрался с этим пакетом и знает, как получить хотя бы 16 первых байт, которые выделены синим цветом. Может расскажите алгоритм их получения?
Последний раз редактировалось nas4; 04.03.2014 в 09:27.
Мои аккаунты, от которых я забыл пароль: tula44, wojtek.
Раз уж я создал эту тему, то напишу для чего. Хочу написать программу, которая поддерживает любое число игроков в онлайне без использования клиента. Учитывая, что на многих фришках стоит модуль бонусов на онлайн, эта программа пришлась бы очень кстати. Да и для голоса онлайн требуется. Нет, можно конечно запустить 5 окон и смотреть, как они пожирают более 2гб озу, даже без текстур и прилично ресурсов, но зачем? Если программка будет пожирать 50мб озу и поддерживать в онлайне пару десятков игроков, каждый из которых будет заходить через анонимный прокси (если потребуется), что почти никак не скажется на повышении энергозатрат компьютера, а электричество пока еще не бесплатно, ведь проект Н.Тесла был заморожен...
Последний раз редактировалось nas4; 04.03.2014 в 12:47.
Мои аккаунты, от которых я забыл пароль: tula44, wojtek.
Раз уж я создал эту тему, то напишу для чего. Хочу написать программу, которая поддерживает любое число игроков в онлайне без использования клиента. Учитывая, что на многих фришках стоит модуль бонусов на онлайн, эта программа пришлась бы очень кстати. Да и для голоса онлайн требуется. Нет, можно конечно запустить 5 окон и смотреть, как они пожирают более 2гб озу, даже без текстур и прилично ресурсов, но зачем? Если программка будет пожирать 50мб озу и поддерживать в онлайне пару десятков игроков, каждый из которых будет заходить через анонимный прокси (если потребуется), что почти никак не скажется на повышении энергозатрат компьютера, а электричество пока еще не бесплатно, ведь проект Н.Тесла был заморожен...
Не получится у тебя такое провернуть, по нескольким причинам.
Не получится у тебя такое провернуть, по нескольким причинам.
Для того, что бы такое не провернуть, должно одновременно выполниться два условия:
-никто не подскажет;
-язык ассемблер я не изучу.
А язык ассемблер я уже начал изучить, и медленно, но верно, двигаюсь вперед, так что вероятность того, что такое провернуть не удастся не так уж и велика.
Да, потребуется так же научиться генерировать пакет .Pong. и отправлять ответы на некоторые запросы, имитируя тем самым работу клиента, но это не так уж и сложно ввиду ряда естественных причин. Кроме того, опыт создания простейшего бота должен пойти мне на пользу, и осознание этого подпитывает меня энергией, которую я направляю на изучение языка ассемблера.
Последний раз редактировалось nas4; 04.03.2014 в 13:51.
Мои аккаунты, от которых я забыл пароль: tula44, wojtek.