Поковырялся через OllyDbg, мучался долго, кое-чего освоил. До разгадывания алгоритмов шифрации еще далековато.
Заметил одну особенность:пакет(RequestAuthLogin), который я заснифал и просмотрел через WireShark имеет вид: FF 00 FA B2 00 11 ...
А тот, что приходит на мой псевдо-сервак от клиента имеет стандартный вид: B2 00 11... И никакого FF 00 FA там нету.
Причем смотрел на клиент через OllyDbg, он тоже отправляет стандартный пакет.
Может ли быть, что информация, которая идет перед и после стандартного пакета просто тупо системной?
Сорри, обновил клиент, опять стал приходить блок с FF 00 FA. Буду разбираться...
И снова сорри. Этот блок появляется при выключенной оле=))так что гдето стоит штука, определяющая олю. А жаль..=))
И это была темида. Победить ее удалось с помощью ольки 9 in 1 =)
Последний раз редактировалось Nosferatu, 21.11.2016 в 18:49.
Не могу понять оду вещь:
Есть виндовая функция для отправки данных - w2_32.send
Собственно ставил брэйкпоинты на ней и просмотрел что в качестве параметров передается в нее. Это пакеты.
Проблема в пакете, в который добалены дополнительные нестандартные данные(RequestAuthLogin). В фунцию w2_32.send посылается стандартный пакет. Похоже что дополнительные данные отправляются помимо этой функции, либо она как-то модифицируется в процессе формирования пакета. Буду разбираться...
Может кто в курсе?
клиент накрыт каким-то дополнительным слоем логики, смешанным с защитой.
когда ты лезешь в клиент, видимо как-то нарушаешь логику работы этого слоя, либо он сам отрубается чтобы ты в него не залез. вот и пропадает дополнительная обертка над траффиком (имхо конеш)
Nosferatu, а как ты определяешь, что реально отправляется? Если через WireShark, то не забывай, что он показывает вспомогательные данные транспортного и прочих уровней протокола.
PS. и в ws2_32 имеется несколько функций send, так что смотри на фрейм пакета - какая длина пакета указана в первых двух байтах, какая реальная длина и сравнивай что отправляется и что уходит.
Если есть сомнения насчет защиты и что она определяет отладку, то делай хук и логируй весь трафик (только некоторые защиты проверяют хук send функции, а некоторые сами ее хукают, это тоже нужно учитывать).
Да, действительно клиент вносит поправки в функцию send.
Точно не уверен как, но по логике так:загружает w2_32.dll в оперативную память, затем уже в оперативке немного модифицирует. Причем так,что сразу же после вызова функции send управление передается куску кода из некого fire.dll, а в нем и происходит формирование нового пакета и подмена параметров функции send(указатель на данные и длина).
Расставил бряки, и нашел кусок который формирует эти дополнительные данные. Теперь дело за восстановлением алгоритма. Иду учить ассемблер=))
p.s. для принятия-отправки данных я использую самописную прогу, которая отвечает клиенту заранее сохраненными пакетами реальной сессии. Снифал пакеты с помощью по на роутере (роутер Mikrotik)