• XSS.stack #1 – первый литературный журнал от юзеров форума

CrackMe Falcon1 Crackme #1 (writeup)

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Всем привет. В этот туториале я покажу, как проходить крекми под названием Falcon1 Crackme #1. Сам архив с крекми будет приложен к этому туториалу. Скачиваем его, распаковываем и запускаем. Я буду запускать его в ХРюше, но и в Вин7 файл успешно запускается. Под Вин10 думаю, что тоже будет все нормально. Появляется следующее окошко.

1697396074704.png


Сначала совершенно непонятно, зачем так много кнопок. Но стоит нажать на любую, (почти) и появится следующее окно.

1697396095951.png


Пока ничего не понятно, какую кнопку нужно нажать. Поэтому почитаем ридми файлик, который приложен к данному крекми. В ней автор пишет следующее:

Привет,

Это мой первый крякми...

Он скомпилирован с помощью masm32.

Не ожидайте, что он будет сложным (или продвинутым) вообще...

Я не мог решить, какой метод упаковки использовать (UPX или AsPack).

В итоге я решил его вообще не паковать...

Вот схема:

Используя свои знания реверса, вы должны

1) Выясните, какая из 84 (или 54 в шестнадцатеричном формате) кнопок является той, которая вызывает процедуру последовательной проверки.

2) Напишите действительный генератор ключей.

3) Третьего не дано ...

Рекомендуется (для вашей собственной практики) не патчить приложение.

Да, и еще кое-что: есть еще один способ победить крэкми...

(Снова используя свои знания реверса), узнайте, как это можно сделать...

(или, если вам интересно и вы не можете разобраться самостоятельно, прочитайте «hints.txt»).


Теперь становится понятно, что нам нужно не только внести правильный логин и пароль, но и ещё нажать нужную кнопку. Пока не будем смотреть файлик хинтс. Посмотрим его позже.

Напомню, что при нажатие на первую, вторую и третью кнопку появляется сообщение — Not Me, значащее, что это не я. Поэтому загрузим наш файлик в IDA PRO. Я буду использовать версию 6.8, так как она уже установлена у меня на ПК.

1697396123025.png


Здесь нажимаем ОК.

Программ загружает файл и показывает нам такой экран.

1697396132237.png


Нам такой вид не нужен, поэтому нажимаем Спейсбар. Сейчас мы находимся на точке входа.

1697396146141.png


Мы видим тут четыре кола. Два нас абсолютно не интересуют. Поэтому мы дважды кликаем на третий кол, и переходим по адресу 40102С.

1697396161512.png


Видим, что тут нам тоже делать нечего. А то, что нам нужно находится в этом месте.

1697396173662.png


Также делаем двойной клик как и в прошлый раз. И попадаем в основной функционал программы. Теперь мы знаем, что ответ нужно искать здесь.

Функция выглядит очень тяжелой и не легкой.

1697396194287.png


Но давайте попробуем разобраться.

Мы помним, что нам показывается строка Not Me. Давайте попробуем её найти.

Это можно сделать через соответствующее меню или через нажатие клавиши S+F12.

1697396209587.png


После нажатия нам появится такое окно.

1697396226697.png


Дважды щелкаем по пункту Not Me и попадаем в секцию данных.

1697396233134.png


Сбоку видим, что есть перекрестная ссылка. Поэтому выделяем слово aNotMe и нажимаем клавишу [Х].

1697396240828.png


И попадаем сюда. Видим, что это тот самый MessageBox. Я покрашу его в красный цвет. По испански это - БэдБой, или плохой парниша. (Ещё был Бэд Гай, привет cracklab.team :)) )

1697396260245.png


Будем идти вверх от этого сообщения, узнавая откуда пришел поток данных.

Выше находится сдвиг, но это не похоже на то, что нам нужно.

1697396270920.png


Идем выше.

1697396280265.png


