Всем привет. В этот туториале я покажу, как проходить крекми под названием Falcon1 Crackme #1. Сам архив с крекми будет приложен к этому туториалу. Скачиваем его, распаковываем и запускаем. Я буду запускать его в ХРюше, но и в Вин7 файл успешно запускается. Под Вин10 думаю, что тоже будет все нормально. Появляется следующее окошко.
Сначала совершенно непонятно, зачем так много кнопок. Но стоит нажать на любую, (почти) и появится следующее окно.
Пока ничего не понятно, какую кнопку нужно нажать. Поэтому почитаем ридми файлик, который приложен к данному крекми. В ней автор пишет следующее:
Привет,
Это мой первый крякми...
Он скомпилирован с помощью masm32.
Не ожидайте, что он будет сложным (или продвинутым) вообще...
Я не мог решить, какой метод упаковки использовать (UPX или AsPack).
В итоге я решил его вообще не паковать...
Вот схема:
Используя свои знания реверса, вы должны
1) Выясните, какая из 84 (или 54 в шестнадцатеричном формате) кнопок является той, которая вызывает процедуру последовательной проверки.
2) Напишите действительный генератор ключей.
3) Третьего не дано ...
Рекомендуется (для вашей собственной практики) не патчить приложение.
Да, и еще кое-что: есть еще один способ победить крэкми...
(Снова используя свои знания реверса), узнайте, как это можно сделать...
(или, если вам интересно и вы не можете разобраться самостоятельно, прочитайте «hints.txt»).
Теперь становится понятно, что нам нужно не только внести правильный логин и пароль, но и ещё нажать нужную кнопку. Пока не будем смотреть файлик хинтс. Посмотрим его позже.
Напомню, что при нажатие на первую, вторую и третью кнопку появляется сообщение — Not Me, значащее, что это не я. Поэтому загрузим наш файлик в IDA PRO. Я буду использовать версию 6.8, так как она уже установлена у меня на ПК.
Здесь нажимаем ОК.
Программ загружает файл и показывает нам такой экран.
Нам такой вид не нужен, поэтому нажимаем Спейсбар. Сейчас мы находимся на точке входа.
Мы видим тут четыре кола. Два нас абсолютно не интересуют. Поэтому мы дважды кликаем на третий кол, и переходим по адресу 40102С.
Видим, что тут нам тоже делать нечего. А то, что нам нужно находится в этом месте.
Также делаем двойной клик как и в прошлый раз. И попадаем в основной функционал программы. Теперь мы знаем, что ответ нужно искать здесь.
Функция выглядит очень тяжелой и не легкой.
Но давайте попробуем разобраться.
Мы помним, что нам показывается строка Not Me. Давайте попробуем её найти.
Это можно сделать через соответствующее меню или через нажатие клавиши S+F12.
После нажатия нам появится такое окно.
Дважды щелкаем по пункту Not Me и попадаем в секцию данных.
Сбоку видим, что есть перекрестная ссылка. Поэтому выделяем слово aNotMe и нажимаем клавишу [Х].
И попадаем сюда. Видим, что это тот самый MessageBox. Я покрашу его в красный цвет. По испански это - БэдБой, или плохой парниша. (Ещё был Бэд Гай, привет cracklab.team
) )
Будем идти вверх от этого сообщения, узнавая откуда пришел поток данных.
Выше находится сдвиг, но это не похоже на то, что нам нужно.
Идем выше.
Тут видим, значение 54 в хексе. То есть 84 в десятичном Представлении. Это то, про что нам говорили в самом начале. Про количество кнопок. Кажется, разгадка почти близко.
Идем ещё выше.
Здесь идет сравнение с единицей. Идем ещё выше.
Здесь уже что-то интересненькое.
D это 13 в десятичной форме.
Если пойдем налево, то увидим это.
Видим, что в регистр EAX помещается wParam, а там как раз и хранится ID кнопки. К сожалению, мы бы не смогли это увидеть в Олли, только в IDA PRO. Вот в чем её и сила. Отладчик X64DBG я не запускал и файл там не проверял, то есть не знаю как там это все будет выглядеть.
Сейчас давайте проверим нашу догадку и нажмем на 13 кнопку по счету.
И у нас появится следующий БэдБой, но уже другой.
Давайте его точно также найдем через сроки и покрасим в красный цвет.
Вот наш нужный БэдБой.
Давайте покрасим его в красный цвет. Теперь у нас два БэдБоя. Но зато мы знаем на какую кнопку нажимать.
Попробуем поискать другие МессаджБоксы. Для этого станем на слово MessageBoxA нажмем [Х], чтобы найти перекрестные ссылки. Нам появится следующее окно.
То есть всего существует пять МессаджБоксов. Два мы уже рассмотрели. Осталось три. Наверняка один из них будет тем что нам нужно.
Вот он.
Покрасим его в зеленый цвет.
Диаграмма стала выглядеть так. Есть ещё один МессаджБокс который я тоже покрасил.
В центре недалеко от зеленого блока видим, много блоков, скорее всего там и есть проверка серийного номера. Давайте пойдем туда. Но проще нажать на [F5], так как в IDA давно появился декомпилятор. И нам будет намного легче.
Сам код на СИ выглядел бы так.
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. Я буду помечать её желтым цветом. Также я помечу одиночные джампы синим цветом.
У меня получилось вот так.
Весь алгоритм проверки проще смотреть в отладчике, но отладчик закрывается когда приложение запущено под ним.
Всё это происходим из-за этой функции.
Что нам нужно сделать так это пропатчить инструкцию OR EAX, EAX на XOR EAX, EAX. Нажимаем спейсбар и меняем команду.
Далее выбираем — Copy to Executable→ All modifications→ Copy All → П.К.М Save file
Теперь наш файл успешно запускается под отладчиком.
Теперь давайте напишем кейген на питон. Он будет выглядеть так.
Вспомним теперь что у нас есть второй способ взлома этого крекми. Давайте прочитаем файл хинтс.
Вам либо было любопытно, что содержит этот файл, либо вы просто не смогли эффективно отреверсить взломанный файл и прибегли к подсказкам???
1) Распаковка: Приложение вообще не запаковано.
2) Если вы нажмете не ту кнопку, вы получите сообщение, а затем приложение будет закрыто (да, я знаю, что вы это уже заметили). Однако, если вы нажмете правильную кнопку, введя неправильный серийный номер, сообщение не будет отображаться (приложение просто закроется, не сообщая вам об этом)... Теперь, если вы хотите (и у вас хватит смелости открыть приложение 84 раза), вы можете начать нажимать все кнопки и смотреть, получите вы сообщение или нет...
3) Дайте угадаю... Вы открыли Crackme с помощью OllyDbg, и когда вы нажали "Запустить", приложение запустилось и немедленно завершилось... Хмммм, установите точку останова в API IsDebuggerPressent, а затем исправьте условный переход после вызова.
4) Другой способ победить Crackme — создать dll-файл с именем «biw.dll», который экспортирует процедуру под названием «Patch_Falcon1».
Ага. Исходная точка входа это строка - Patch_Falcon1. Давайте попробуем её найти.
Вот она.
Также дважды кликаем на неё, а потом нажимаем [X] для просмотра перекрестных ссылок.
Попадаем сюда
Чуть выше видем название файла, которое мы должны создать. Ага. Это файл biw.dll.
Я буду закрашивать этот второй алгоритм проверки крекми бирюзовым цветом. Видим, что у нас сначала вызывается функция LoadLibrary, а затем GetProcAddress.
Дальше идет так.
И ниже.
Получилось вот так.
Оставшиеся белые блоки - это блоки нашего алгоритма проверки серийного номера.
Теперь давайте скачаем FASM - https://flatassembler.net/ , распакуем и запустим FASMW.EXE
Вставим следующий код.
и нажмем С+F9. Полученный файлик с ДЛЛ перенесем в папку с крекми. И запустим его.
Нас поздравит следующее окошко с победой.
Спасибо, что прочитали этот небольшой туториал. Думаю, что хоть кого-то он чему-нибудь да научил. Если интересны такие туториалы в таком виде ставьте лайки. Всем спасибо. До встрече в следующем туториале.
Написано специально для самого уютного форума xss.pro
Автор текста: yashechka
Источник: https://xss.pro/threads/100163/
Архив с файлами.
База иды
Сначала совершенно непонятно, зачем так много кнопок. Но стоит нажать на любую, (почти) и появится следующее окно.
Пока ничего не понятно, какую кнопку нужно нажать. Поэтому почитаем ридми файлик, который приложен к данному крекми. В ней автор пишет следующее:
Привет,
Это мой первый крякми...
Он скомпилирован с помощью masm32.
Не ожидайте, что он будет сложным (или продвинутым) вообще...
Я не мог решить, какой метод упаковки использовать (UPX или AsPack).
В итоге я решил его вообще не паковать...
Вот схема:
Используя свои знания реверса, вы должны
1) Выясните, какая из 84 (или 54 в шестнадцатеричном формате) кнопок является той, которая вызывает процедуру последовательной проверки.
2) Напишите действительный генератор ключей.
3) Третьего не дано ...
Рекомендуется (для вашей собственной практики) не патчить приложение.
Да, и еще кое-что: есть еще один способ победить крэкми...
(Снова используя свои знания реверса), узнайте, как это можно сделать...
(или, если вам интересно и вы не можете разобраться самостоятельно, прочитайте «hints.txt»).
Теперь становится понятно, что нам нужно не только внести правильный логин и пароль, но и ещё нажать нужную кнопку. Пока не будем смотреть файлик хинтс. Посмотрим его позже.
Напомню, что при нажатие на первую, вторую и третью кнопку появляется сообщение — Not Me, значащее, что это не я. Поэтому загрузим наш файлик в IDA PRO. Я буду использовать версию 6.8, так как она уже установлена у меня на ПК.
Здесь нажимаем ОК.
Программ загружает файл и показывает нам такой экран.
Нам такой вид не нужен, поэтому нажимаем Спейсбар. Сейчас мы находимся на точке входа.
Мы видим тут четыре кола. Два нас абсолютно не интересуют. Поэтому мы дважды кликаем на третий кол, и переходим по адресу 40102С.
Видим, что тут нам тоже делать нечего. А то, что нам нужно находится в этом месте.
Также делаем двойной клик как и в прошлый раз. И попадаем в основной функционал программы. Теперь мы знаем, что ответ нужно искать здесь.
Функция выглядит очень тяжелой и не легкой.
Но давайте попробуем разобраться.
Мы помним, что нам показывается строка Not Me. Давайте попробуем её найти.
Это можно сделать через соответствующее меню или через нажатие клавиши S+F12.
После нажатия нам появится такое окно.
Дважды щелкаем по пункту Not Me и попадаем в секцию данных.
Сбоку видим, что есть перекрестная ссылка. Поэтому выделяем слово aNotMe и нажимаем клавишу [Х].
И попадаем сюда. Видим, что это тот самый MessageBox. Я покрашу его в красный цвет. По испански это - БэдБой, или плохой парниша. (Ещё был Бэд Гай, привет cracklab.team
Будем идти вверх от этого сообщения, узнавая откуда пришел поток данных.
Выше находится сдвиг, но это не похоже на то, что нам нужно.
Идем выше.
Тут видим, значение 54 в хексе. То есть 84 в десятичном Представлении. Это то, про что нам говорили в самом начале. Про количество кнопок. Кажется, разгадка почти близко.
Идем ещё выше.
Здесь идет сравнение с единицей. Идем ещё выше.
Здесь уже что-то интересненькое.
D это 13 в десятичной форме.
Если пойдем налево, то увидим это.
Видим, что в регистр EAX помещается wParam, а там как раз и хранится ID кнопки. К сожалению, мы бы не смогли это увидеть в Олли, только в IDA PRO. Вот в чем её и сила. Отладчик X64DBG я не запускал и файл там не проверял, то есть не знаю как там это все будет выглядеть.
Сейчас давайте проверим нашу догадку и нажмем на 13 кнопку по счету.
И у нас появится следующий БэдБой, но уже другой.
Давайте его точно также найдем через сроки и покрасим в красный цвет.
Вот наш нужный БэдБой.
Давайте покрасим его в красный цвет. Теперь у нас два БэдБоя. Но зато мы знаем на какую кнопку нажимать.
Попробуем поискать другие МессаджБоксы. Для этого станем на слово MessageBoxA нажмем [Х], чтобы найти перекрестные ссылки. Нам появится следующее окно.
То есть всего существует пять МессаджБоксов. Два мы уже рассмотрели. Осталось три. Наверняка один из них будет тем что нам нужно.
Вот он.
Покрасим его в зеленый цвет.
Диаграмма стала выглядеть так. Есть ещё один МессаджБокс который я тоже покрасил.
В центре недалеко от зеленого блока видим, много блоков, скорее всего там и есть проверка серийного номера. Давайте пойдем туда. Но проще нажать на [F5], так как в IDA давно появился декомпилятор. И нам будет намного легче.
Сам код на СИ выглядел бы так.
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. Я буду помечать её желтым цветом. Также я помечу одиночные джампы синим цветом.
У меня получилось вот так.
Весь алгоритм проверки проще смотреть в отладчике, но отладчик закрывается когда приложение запущено под ним.
Всё это происходим из-за этой функции.
Что нам нужно сделать так это пропатчить инструкцию OR EAX, EAX на XOR EAX, EAX. Нажимаем спейсбар и меняем команду.
Далее выбираем — Copy to Executable→ All modifications→ Copy All → П.К.М Save file
Теперь наш файл успешно запускается под отладчиком.
Теперь давайте напишем кейген на питон. Он будет выглядеть так.
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. Давайте попробуем её найти.
Вот она.
Также дважды кликаем на неё, а потом нажимаем [X] для просмотра перекрестных ссылок.
Попадаем сюда
Чуть выше видем название файла, которое мы должны создать. Ага. Это файл biw.dll.
Я буду закрашивать этот второй алгоритм проверки крекми бирюзовым цветом. Видим, что у нас сначала вызывается функция LoadLibrary, а затем GetProcAddress.
Дальше идет так.
И ниже.
Получилось вот так.
Оставшиеся белые блоки - это блоки нашего алгоритма проверки серийного номера.
Теперь давайте скачаем 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. Полученный файлик с ДЛЛ перенесем в папку с крекми. И запустим его.
Нас поздравит следующее окошко с победой.
Спасибо, что прочитали этот небольшой туториал. Думаю, что хоть кого-то он чему-нибудь да научил. Если интересны такие туториалы в таком виде ставьте лайки. Всем спасибо. До встрече в следующем туториале.
Написано специально для самого уютного форума xss.pro
Автор текста: yashechka
Источник: https://xss.pro/threads/100163/
Архив с файлами.
База иды
Вложения
Последнее редактирование: