![]() |
CrackME[6]/[7]
Выдалось пару часиков, набросал вот кое что))
http://www.rapidshare.ru/123390 http://slil.ru/23642128 Код:
Язык: FASMЦитата:
выдастся ещё часок, сделаю понавороченней =) |
Very well done...
Любимый XOR, кудаже без него :) На эту ловушку попадётся примерно 98% :D Очень интерестный способ антиотладки и как я его сразу не заметил Валидный Пас найден |
Ну и где ответы или хотя бы жаркое обсуждение решения. Неужели за, почти, сутки решили только двое!!??
|
какие обсуждения - сессия )
а нас4ет антиотладки, хайдн прав, т.к. банальная китайкая сборка все сделает за исследователя и останется только потихоньку исследовать алго шифрования, не имея никаких проблем с отладкой |
>>банальная китайкая сборка все сделает за исследователя
поэтому я её часто отключаю)), просто когда это юзаешь теряешь навыки что мне нравится в этой сборке, так это остановка на t.., на t.., ну вобщем кто исследовал знает, меньше гемороя с PEeditor'ом)) но мы с hidden'ом посовещались и "банальная китайкая сборка" сделает не всё за реверсера)), по крайней мере он должен будет знать что подключить, а что выключить >> исследовать алго шифрования >>Любимый XOR, кудаже без него |
Прикольно ;)
Мне понравилась антиотладка. Респект :) 90% новичков на этом слетят) Пасс найден. (Валидный Пас ага :D ) Плюсик ща не поставлю, не дают =( Говорят, что слишком много плюсиков сегодня ставил. Гады Честно признаюсь, не знал про такую фишку антиотладки :) Правда, когда олька брякнулась на kernel32.ExitProcess, я понял, что что-то не так :) hidden, а где ты там две ловушки нашел? :) Хотя я просто все лишнее нопил, чтобы не мешалось, поэтому мб и не заметил вторую)) TAHA, кинь потом плз сорсик ) Хочу посмотреть на реализацию первой антиотладочной фишки :) |
Цитата:
Цитата:
|
На самом деле я спалил tls callback на этапе просмотра экзешника в иде. Умная ида послушно обзывает все калбеки как TlsCallback, поэтому по названию все стало ясно)
|
CrackMe[7] by Taha
Впринципе новый крякмис. Но новою тему создавать постеснялся тк, это сильно модерированный старый.
http://www.rapidshare.ru/129998 http://slil.ru/23672900 Язык: FASM Вес: 4 kb Сложность: средне Ничем не запакован! Думаю вам понравится). Особенно антиотладка в функции CryptStr. Попозже могу выложить сорц. Пас старый, имхо не суть))!! |
Сломано:
Время:40 секунд После взлома выдает happy end =) http://img161.imageshack.us/img161/5180/cracjqj2.jpg |
CrackMe[7] или что я хотел увидеть
Вообще то я хотел увидеть не сухой ответ типа: "Переход тут". А собственно последовательность действий после которых вы пришли к этому выводу.
Поскольку следующий пост не специально прочитать нельзя, могу смело выложить пример подобающего ответа)) Конечно исходников у вас быть не могло. Но еслиб вы видели номер, как я перегонял свои функции из MASM в FASM =). Я не знаю кгде в фасм лежат некоторые неообходимые структуры тк дело чаще имею с масм. Я просто брал функции компилил на масм, потом рипал необходимые структуры. Конечно далёкий от совершенства способ но... Вобщем я понял, что каждый ассемблер хорош для своих целей)) Ну начнём... Грузим прогу в Olly. Мдя много непонятных функций. F9, прога запустилась. Оля проставила в комментах используемые апи (От меня: Это пережиток воровства функций. Я хотел это сделать и ещё коечего, но потом понял, что мне к премутациям приступать пока рано))!! Но поиск кернел32 и апи решил оставить. ИМХО должно затруднить реверс тем кто юзает дезассемблеры). Вводим чтонить, enter. Прога немного повисла.. Что это? Спросит читатель! Терпение, - скажу я!! Перезапустим прогу и поставим бряк на USER32.GetDlgItemTextA. Опять что-нибудь вводим! И брякаемся на этой функции. F8, прога считала введёное слово.Трассерим дальше, программа начинает что то расшифровывать и пушить, точнее наоборот)), пушить и расшифровывать. Код:
00401101 > FFB6 2F124000 PUSH DWORD PTR DS:[ESI+40122F]От меня: ______________________________________ В исходном варианте это выглядело так: Код:
@@: push dword [CMPProc+esi]_______________________________________________ Дальше в edi идёт адрес введённого слова. mov edi,caption А в стек адрес после джампа. Этот прыжок должен был показаться вам странным, так как он идёт сам на себя. Код:
0040112A >-EB FE JMP SHORT CrackMe[.0040112AКод:
mov esi,espНо почему там jmp $. Вот тут вы должны были вспомнить мой предыдущий крякмис. Там была применина такая вещь, как tls.callback. Способы обхода этой функции я описывал в своей статье "Общие концепции борьбы с протектерами". Я предпочитаю пользоваться плагином Olly Advanced. Где его скачать я постил в треде посвящённом тулзам. Так вот в опциях к плагину ставим "Break on TLS Callback". Перезапускаем программу. Мы попали в колбечную функцию. Код:
00401257 /. 55 PUSH EBPЕсли дебугер включен или/и на ep стоит int3; ничего не происходит. А если нет jmp $ меняется на jmp esi))). Обходим всё это и добираемся до нашего jmp. Он изменился, как мы и предполагали, на jmp esi. Переходим по нему. Код:
0006FCA8 33F6 XOR ESI,ESIФункция сравнения пароля. Кста в оригинале она выглядит почти также =))). Идём до ret'а. и выходим на Код:
0040112C . 83C4 28 ADD ESP,28Вот зачем перед этим шло push CrackMe[.0040112C. Знаменитый push + ret)). Add же чистит стек от функции проверки. А дальше идёт та самая проверка на валидность пасса: Код:
00401131 . 85C0 TEST EAX,EAXПеребиваем je на jne. И f9. Брякаемся на исключении: Код:
004011C9 > 31C0 XOR EAX,EAXЖмём шифт-f9 пока не вылитит нужная мессага. Happy end. Кому интересна функция CryptStr. Смотрим в окне стека адрес SEH-функции. И ставим на неё бряк. Шифт-f9. И мы в функции. Код:
004011F0 |. FF05 97214000 INC DWORD PTR DS:[402197] ; CrackMe[.0040218AУкраденный код проверки на конец строки. Если строка не закончилась, то к eip исключительной ситуации добавляем 6(размер mov dword ptr [eax],1). Выходим к расшифровке байта. А если строка закончилась, переходим на восстановлние регистров в функции CryptStr. Вот такой вот замысловатый SEH =)). Сорц пробной программы: __________________________________________________ __________ Код:
format PE GUI 4.0 |
| Время: 17:34 |