Тут видим, значение 54 в хексе. То есть 84 в десятичном Представлении. Это то, про что нам говорили в самом начале. Про количество кнопок. Кажется, разгадка почти близко.

1697396288448.png


Идем ещё выше.

1697396294112.png


Здесь идет сравнение с единицей. Идем ещё выше.

1697396301498.png


Здесь уже что-то интересненькое.

D это 13 в десятичной форме.

1697396311434.png


Если пойдем налево, то увидим это.

1697396319586.png


Видим, что в регистр EAX помещается wParam, а там как раз и хранится ID кнопки. К сожалению, мы бы не смогли это увидеть в Олли, только в IDA PRO. Вот в чем её и сила. Отладчик X64DBG я не запускал и файл там не проверял, то есть не знаю как там это все будет выглядеть.

1697396328614.png


Сейчас давайте проверим нашу догадку и нажмем на 13 кнопку по счету.

1697396337657.png


И у нас появится следующий БэдБой, но уже другой.

1697396352914.png


Давайте его точно также найдем через сроки и покрасим в красный цвет.

1697396361118.png


1697396365620.png


1697396369269.png


Вот наш нужный БэдБой.

1697396382777.png


Давайте покрасим его в красный цвет. Теперь у нас два БэдБоя. Но зато мы знаем на какую кнопку нажимать.

1697396395495.png


Попробуем поискать другие МессаджБоксы. Для этого станем на слово MessageBoxA нажмем [Х], чтобы найти перекрестные ссылки. Нам появится следующее окно.

1697396403611.png


То есть всего существует пять МессаджБоксов. Два мы уже рассмотрели. Осталось три. Наверняка один из них будет тем что нам нужно.

Вот он.

1697396415422.png


Покрасим его в зеленый цвет.

Диаграмма стала выглядеть так. Есть ещё один МессаджБокс который я тоже покрасил.

1697396426172.png


В центре недалеко от зеленого блока видим, много блоков, скорее всего там и есть проверка серийного номера. Давайте пойдем туда. Но проще нажать на [F5], так как в IDA давно появился декомпилятор. И нам будет намного легче.

1697396440679.png


Сам код на СИ выглядел бы так.

int key1, key2, key3 = 0;

key1 = int(username.length());

for (int i = 0; i < int(username.length()); i++)

{


key3 = key3 + int(username);

}

key2 = key3 * 1337;


Давайте попробуем найти это код в IDA. Но одним куском кода у нас ничего не получится, потому что присутствует очень много переходов и джампов. Но зато мы можем отсеять и пометить другим цветом ненужные блоки. Сделаем это с функцией CreateWindows. Я буду помечать её желтым цветом. Также я помечу одиночные джампы синим цветом.

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

1697396480703.png



Весь алгоритм проверки проще смотреть в отладчике, но отладчик закрывается когда приложение запущено под ним.

Всё это происходим из-за этой функции.

1697396490513.png


Что нам нужно сделать так это пропатчить инструкцию OR EAX, EAX на XOR EAX, EAX. Нажимаем спейсбар и меняем команду.

1697396498874.png


1697396510643.png


Далее выбираем — Copy to ExecutableAll modificationsCopy AllП.К.М Save file

1697396516225.png


Теперь наш файл успешно запускается под отладчиком.

1697396525217.png


Теперь давайте напишем кейген на питон. Он будет выглядеть так.

Python:
import os
import sys

nameMultiplied = 0
nameSum = 0
nameLength = 0


def setNameMultiplied(name):

    global nameMultiplied
    
    for i in range(len(name)):
        aux = 1337 * ord(name[i])
        nameMultiplied = nameMultiplied + aux
    
    print "[+] Value nameMultiplied: 0x%08X" % (nameMultiplied)

    
def setNameSum(name):

    global nameSum
    
    for i in range(len(name)):
        nameSum = nameSum + ord(name[i])
    
    print "[+] Value nameSum: 0x%08X" % (nameSum)
    
def setNameLength(name):

    global nameLength
    
    nameLength = len(name)
    
def main():

    print "[!] Welcome to falcon1crk1 keygen"
    
    name = str(raw_input("Give me your name (more than 2 letters):"))
    
    if len(name) <= 2:
        exit(-1)
        
    setNameMultiplied(name)
    setNameSum(name)
    setNameLength(name)
    
    print "Your name: %s" % (name)
    print "Your serial number"
    print "%s-%s-%s" % (nameLength, nameMultiplied, nameSum)

if __name__ == '__main__':
    main()

Вспомним теперь что у нас есть второй способ взлома этого крекми. Давайте прочитаем файл хинтс.

Вам либо было любопытно, что содержит этот файл, либо вы просто не смогли эффективно отреверсить взломанный файл и прибегли к подсказкам??? :)

1) Распаковка: Приложение вообще не запаковано.

2) Если вы нажмете не ту кнопку, вы получите сообщение, а затем приложение будет закрыто (да, я знаю, что вы это уже заметили). Однако, если вы нажмете правильную кнопку, введя неправильный серийный номер, сообщение не будет отображаться (приложение просто закроется, не сообщая вам об этом)... Теперь, если вы хотите (и у вас хватит смелости открыть приложение 84 раза), вы можете начать нажимать все кнопки и смотреть, получите вы сообщение или нет...

3) Дайте угадаю... Вы открыли Crackme с помощью OllyDbg, и когда вы нажали "Запустить", приложение запустилось и немедленно завершилось... Хмммм, установите точку останова в API IsDebuggerPressent, а затем исправьте условный переход после вызова.

4) Другой способ победить Crackme — создать dll-файл с именем «biw.dll», который экспортирует процедуру под названием «Patch_Falcon1».


Ага. Исходная точка входа это строка - Patch_Falcon1. Давайте попробуем её найти.

1697396585191.png


Вот она.

Также дважды кликаем на неё, а потом нажимаем [X] для просмотра перекрестных ссылок.

1697396591685.png


Попадаем сюда

1697396597570.png


Чуть выше видем название файла, которое мы должны создать. Ага. Это файл biw.dll.

1697396606138.png


Я буду закрашивать этот второй алгоритм проверки крекми бирюзовым цветом. Видим, что у нас сначала вызывается функция LoadLibrary, а затем GetProcAddress.

Дальше идет так.

1697396620825.png


И ниже.

1697396632865.png


Получилось вот так.

1697396645250.png


Оставшиеся белые блоки - это блоки нашего алгоритма проверки серийного номера.

Теперь давайте скачаем FASM - https://flatassembler.net/ , распакуем и запустим FASMW.EXE

Вставим следующий код.

C:
[/I]format PE GUI 4.0 DLL
entry DllEntryPoint

include 'win32a.inc'

section '.text' code readable executable

proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
        mov     eax, 1
        ret
endp

section '.edata' export data readable

export 'biw.dll', Patch_Falcon1, 'Patch_Falcon1'

proc Patch_Falcon1
db  0B8h, 39h, 05h, 00, 00
db  0BBh, 39h, 05h, 00, 00
db  0B9h, 39h, 05h, 00, 00
db  0BAh, 39h, 05h, 00, 00
db  0C3h
endp[I]

и нажмем С+F9. Полученный файлик с ДЛЛ перенесем в папку с крекми. И запустим его.

1697396684280.png


Нас поздравит следующее окошко с победой.

Спасибо, что прочитали этот небольшой туториал. Думаю, что хоть кого-то он чему-нибудь да научил. Если интересны такие туториалы в таком виде ставьте лайки. Всем спасибо. До встрече в следующем туториале.

Написано специально для самого уютного форума xss.pro
Автор текста: yashechka
Источник: https://xss.pro/threads/100163/


Архив с файлами.

База иды
 

Вложения

  • 1.zip
    4.1 КБ · Просмотры: 8
  • falcon1crk1.zip
    45.3 КБ · Просмотры: 6
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх