Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Ковыряем ShadowSurfer

Обсудить статью на форуме

Очень удобно, когда все крэкерские инструменты, книги и статьи в одном месте. Используйте сборник от EXELAB - вот тут.

Автор: BiT-H@ck <bit-hack@mail.ru>

Здраст всем. Сегодня будем хацкать прогу под названием ShadowSurfer. Прога нужна для защиты от всяких вирусов и т.п. Смысл работы проги простой. Все изменения на винте она сохраняет в свободной части винта, и при перезагрузке восстанавливает всё обратно. Прога работает на основе драйвера, в котором и осуществляется проверка рег. Данных, но мы пойдём другим путём, будем хацкать саму прогу.

1. Осмотр.
Грузим прогу в PeID и видим Microsoft Visual C++ 6.0. Отлично! Запускаем проги и видим странное окошко, мол, мы не зарегистрированы! Ребята вообще борзеют.

2. Отлом.
Тут мы применим метод тупого трейса. Грузим прогу в олю и начинаем трейсть по F8 до вылазки окна с напоминанием, после чего на call, который вызвал запуск проги надо поставить брейкпоинт. У меня call запускающий прогу был тут:
004153FC |. E8 4F010000 CALL 00415550
Выделяем его и жмём F2. Перезапускаем прогу, запускаем прогу и останавливаемся на только что поставленном брейкпоинте. Заходим в call по F7 и видим:

 00415550	FF742410	PUSH DWORD PTR SS:[ESP+10]
 00415554	FF742410	PUSH DWORD PTR SS:[ESP+10]
 00415558	FF742410	PUSH DWORD PTR SS:[ESP+10]
 0041555C	FF742410	PUSH DWORD PTR SS:[ESP+10]
 00415560	E837000000	CALL <JMP.&MFC42u.#1569>
 00415565	C21000	RETN 10
 


Ой как плохо. Значит нас сейчас кинет в MFC42u.dll. Ну и ладно, заходим в неё по F7. Видим:

 72802523	8BFF			MOV EDI, EDI
 72802525	53			PUSH EBX
 72802526	56			PUSH ESI
 72802527	57			PUSH EDI
 72802528	83CB FF		OR EBX, FFFFFFFF
 7280252B	E8D5EAFEFF	CALL #1172
 72802530	8BF0			MOV ESI, EAX
 


О, круто:) Ctrl+T. Eip is in range. 00400000-00600000. Ctrl+F11. Тормознулись:

 00415162	FF25A8834100	JMP DWORD PTR DS:[<&MFC42u.#3917>]
 


Слегка не то, на что рассчитывали. F8. Ctrl+F11. Тормознулись:

 0040C980   . 6A FF          PUSH -1
 0040C982   . 64:A1 00000000 MOV EAX, DWORD PTR FS:[0]
 0040C988   . 68 89664100    PUSH 00416689
 0040C98D   . 50             PUSH EAX
 0040C98E   . B8 74350000    MOV EAX, 3574
 0040C993   . 64:8925 000000>MOV DWORD PTR FS:[0], ESP
 0040C99A   . E8 E18A0000    CALL 00415480
 


Теперь опять кирпич на F8 и ждём. Запустилось здесь:

 0040CAD3	E832810000	CALL <JMP.&MFC42u.#2506>
 


Теперь ищем обход этой процедуры (смотрим наверх и ищем переход через неё). Меня заинтересовал вот такой кусок кода:

 0040CA98	0F84D5050000	JE 0040D073
 0040CA9E	8B07			MOV EAX, DWORD PTR DS:[EDI]
 0040CAA0	83CDFF		OR EBP, FFFFFFFF
 0040CAA3	3BC5			CMP EAX, EBP
 0040CAA5	0F8411010000	JE 0040CBBC
 


Удаляем старые брейки и ставим брейк на инструкцию по адресу 0040CA98 и перезапускаем прогу. F9. Остановились на брейкпоинте. Пробуем изменить флаг нуля, чтобы брейкпоинт сработал. F9. Глюк с драйвером. Опять перезапускаем и реверсируем флаг нуля перед переходом по адресу 0040CAA5. F9. Ура, нага больше нет, но Register User=Exipred Trial version. Надо поправить. Смотрим, что влияет на работу перехода. Ага, то что лежит по адресу edi, когда eip=0040CA9E. Перезапускаем прогу, и смотрим, что лежит по адресу, на который указывает edi. А там 00000000. ОК. Пишем туда FFFFFFFF. И запускаем прогу. Теперь в Register User пусто. Отлично, Прога посчитала, что она зарегина на пустое имя. Теперь это надо увековечить. Но просто так пропатчить прогу нельзя:( Она всё перезапишет при запуске:( Ну да и ладно:) Вставим прямо в прогу код, который всё это дело поправит. Листаем дизасм листинг вниз и попутно ищем место, куда засунем патч. Я нашёл прекрасное место по адресу 417602. Там и будем всё писать. Я посчитал, что это первое обращение к этой переменной (для проверки зарегиности), поэтому будем перепрыгивать на патч прямо из это проверки. Т.к. места в функции нет, даже для вставки перехода на патч, поэтому перенесём какую либо инструкцию в патч. Я решил заменить инструкцию 0040CA9E MOV EAX, DWORD PTR DS:[EDI] на переход jmp 417602. Так и делаем, предварительно запомнив саму заменяемую инструкцию инструкцию и хотя бы парочку инструкций после неё. У меня переход затёр 2 инструкции

 MOV EAX, DWORD PTR DS:[EDI]
 OR EBP, FFFFFFFF
 

Теперь переходим к месту патча. Патч будет примерно такого вида:

 mov dword ptr [edi], -1
 

Затёртые команды
Jmp обратно на продолжение кода

У меня получилось так:

 00417602	C707FFFFFFFF	MOV DWORD PTR DS:[EDI], -1
 00417608	8B07			MOV EAX, DWORD PTR DS:[EDI]
 0041760A	83CDFF		OR EBP, FFFFFFFF
 0041760D	E99154FFFF	JMP 0040CAA3
 

Copy to executable=>All modifications. Сохранили. Запустили. Работает. Но нам ведь охота, чтобы в Register User было написано наше имя! Продолжим. Захожим в реестр по адресу HKEY_LOCAL_MACHINE\SOFTWARE\ShadowStor\ShadowSurfer и вписываем в параметры User и Serial имя и любой серийник соответственно. На сем разрешите откланяться.

Приветы to:
All my command, cracklab, а особенно Alex, Mario555, WELL, Bad_Guy. И ещё to: dragon_gor, NUCLEuS и всем, кого я забыл…


Обсуждение статьи: Ковыряем ShadowSurfer >>>


Комментарии к статье: Ковыряем ShadowSurfer

sashaall 26.07.2005 20:35:34
Полная туфта... тут надо драйвер патчить ... именно в нем идет реальная проверка
---
BiT-H@ck 26.07.2005 20:49:34
Но ведь и так работает!
---
sashaall 29.07.2005 00:46:47
да ведь дело то не в том что работает именно сейчас... попробуй перевести время на год вперед и перезапусти машину будет ли функционировать драйвер отвечающий за виртуальный диск?! не будет ... мы короче когда крякать shadowuser с shadowserver решили то сразу с драйвера начали... быстрей всех его выложели на ruboard\’е. Править надо было всего вроде бы в одном месте. Ну а тут думаю реализация не совсем правильная но в качестве может быть примера некого то можно
---
Nitrogen 30.08.2005 13:32:07
нужно было кейген писать ;)
---

Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS