Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Ковыряем Fantom crack_me №5

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Взлом программ] >> Ковыряем Fantom crack_me №5
Имя
Сообщение << Старые топики   Новые топики >>
Ковыряем Fantom crack_me №5 - 2011-07-26 13:36:26.583333   
Крутой 0ль !

Сообщений: 150
Оценки: 10
Присоединился: 2010-12-02 19:33:25.666666
Сегодня будем ковыряЦа в crack_me №5 Fantom .Из себя он представляет совокупность из 4 ,довольно таки простых и ранообразных заданий .
1.Это ввод регистрационного ключа
2.Окошко с нагами
3.Проверка CD-check
4.Ввод логин-пароль

Задание 1.Решаем задачу по нахождению пароля .Запускаем наш крякмис под ollydb , нажимаем правую кнопку мыши и выбираем Search for/all referenced string .В открывшемся окошке мы получаем все используемые в программе строки .Потратив несколько секунд на анализ , можно понять , что пароль висит как используемая строка .Вот и всё , 1-ое задание мы одолели .Но хочу заметить , что иногда в программах , нас намеренно путают , 'вталкивая' в используемые строки сотни неправильных ключей .В этом случаи метод перебора конечно же отпадает .Так как в реальных программах такое редко встретишь , то можно зарегистрировать программу не имея ключа.Находим
вызов мессаджей о успешной регистрации , смотрим выше
CPU Disasm Address Hex dump Command Comments 00401367 |. 50 PUSH EAX 00401368 |. 6A 00 PUSH 0 0040136A |. 83F0 40 XOR EAX,00000040 0040136D |. 66:83E0 10 AND AX,0010 00401371 |. C1E8 0D SHR EAX,0D 00401374 |. C1E0 03 SHL EAX,3 00401377 |. 58 POP EAX 00401378 |. 83F8 00 CMP EAX,0 0040137B |. 75 28 JNE SHORT 004013A5 0040137D |. 83F0 40 XOR EAX,00000040 00401380 |. C1E8 0D SHR EAX,0D 00401383 |. 66:83E0 10 AND AX,0010 00401387 |. C1E0 03 SHL EAX,3 0040138A |. 58 POP EAX 0040138B |. 83F8 00 CMP EAX,0 0040138E 74 15 JE SHORT 004013A5 00401390 |. 6A 30 PUSH 30 ; Type = MB_OK|MB_ICONEXCLAMATION|MB_DEFBUTTON1|MB_APPLMODAL 00401392 |. 68 B2304000 PUSH OFFSET 004030B2 ; Caption = "Password Check" 00401397 |. 68 E9304000 PUSH OFFSET 004030E9 ; Text = "Nope, try again!" 0040139C |. 6A 00 PUSH 0 ; hOwner = NULL 0040139E |. E8 C7030000 CALL &lt;JMP.&USER32.MessageBoxA&gt; ; Jump to USER32.MessageBoxA 004013A3 |. EB 15 JMP SHORT 004013BA 004013A5 |&gt; 6A 40 PUSH 40 ; /Type = MB_OK|MB_ICONASTERISK|MB_DEFBUTTON1|MB_APPLMODAL 004013A7 |. 68 B2304000 PUSH OFFSET 004030B2 ; |Caption = "Password Check" 004013AC |. 68 C1304000 PUSH OFFSET 004030C1 ; |Text = "Good job, you got the correct password!" 004013B1 |. 6A 00 PUSH 0 ; |hOwner = NULL 004013B3 |. E8 B2030000 CALL &lt;JMP.&USER32.MessageBoxA&gt; ; \USER32.MessageBoxA 004013B8 |. EB 00 JMP SHORT 004013BA Первые строки соответствуют - mov eax,0 .Далее видим ЧТО ИЗ СТЕКА командой pop eax восстанавливаются данные которые занесены в стек , т.е значение регистра EAX = 0 .Команда условного перехода JE , делает переход , если регистр флага ZF = 1 . Узнаём начение регистра флага до строчки условного перехода , у нас он равен 0 , т.е переход JE не отработает .При ZF=0 работает условный переход JNE. Меняем команду JE на JNE.Вот и всё

Задание 2.Так же находим в окошке [all referenced string] строчку с словам nag nag , вообщем понятно .Два раза клацаем по ней и мы перемещаемся в головное окно ollydbg , переводим курсор на первую строку функции , которая если я не ошибаюсь заносит в стек данные для вызова API-функции .Ставим на неё бряк и два раза нажимаем F9 .После того как мы нажали OK в появившемся окошке , мы должны клацать , клацать по F8 (если опять же я не ошибаюсь , то это называется трассировкой) .Таким способом , у нас появляется окошко с нагами , и строчка на которой произошёл вызов и является нашей целью .В нашем случаи это DlgBox , нам напротив , надо что бы этого вызова не происходило .Мы просто занупим это дело командой NOP , в простонародье битхак .Команда NOP означает - ничего не делать и применяется в паре , т.е [NOP] [NOP].
В ollydbg это можно проделать двумя , ручным редактированием , либо выделяем нужную нам строку и нажатием правой кнопки мыши выбираем {edit/fill with NOP's}.С нагами дело поконченно !

Задание 3.Проверка cd_check.И снова обращаемся в окно используемых стрингов .Находим строчку типа - CDROM not found и переходим по этой строчке .Перед нами предстаёт такая вот картина :
CPU Disasm Address Hex dump Command Comments 00401447 3C 02 CMP AL,2 00401449 |. 75 1C JNE SHORT 00401467 0040144B 80FC 01 CMP AH,1 0040144E 74 02 JE SHORT 00401452 00401450 EB 15 JMP SHORT 00401467 00401452 |&gt; 6A 40 PUSH 40 ; Type = MB_OK|MB_ICONASTERISK|MB_DEFBUTTON1|MB_APPLMODAL 00401454 |. 68 88314000 PUSH OFFSET 00403188 ; Caption = "CD Check" 00401459 |. 68 91314000 PUSH OFFSET 00403191 ; Text = "CDROM found!" 0040145E |. 6A 00 PUSH 0 ; hOwner = NULL 00401460 |. E8 05030000 CALL &lt;JMP.&USER32.MessageBoxA&gt; ; Jump to USER32.MessageBoxA 00401465 |. EB 15 JMP SHORT 0040147C 00401467 |&gt; 6A 30 PUSH 30 ; /Type = MB_OK|MB_ICONEXCLAMATION|MB_DEFBUTTON1|MB_APPLMODAL 00401469 |. 68 88314000 PUSH OFFSET 00403188 ; |Caption = "CD Check" 0040146E |. 68 9E314000 PUSH OFFSET 0040319E ; |Text = "CDROM Not found!" 00401473 |. 6A 00 PUSH 0 ; |hOwner = NULL 00401475 |. E8 F0020000 CALL &lt;JMP.&USER32.MessageBoxA&gt; ; \USER32.MessageBoxA Анализируем код и видим , что адрес 00401467 , это адрес сообщения о ошибке CDROM'a .А во второй строчке , как раз и идёт условный переход на вызов окна об ошибке .Команда JNE - переходит , если регистр флага ZF равен 0 .Значение всех регистров можно просмотреть в специально отведёном окошке , в правом верхнем углу .Можно догадаться , что команда [cmp al,2] заведомо ложна , т.е регистр al не равен двум и это просто способ совершить переход.Это мы решим простым редактированием .Два раза жмакаем на строчку условного перехода jne и удаляем букву 'N' у 'JNE' , получаем команду [JE SHORT 00401467] .Теперь у нас переход если , значение регистра AL = 2 , а как мы поняли они не равны , то и перехода на ошибку не будет .
Задание 4.Мы его рассматривать не будем , т.к оно идентично примеру описанному в предыдущей статье .
Post #: 1
RE: Ковыряем Fantom crack_me №5 - 2011-07-26 20:05:07.186666   
fromRIDDER

Сообщений: 1075
Оценки: 30
Присоединился: 2008-01-14 20:20:53.380000
Оформление довольно не плохо по сравнению с предыдущими статьями, так держать. Один момент: после слова сразу, без пробела, ставится знак препинания, а после ставится пробел; у тебя наоборот.

Post #: 2
RE: Ковыряем Fantom crack_me №5 - 2011-07-26 20:41:06.936666   
Крутой 0ль !

Сообщений: 150
Оценки: 10
Присоединился: 2010-12-02 19:33:25.666666
спс, будем стремится к совершенству ;)
Post #: 3
RE: Ковыряем Fantom crack_me №5 - 2011-07-26 21:43:54.960000   
Alianna

Сообщений: 1922
Оценки: 356
Присоединился: 2010-03-02 11:27:12.343333
quote:

00401367 |. 50 PUSH EAX
00401368 |. 6A 00 PUSH 0

quote:

Первые строки соответствуют - mov eax,0

Разве?
quote:

Далее видим ЧТО ИЗ СТЕКА командой popad

Чето я в приведенном куске popad не вижу.
quote:

переход на адрес 004013A5 , а это адрес месседжбокса о неверном пассворде

quote:

004013A5 |&gt; 6A 40 PUSH 40 ; /Type =

MB_OK|MB_ICONASTERISK|MB_DEFBUTTON1|MB_APPLMODAL
004013A7 |. 68 B2304000 PUSH OFFSET 004030B2 ; |Caption = "Password Check"
004013AC |. 68 C1304000 PUSH OFFSET 004030C1 ; |Text = "Good job, you got the correct password!"
004013B1 |. 6A 00 PUSH 0 ; |hOwner = NULL
004013B3 |. E8 B2030000 CALL &lt;JMP.&USER32.MessageBoxA&gt; ; \USER32.MessageBoxA
004013B8 |. EB 00 JMP SHORT 004013BA

По-моему, это как раз правильный.

Вы уверены что вставили тот кусок кода? А то чет описание его расходится с самим кодом.
Post #: 4
RE: Ковыряем Fantom crack_me №5 - 2011-07-26 22:04:59.473333   
Крутой 0ль !

Сообщений: 150
Оценки: 10
Присоединился: 2010-12-02 19:33:25.666666
спс что заметили ;)
а про
quote:



00401367 |. 50 PUSH EAX
00401368 |. 6A 00 PUSH 0

Первые строки соответствуют - mov eax,0

Калашников врёт ? :)
Post #: 5
RE: Ковыряем Fantom crack_me №5 - 2011-07-26 22:14:57.463333   
Alianna

Сообщений: 1922
Оценки: 356
Присоединился: 2010-03-02 11:27:12.343333
Эмм. Два идущих подряд пуша помещают в стек значение еах и 0. Я так понимаю, для обфускации. Смотрите:
00401367 |. 50 PUSH EAX ; сохраняем в стеке исходное значение еах 00401368 |. 6A 00 PUSH 0 ; заталкиваем в стек 0 ; ... мусорный код ... 00401377 |. 58 POP EAX ; а вот это в паре с push 0 как раз таки эквивалентно mov eax,0. 00401378 |. 83F8 00 CMP EAX,0 0040137B |. 75 28 JNE SHORT 004013A5 ; в еах 0, переход никогда не выполнится ; ... опять мусор ... 0040138A |. 58 POP EAX ; восстанавливаем исходное значение еах 0040138B |. 83F8 00 CMP EAX,0 ; и если оно было равным нулю 0040138E 74 15 JE SHORT 004013A5 ; совершаем переход Таким образом, push 0 и pop eax делают то же самое, что mov eax,0. А не push eax и push 0.
quote:

Калашников врёт ? :)

Не знаю. Может быть. А может быть, вы его не совсем правильно поняли))
Post #: 6
RE: Ковыряем Fantom crack_me №5 - 2011-07-26 22:24:26.170000   
Крутой 0ль !

Сообщений: 150
Оценки: 10
Присоединился: 2010-12-02 19:33:25.666666
очь благодарен.завтра надо в книжечку то заглянуть , как сейчас помню тот раздел про стек ….
Post #: 7
RE: Ковыряем Fantom crack_me №5 - 2011-07-26 22:26:02.063333   
Apathy^^

Сообщений: 96
Оценки: 10
Присоединился: 2011-07-01 17:14:09.226666
оформление достойное=)
ps возможно прислушаетесь - в следующий раз наверное стоит выделять адреса,операции
ну и возможно делать больше абзацев
хотя и так норм
Post #: 8
RE: Ковыряем Fantom crack_me №5 - 2011-07-26 22:35:36.010000   
Alianna

Сообщений: 1922
Оценки: 356
Присоединился: 2010-03-02 11:27:12.343333
А, еще.
quote:

у нас он равен 0 , т.е переход JE не отработает .При ZF=0 работает условный переход JNE. Меняем команду JE на JNE.Вот и всё

А если мы случайно угадаем пароль (возможность близка к нулю, но все же)? Имхо лучше на jmp заменить, чтоб срабатывал в любых условиях.
Post #: 9
RE: Ковыряем Fantom crack_me №5 - 2011-07-26 22:42:12.986666   
Крутой 0ль !

Сообщений: 150
Оценки: 10
Присоединился: 2010-12-02 19:33:25.666666
Ну это ориентироваться по ситуации , не более .
Post #: 10
RE: Ковыряем Fantom crack_me №5 - 2011-07-26 22:52:41.906666   
Alianna

Сообщений: 1922
Оценки: 356
Присоединился: 2010-03-02 11:27:12.343333
Но всегда лучше стремиться к более универсальному решению ;)
Post #: 11
Страниц:  [1]
Все форумы >> [Взлом программ] >> Ковыряем Fantom crack_me №5







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.