PDA

Просмотр полной версии : RequestAuthLogin


Nosferatu
12.11.2016, 15:34
Всем привет!
Извиняюсь если подобные темы уже поднимались, но второй день уже ищу, не могу найти ответа.
Пишу бота для Interlude-сервака. Дошел собственно до RequestAuthLogin.
Соснифал со своего клиента и обнаружил что этот пакет имеет размер 255 байт, в нем вложен стандартный RequestAuthLogin пакет(полностью, вместе с размером) и еще какая-то информация. Нагуглил только одну статью, в которой написано что часть этой информации не воспринимается серваком, часть каким-то образом шифруется и сервак без нее не пускает(каждый раз эта часть разная).
Соственно пакет:
FF 00 F0 B2 00(далее стандартный RequestAuthLogin),
далее 48 байт шифра
далее 26 "рандомных" байт (по статье отбрасывается серваком)
Может кто сталкивался с подобным?

alexov
12.11.2016, 15:52
В статьях, которые ты можешь нагуглить рассматривается стандартная реализация логин сервера. сейчас же почти никто, кроме самых отчаянных нубов не пользуется стандартными сборками (потому что они дырявые).

Сервера Lineage покупаются у команд, которые их модифицируют. Как правило в клиент игры встроен "троян" который сканирует твой комп на заущенный l2ph и прочее, и стучит об этом серверу. чтобы обеспечить отправку этой информации, модифицируют протокол работы логин сервера.

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

Nosferatu
12.11.2016, 17:38
Я понял - живу в прошлом веке))
Ну l2ph я не пользуюсь - только снифером на роутере и с++, так что врядли троян чегото постороннего у меня найдет.
Блин, а какой софт можно использовать для декомпиляции?
Я так понимаю что на уровне ассемблера?

alexov
12.11.2016, 18:34
Я сам в этом не разбираюсь, но думаю по-быстрому этому не научиться)) хотел бы сам услышать хороший совет с чего начинать)

Nosferatu
12.11.2016, 22:00
Ладно, буду пробовать постигать)если чего получится поделюсь

goodvin1709
12.11.2016, 23:47
Это скажу друзья, весьма трудная работа,нужно сначала:
1. Средне разобраться в ASM.
2. прочитать все что писал Rem-MS
3. Брать IDA и гнать клиент, но щас они уже еще поверху темидой прогоняються, и тогда полная жопа.

alexov
13.11.2016, 04:53
Полная жопа настанет лет через 15-20, когда обновится вся сетевая инфраструктура, а транспортные протоколы будут заменены и вовсю заработает приоритезация трафика. Тогда все игры перейдут на стриминговую модель (отправляешь команды управления, получаешь видео).

Если что и будет обсчитываться на клиенте, это компенсация небольшого остаточного лага (скорость света не обманешь, если сервер далеко пингу все равно быть)

А пока у нас с вами есть полноценный клиент на комьютере, пусть и зашифрованный - читерское братство будет процветать)

ScythLab
13.11.2016, 11:11
Основные программы известны:
1) отладчики OllyDbg и x64dbg плюс различные плагины к ним
2) дизасемблер IDA (только вначале нужно расшифровать/сдампить engine.dll и возможно dsetup.dll)

Из сложностей:
1) нужно знать ассемблер
2) крайне желательно понимать нутро винды
3) научиться бороться с антиотладочными приемами (даже подключиться к процессу иногда бывает проблемой, т.к. срабатывает антиотладка)
4) что-то придумать с модификацией исполняемого кода (мусорные команды, виртуализация), которые любят вставлять протекторы на самые вкусные участки кода


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

alexov
13.11.2016, 12:27
Я где-то видел бота на ла2, через распознавание образов) потерял ссылку, лень искать) вот что ждет в далеком будущем)

Nosferatu
13.11.2016, 12:52
Всегда хотел научиться ковыряться в программе через ассемблер.. По ходу дела настал тот час) По крайней мере это повлечет за собой кучу других плюшек)
Всем спасибо за ответы, с завтра начну)

ScythLab
13.11.2016, 18:51
Я где-то видел бота на ла2, через распознавание образов) потерял ссылку, лень искать) вот что ждет в далеком будущем)да были такие, причем как примитивные по анализу цвета пикселя и шаблона (сам такой для рыбалки писал), так вплоть до попытки распознавания образов и детекторы изменения картинки (вроде Кибор называется)

