Логотип игрового форума RF-Cheats.ru    
Новости онлайн игр Правила форума Чёрный рынок Реклама и привилегии Гаранты Арбитраж

Регистрация Бан-лист Сообщество ПОПУЛЯРНОЕ
Вернуться   RF-Cheats.ru - форум читеров и ботоводов > > >

Взлом программ (крэкинг, реверс, обход защит)

: Всё, что касается исследования программного обеспечения.
Читы и обход фроста для RF Online без хайдаБоты и читы для Perfect World бесплатно без хайдаМоды и читы для World of Tanks (WoT) бесплатно без хайдаМоды и читы для Armored Warfare бесплатно без хайдаБоты и читы для DOTA 2 бесплатно без хайдаБоты и читы для Black Desert Online бесплатно без хайдаЧиты на ArcheAge бесплатно без хайдаЧиты для Warface бесплатно без хайдаВзлом ВКонтакте и ОдноклассниковСписок разделов со всеми играмиЧиты для онлайн игр




Ответ
 
Опции темы
Старый 12.03.2008, 15:41   #1
vogel
Модератор раздела Perfect World
Аватар для vogel
OFFLINE
Регистрация: 28.08.2007
Сообщений: 49
Благодарностей:
20 всего
Мнения: + 169
Репутация: 108

[СТАТЬЯ] Создаём свой лоадер RFOnline


Итак, вопросы выбора языка программирования, сокетных библиотек и т.п. осуждаться не будут, ибо на вкус и цвет все фломастеры разные. А обсуждаться будут 2 наиболее интересных момента написании лоадера :

1. Обмен пакетами с login-сервером
Итак, по шагам :
1. Коннектимся с сервером авторизации

2. - Отсылаем пакет на запрос ключей для шифрования логина/пароля
05 00 15 0C FF
- Получаем ответ от сервера с ключами :
07 00 15 0D 04 A4 03
где :
04 = PlusKey
A4 = XORKey
Дальше идёт корейский мега-ход-конём =))
PlusKey = PlusKey + 1
XORKey = XORKey + 3

3. Шифруем логин и пароль, отправляем их серверу.
Строки логина и пароля по длине (maxPasswordLength) = 12 символов. Корейцы добавляют один про запас. Таким образом алгоритм шифрования, на примере пароля выгладит так :

for i := 1 to maxPasswordLength + 1 do
begin
if i <= length(aPassword) then aByte := ord(aPassword[i]) else aByte := 0;
aByte := aByte + aPlusKey;
aByte := aByte xor aXORKey;
end;
Добавляем завершающий 00 и в итоге пакет принимает вид :
1F 00 15 03 XX XX XX XX XX XX XX XX XX XX XX XX XX YY YY YY YY YY YY YY YY YY YY YY YY YY 00
где :
XX XX XX XX XX XX XX XX XX XX XX XX XX и
YY YY YY YY YY YY YY YY YY YY YY YY YY
соотсветственно зашифрованные логи и пароль.

4. Получаем и разбираем ответ сервера
0E 00 15 04 AA XX XX XX XX 01 00 00 00 00
здесь :
AA - Код резльтата (0x00 - всё норм, 0x06 - неверный логин или пасс)
XX XX XX XX - ID аккаунта
00 01 00 00 00 - Признак премиума (1 = премиум, другое значение - нет)

5. Посылаем запрос на список игровых серверов
08 00 15 05 00 00 00 00

6. Разбираем ответы
- список серверов
30 00 15 06 AA 29 00 05 01 06 54 72 69 61 6E 00 01 04 41 73 75 00 01 07 41 6E 6F 6D 69 61 00 01 06 4E 6F 76 75 73 00 01 07 46 61 6C 67 6F 6E 00
здесь :
AA - Код резльтата (0x00 - всё норм, другие не попадались)
29 00 - Количество оставшихся байт в пакете
05 - Количество серверов в пакете
01 06 54 72 69 61 6E 00 - запись об одном сервере :
01 - Включён / отключён
06 54 72 69 61 6E - навзание сервера
00 - Завершающий 0x00

- нагруженность серверов
0F 00 15 42 05 01 00 01 00 01 00 01 00 01 00 где :
05 - количество серверов, по которым идут данные
01 00 - состояние сервера (00 - Normal, 01 - Busy)

- назначение этого пакета осталось для меня загадкой
0A 00 15 43 05 00 00 00 00 00

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

7. Посылаем запрос на подключение к желаемому серверу
06 00 15 07 02 00, здесь :
02 - порядковый номер сервера в списке (считая от нуля)

8. Разбираем ответ
33 00 15 08 00 59 F9 12 8C 84 6C 09 20 C0 B8 C4 00 15 CD F7 AE 7E FD 2B EC B0 32 8B 0C 00 96 3B 5D 07 30 B7 87 5F 43 BB 35 45 15 25 B3 CD 11 64 4B FA 40
где :
00 - Код результата операции
59 F9 12 8C - IP сервера
84 6C - Порт сервера
Дальше идёт ключ сессии, разобьём его на DWORD'ы, далее будет понятно, зачем =)
09 20 C0 B8 (0)
C4 00 15 CD (1)
F7 AE 7E FD (2)
2B EC B0 32 (3)
8B 0C 00 96 (4)
3B 5D 07 30 (5)
B7 87 5F 43 (6)
BB 35 45 15 (7)
25 B3 CD 11 (8)
64 4B FA 40 (9)

На этом с общением с сервером авторизации - всё.

2. Создание файла defaultset.tmp, так необходимого клиенту
файл <GameDir>/System/DefaultSet.tmp необходим клиенту (rf_online.bin) для того, чтобы подружиться с сервером. Строится он очень просто из следующих составляющих :

+ IP сервера XOR 0xCB9C4B3A
+ Порт сервера XOR 0x4FB6
+ 13 байт логина игрока без "шифрования"
+ AccountID XOR 0x6E65E0AF (из пакета 1504)
+ сервера XOR 0xCB9C4B3A
+ Session key (5) XOR 0xCFCF22E6 (из пакета 1508)
+ Session key (3) XOR 0x5BBCDE6F (из пакета 1508)
+ Session key (7) XOR 0xACDF5EDA (из пакета 1508)
+ Session key (1) XOR 0xBCCD1B37 (из пакета 1508)
+ Порядковый номер выбранного сервера XOR 0x4B3A
+ AccountID XOR 0xC89C183A (из пакета 1504)
+ Premium Flag XOR 0xC89C183A (из пакета 1504)

Вот это и будут заветные 49 байт, которых так не хватает клиенту.
После создания файла можно пулять клиентский бинарник rf_online.bin


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

Для этого всего лишь нужно подправить один jump, чтобы он просто миновал процедуру проверки. В дельфёвом коде это выглядит как :

var
bytesread : dword;
addrSingleInstCheck : dword = $006a56c4;
patchSingleInstCheck : word = $5F75;
....
WriteProcessMemory(ProcessID, pointer(addrSingleInstCheck), @patchSingleInstCheck, sizeof(patchSingleInstCheck), bytesread);


Вот и всё, ребята.

Последний раз редактировалось Тигрь; 24.05.2012 в 12:28.

Мой проект RFO Helper - заморожен пожалуй, навсегда...
 
Ответить с цитированием
Сказали спасибо:
nas4 (24.02.2014), temapskov22 (02.01.2013), Dino (08.10.2012), Тигрь (24.05.2012)


Старый 12.03.2008, 15:49   #2
CoMoToZa
На доске почёта
Аватар для CoMoToZa
OFFLINE
Регистрация: 30.10.2007
Сообщений: 283
Благодарностей:
37 всего
Мнения: + 131
Репутация: 390

можно было бы просто выложить твой Лоадер под хайдом 70-80)))))))))))) и того меньше, проги для открытия 2 окон выложены под хайдом 10-15
 
Ответить с цитированием
Старый 12.03.2008, 16:11   #3
vogel
Модератор раздела Perfect World
Аватар для vogel
OFFLINE
Регистрация: 28.08.2007
Сообщений: 49
Благодарностей:
20 всего
Мнения: + 169
Репутация: 108

Цитата:
Сообщение от CoMoToZa
можно было бы просто выложить твой Лоадер под хайдом 70-80)))))))))))) и того меньше,
Надо подумать
Цитата:
Сообщение от CoMoToZa
проги для открытия 2 окон выложены под хайдом 10-15
Сейчас понижу хайд на этот фрагмент.
Цитата:
Сообщение от gambler
Хайд выше 150 видят единицы на форуме, а точнее модераторы и админы, т.е. дарк сотоварищи.
Изложенная выше информация является плодом упорных раскопок. Нигде в тырнете аналогичная инфа не выложена.
А если Дарк сотоварищи решит, что хайд неоправданно высок - он его понизит.

Последний раз редактировалось vogel; 12.03.2008 в 16:17.

Мой проект RFO Helper - заморожен пожалуй, навсегда...
 
Ответить с цитированием
Старый 14.03.2008, 23:47   #4
alzamon
Гость
Аватар для alzamon
Сообщений: n/a
Благодарностей:
0 всего

йопта, я думаю написать свой лоадер будет сложнее, чем запустить дебагер и посмотреть как там происходит шифрация, причем екзешник там чистый...
 
Ответить с цитированием
Старый 14.03.2008, 23:53   #5
vogel
Модератор раздела Perfect World
Аватар для vogel
OFFLINE
Регистрация: 28.08.2007
Сообщений: 49
Благодарностей:
20 всего
Мнения: + 169
Репутация: 108

Цитата:
Сообщение от alzamon Посмотреть сообщение
йопта, я думаю написать свой лоадер будет сложнее, чем запустить дебагер и посмотреть как там происходит шифрация, причем екзешник там чистый...
Вовсе нет. После анализа сниффа и дизассемблирования потребовалось примерно 2 часа чтобы его написать (включая отладку). Просто вот решил выложить инфу, вдруг Дарк оценит старания и накинет постов

Мой проект RFO Helper - заморожен пожалуй, навсегда...
 
Ответить с цитированием
Сказали спасибо:
Jlo6aH (25.05.2010)
Старый 21.03.2008, 01:44   #6
Sauron
Супер-модератор
Аватар для Sauron
OFFLINE
Регистрация: 10.04.2007
Сообщений: 72
Благодарностей:
164 всего
Мнения: + 934
Репутация: 1091

Цитата:
Сообщение от vogel Посмотреть сообщение
Вовсе нет. После анализа сниффа и дизассемблирования потребовалось примерно 2 часа чтобы его написать (включая отладку). Просто вот решил выложить инфу, вдруг Дарк оценит старания и накинет постов

за что ? за то, что ты убил нашу годовую монополию ? :6:

Понадобилось чтобы прошел целый год, прежде чем кто то еще расковырял клиент.

Дарк, мы больше не монополисты ыыыыы.

Но, целый год монополии тоже было не плохо.

Последний раз редактировалось Sauron; 21.03.2008 в 01:46.

^_O
= WP661f = (15.10.09)

Злой и Жестокий критик и баголов. Вижу очень далеко, насквозь.

Быстрей наслаждайся иллюзией, пока кто нибудь не растоптал твои грезы.

На любой R0 драйвер найдется свой R0 драйвер.

Yoda не люблю я, дразнится под меня он.
 
Ответить с цитированием
Старый 21.03.2008, 01:52   #7
demo
Читер со стажем
Аватар для demo
OFFLINE
Регистрация: 03.08.2007
Возраст: 35
Сообщений: 481
Благодарностей:
726 всего
Мнения: + 4014
Репутация: 3119
Отправить сообщение для demo с помощью ICQ

ещё мы со Штормом, 2 нуба, методом тыка будем делать свой лоадер на делфях, не зная этого языка ))))) Чувствую будет весело... по крайней мере тем на форуме комедийных прибавиться...

Попробуй убей меня тут!

Приложение для андроид для игроков руоффа: https://market.android.com/details?i...rfstatuserfree
 