alexov
13.11.2016, 19:09
да, верняк, это он:)

Smwr
14.11.2016, 19:04
Пишу бота для Interlude-сервака. Дошел собственно до RequestAuthLogin.
Соснифал со своего клиента и обнаружил что этот пакет имеет размер
И почему ты не хочешь посмотреть в сторону работы с клиентским апи?

Nosferatu
14.11.2016, 19:13
Ты имеешь ввиду не заморачиваться с пакетами и гнать все через клиента?
Если так, то меня задел пакетный уровень и теперь не успокоюсь, пока не законнекчусь к ГС из своей программы, ну или окончательно не пойму что я не потяну пакетный уровень=) (буду биться до последнего=))

Smwr
14.11.2016, 20:19
Ты можешь так же работать со своими любимыми пакетами, разница только в том, что клиент их за тебя расшифрует =)
Пытаться победить шифрацию гиблое дело, как по мне.

Nosferatu
15.11.2016, 17:37
Все таки хочется поломать голову на тему шифрации.


Написал "логин-сервак", который принимает с клиента пакеты и отсылает то, что я получил сниффером от реального сервака, перенаправил туда клиента. Получилось залогиниться с помощью клиента. Теперь дело за Olly.. Чувствую воссоздать исходный код из асмовских мнемоник будет веселой историей=))

alexov
15.11.2016, 17:50
если я все правильно понимаю, воссоздавать исходный код вовсе необязательно, нужно лишь выковырять модуль шифрации в бинарном виде, и применять его как ассмблерную вставку в своем коде. (правда я не знаю сам как это делается)))

Nosferatu
15.11.2016, 19:37
Ну да, хотя бы так=)

ScythLab
15.11.2016, 23:02
нужно лишь выковырять модуль шифрации в бинарном виде, и применять его как ассмблерную вставку в своем кодеЕсли бы все было так просто :)
Хорошо, когда код чистый и относительно небольшой, тогда реально можно выдрать кусок асма и использовать по назначению, но в 90% случаев его все равно придется допиливать напильником, а если эта часть еще и протектором накрыта, то это вообще будет пичаль. Хотя не знаю вставляют ли всякие модификации кода в алгоритм шифрования, т.к. тут по идее нужна максимальная скорость, но с другой стороны, сейчас компы такие, что их можно спокойно загрузить сотней-другой пустых/мусорных инструкций.

alexov
16.11.2016, 06:55
Ну и почему бы не забрать все целиком вместе с мусором? ) если клиент справляется, бот тоже справится)

ScythLab
16.11.2016, 16:24
Потому что код может быть размазан практически по всей dll, с обращением к глобальным переменным, непонятным прыжкам, вызовом функций и прочему шлаку.

Nosferatu
21.11.2016, 17:42
Поковырялся через OllyDbg, мучался долго, кое-чего освоил. До разгадывания алгоритмов шифрации еще далековато.
Заметил одну особенность:пакет(RequestAuthLogin), который я заснифал и просмотрел через WireShark имеет вид: FF 00 FA B2 00 11 ...
А тот, что приходит на мой псевдо-сервак от клиента имеет стандартный вид: B2 00 11... И никакого FF 00 FA там нету.
Причем смотрел на клиент через OllyDbg, он тоже отправляет стандартный пакет.
Может ли быть, что информация, которая идет перед и после стандартного пакета просто тупо системной?



Сорри, обновил клиент, опять стал приходить блок с FF 00 FA. Буду разбираться...


И снова сорри. Этот блок появляется при выключенной оле=))так что гдето стоит штука, определяющая олю. А жаль..=))


И это была темида. Победить ее удалось с помощью ольки 9 in 1 =)

alexov
21.11.2016, 22:11
не совсем понял что там произошло, но рад что у тебя получилось :) глядишь будет у кого поучиться)

Nosferatu
22.11.2016, 15:24
Добавлено через 2 часа 16 минут
не совсем понял что там произошло, но рад что у тебя получилось :) глядишь будет у кого поучиться)

Темида определяла, что Lineaage2 запущена в отладке и игнорировала блок дополнительной шифрации.

Nosferatu
23.11.2016, 18:29
Не могу понять оду вещь:
Есть виндовая функция для отправки данных - w2_32.send
Собственно ставил брэйкпоинты на ней и просмотрел что в качестве параметров передается в нее. Это пакеты.
Проблема в пакете, в который добалены дополнительные нестандартные данные(RequestAuthLogin). В фунцию w2_32.send посылается стандартный пакет. Похоже что дополнительные данные отправляются помимо этой функции, либо она как-то модифицируется в процессе формирования пакета. Буду разбираться...
Может кто в курсе?

Smwr
23.11.2016, 21:50
Могу ошибаться, но любой выход в сеть сводится к вызову из winsock. Смотри внимательнее.

alexov
23.11.2016, 23:53
клиент накрыт каким-то дополнительным слоем логики, смешанным с защитой.
когда ты лезешь в клиент, видимо как-то нарушаешь логику работы этого слоя, либо он сам отрубается чтобы ты в него не залез. вот и пропадает дополнительная обертка над траффиком (имхо конеш)

ScythLab
24.11.2016, 00:00
Nosferatu, а как ты определяешь, что реально отправляется? Если через WireShark, то не забывай, что он показывает вспомогательные данные транспортного и прочих уровней протокола.

PS. и в ws2_32 имеется несколько функций send, так что смотри на фрейм пакета - какая длина пакета указана в первых двух байтах, какая реальная длина и сравнивай что отправляется и что уходит.
Если есть сомнения насчет защиты и что она определяет отладку, то делай хук и логируй весь трафик (только некоторые защиты проверяют хук send функции, а некоторые сами ее хукают, это тоже нужно учитывать).

Nosferatu
24.11.2016, 20:26
С защитой я разобрался, все нормально.

Да, действительно клиент вносит поправки в функцию send.
Точно не уверен как, но по логике так:загружает w2_32.dll в оперативную память, затем уже в оперативке немного модифицирует. Причем так,что сразу же после вызова функции send управление передается куску кода из некого fire.dll, а в нем и происходит формирование нового пакета и подмена параметров функции send(указатель на данные и длина).

Расставил бряки, и нашел кусок который формирует эти дополнительные данные. Теперь дело за восстановлением алгоритма. Иду учить ассемблер=))

p.s. для принятия-отправки данных я использую самописную прогу, которая отвечает клиенту заранее сохраненными пакетами реальной сессии. Снифал пакеты с помощью по на роутере (роутер Mikrotik)

supernewbie
24.11.2016, 22:42
для принятия-отправки данных я использую самописную прогу, которая отвечает клиенту заранее сохраненными пакетами реальной сессии
если заюзан nonce (https://ru.wikipedia.org/wiki/Nonce) то такое не прокатит

alexov
25.11.2016, 00:25
"Nonce" защищает от атак "MitM", когда у злоумышленника есть доступ к каналу связи и нет доступа ни к клиенту ни к серверу.
В нашем случае есть доступ и к клиенту и к линии связи, нет доступа только к серверу.
Это выгодная позиция в которой взлом всегда технически возможен.

Nosferatu
29.11.2016, 12:53
Как-то клиент все равно определяет, что включен дебаггер. При этом формирутеся похожий пакет, но отличный от оригинала.
Возможно, в этом пакете содержится инфа о включенном дебаггере. На сервер отсылать не пробовал,предполагаю что могут банан влепить.
Перепробовал плагины для олли, ничего не получилось. Буду пробовать ставить 32-битную ХР. Пока все действия проводил на 64-битной семерке.

Elecktron
14.05.2017, 02:07
с х64 системами действительно есть проблемы. олька нормально прячется только на хр х32, причем второй сервиспак предпочтительнее - с третьим темида часто падает.

alexov
14.05.2017, 21:20
Мне кажется плохая практика сидеть на старом софте, потому что на новом чето не работает. Думается мне на новых системах точно так же можно скрыть процесс при желании. Просто способ стал другой, вероятно сложнее. Но я предпочел бы поискать

Smwr
18.05.2017, 12:27
обнаружение отладчика, и обнаружение, что процесс находится под отладкой - не одно и тоже.

с х64 системами действительно есть проблемы. олька нормально прячется только на хр х32, причем второй сервиспак предпочтительнее - с третьим темида часто падает.

темида, которая стоит чистом клиенте спокойно отлаживается на х64.

nasta456
30.01.2019, 21:06
спасибо всем за ответы, очень помогли ваши советы)