Ответить с цитированием
Старый 21.03.2008, 02:05   #8
Sauron
Супер-модератор
Аватар для Sauron
OFFLINE
Регистрация: 10.04.2007
Сообщений: 72
Благодарностей:
164 всего
Мнения: + 934
Репутация: 1091

Цитата:
Сообщение от demo Посмотреть сообщение
ещё мы со Штормом, 2 нуба, методом тыка будем делать свой лоадер на делфях, не зная этого языка ))))) Чувствую будет весело... по крайней мере тем на форуме комедийных прибавиться...
Да в принципе, уже давно пример на скрипте WP PPC есть (в дельфи переделывается с пол тычка),
только там добавить надо создание файла и запуск bin'a
https://www.rf-cheats.ru/forum/showthread.php?t=2413

Последний раз редактировалось Sauron; 21.03.2008 в 02:08.

^_O
= WP661f = (15.10.09)

Злой и Жестокий критик и баголов. Вижу очень далеко, насквозь.

Быстрей наслаждайся иллюзией, пока кто нибудь не растоптал твои грезы.

На любой R0 драйвер найдется свой R0 драйвер.

Yoda не люблю я, дразнится под меня он.
 
Ответить с цитированием
Старый 21.03.2008, 11:21   #9
vogel
Модератор раздела Perfect World
Аватар для vogel
OFFLINE
Регистрация: 28.08.2007
Сообщений: 49
Благодарностей:
20 всего
Мнения: + 169
Репутация: 108

Цитата:
Сообщение от Sauron Посмотреть сообщение

за что ? за то, что ты убил нашу годовую монополию ? :6:
Мононполию на знание IDA, Delphi и умение юзать не только сниффер но и мозг ? :6:
Я же не выложил готовый лоадер, так что Ваша монополия так и остаётся монополией.

Последний раз редактировалось vogel; 21.03.2008 в 13:29.

Мой проект RFO Helper - заморожен пожалуй, навсегда...
 
Ответить с цитированием
Старый 21.03.2008, 13:48   #10
Sauron
Супер-модератор
Аватар для Sauron
OFFLINE
Регистрация: 10.04.2007
Сообщений: 72
Благодарностей:
164 всего
Мнения: + 934
Репутация: 1091

Цитата:
Сообщение от vogel Посмотреть сообщение
Мононполию на знание IDA, Delphi и умение юзать не только сниффер но и мозг ? :6:
Я же не выложил готовый лоадер, так что Ваша монополия так и остаётся монополией.
Монополию на информацию. Ты выложил эту информацию.

И теперь полезут десятки левых недолоадеров, которые ничего не принесут, кроме как ускорят изменение технологии защиты клиента.

Последний раз редактировалось Sauron; 21.03.2008 в 13:52.

^_O
= WP661f = (15.10.09)

Злой и Жестокий критик и баголов. Вижу очень далеко, насквозь.

Быстрей наслаждайся иллюзией, пока кто нибудь не растоптал твои грезы.

На любой R0 драйвер найдется свой R0 драйвер.

Yoda не люблю я, дразнится под меня он.
 
Ответить с цитированием
Ответ



Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[СТАТЬЯ] Использование отладчика для изучения RFOnline на примере разбора авотризации SHTrassEr Взлом программ (крэкинг, реверс, обход защит) 17 23.05.2012 22:35
У кого свой сервер RFOnline? GoodLike Новости MMORPG серверов и игрового мира 2 23.10.2011 02:51
[Гайд] Создаём собственого монстра dogero Установка и поддержка PW сервера 3 24.08.2011 14:13
Создаём сервер Aken Новости MMORPG серверов и игрового мира 6 17.04.2011 13:36

Мир танков | Проект "Армата" | ArcheAge | Black Desert | РФ Онлайн | Айон | Майнкрафт | Браузерные игры
Элдер скролс | Р2 Онлайн | Реквием Онлайн | ПУБГ | Роял Квест | ГТА Санадреас | Контра | Дота 2
Мир кораблей | Лост Арк | Arma2 DayZ mod | The War Z | Карос: Начало | Tera Online
Читы для всех Онлайн-игр