Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582

Crackme: реверс-инжиниринг

18.06.2026, 13:19. Показов 23375. Ответов 278
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В архиве 10 exe-файлов - консольных приложений, каждое из которых запрашивает пароль. Цель в том, чтобы найти и ввести правильный пароль, после чего получить сообщение Password OK!
Приложения созданы не мной, а неким IOLI. Приложения 32-битные, что тоже упрощают работу.
Приложения закрываются после выполнения, поэтому запускайте из cmd.

Собственно, вы можете использовать любой удобный вам инструмент: IDA Pro, Ghidra, Cutter, x32dbg и т.д. Т.е. можно как статически анализировать, а можно запустить отладчик и анализировать динамически.
Поскольку не будет вывода секретного сообщения при правильном вводе пароля и заранее известно, что выведется лишь Password OK!, то не вижу смысла в использовании всяких трюков, чтобы обойти проверку пароля всякими jmp и прочими инструкциями. Лучше тренироваться именно в поиске пароля, а не в его обходе.


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

Что я имею в виду? Например, если открыть crackme0x03.exe в IDA Pro, то после декомпиляции мы сразу увидим пароль:



Декомпилятор Ghidra тоже сразу показывает пароль (в hex):



Чтобы было интересно, в таких простых случаях можно перейти в дизассемблерный вид и попытаться найти пароль самостоятельно:

Например, вот как выглядит это окно в IDA Pro. Я там специально добавил комментарии к некоторым строкам и разъяснил, как вычисляется этот пароль (но есть одна опечатка в одном комменте 528 вместо 582).



Для новичков в IDA Pro есть фича Auto Comments, которая включается в настройках. Но честно говоря, она мне не очень нравится.

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



Еще Cutter хорош тем, что на выбор там два декомпилятора, один из которых это декомпилятор от Ghidra (вполне неплохая альтернатива платного от Hex-Rays в IDA Pro). Собственно, этот же декомпилятор можно использовать и в самой Ghidra, но там нет автокомментирования.

***

В crackme0x04.exe пароль сразу не виден после декомпиляции.



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



crackme0x05.exe очень похож на предыдущее задание, только нужно еще вспомнить, как определяют четность чисел с помощью побитового AND.

***
Короче, если вам скучно и не знаете, чем заняться, то можете поиграться с этими файлами и ознакомиться с основами реверс-инжиниринга.
Вложения
Тип файла: zip crackme.zip (82.1 Кб, 12 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.06.2026, 13:19
Ответы с готовыми решениями:

Как написать keygen для crackme?
Здравствуйте форумчане.Решил написать keygen сразу предупреждаю добросовестного Модератора ,что...

Ошибка приложения в простом коде, реверс строки
Здравствуйте. Подскажите почему виндновс выдает сообшение об ошибке ? Тоесть компилятор...

Функция и реверс строки
1. Составить программу, которая реверсирует каждое слово строки str. 2. Написать и протестировать...

278
Software Engineer
 Аватар для Custos
338 / 342 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
22.06.2026, 20:16
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Royal_X Посмотреть сообщение
а я смогу это сделать без стат. анализа, а только поковырявшись в x64dbg? просто я это хочу запустить на виртуальной машине, а там у меня чистая винда и больше ничего. Макс. могу установить x64dbg.
Ну вполне возможно Но, думаю, все же потребуется статический анализ в IDA, так как там есть небольшой подвох
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
22.06.2026, 21:12  [ТС]
Цитата Сообщение от Custos Посмотреть сообщение
так как там есть небольшой подвох
подозреваю, что там снова какой-то антиотладочный механизм

мне кажется, что это 32-битное приложение умеет в рантайме переключать процессор в 64-битный режим для выполнения определенных операций, в том числе для работы с uint64
Во-первых, x64dbg не работает с исполняемым файлом, только x32dbg, что говорит о том, что приложение имеет заголовок 32-битного PE-файла
Во-вторых, тем не менее, в проге есть строка "Unsupported environment: run this application on Windows x64.\n"

еще VMware заглючила пару раз. Это типа в приложении встроено, чтобы фризилась виртуальная машина? или это у меня просто глюки.
короче, надоело сношаться в этой виртуальной машине
0
Software Engineer
 Аватар для Custos
338 / 342 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
22.06.2026, 21:24
Цитата Сообщение от Royal_X Посмотреть сообщение
подозреваю, что там снова какой-то антиотладочный механизм
Не-а, такого нету

Цитата Сообщение от Royal_X Посмотреть сообщение
Это типа в приложении встроено, чтобы фризилась виртуальная машина? или это у меня просто глюки.
Скорее всего что-то с виртуалкой, приложение запускается без проблем в VMware у меня
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
22.06.2026, 21:37  [ТС]
Цитата Сообщение от Custos Посмотреть сообщение
Но, думаю, все же потребуется статический анализ в IDA, так как там есть небольшой подвох
а ты доверяешь создателю этого крякми? стоит ли запустить на реальной машине? Защита винды уже дважды удалила файл. Но на этот крякми на вирустотал среагировал и другой приличный антивирус.
IDA у меня на реальной машине.
0
Software Engineer
 Аватар для Custos
338 / 342 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
22.06.2026, 21:38
Цитата Сообщение от Royal_X Посмотреть сообщение
а ты доверяешь создателю этого крякми?
Это мой CrackMe
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
22.06.2026, 21:43  [ТС]
Custos, а что означает этот красный JUMPOUT в IDA?

0
Software Engineer
 Аватар для Custos
338 / 342 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
22.06.2026, 21:47
Цитата Сообщение от Royal_X Посмотреть сообщение
Custos, а что означает этот красный JUMPOUT в IDA?
У IDA не получилось "красиво" декомпилировать место, куда передается управление
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
22.06.2026, 21:48  [ТС]
Цитата Сообщение от Custos Посмотреть сообщение
У IDA не получилось "красиво" декомпилировать место, куда передается управление
т.е. это было сделано намеренно, чтобы она не смогла декомпилировать?
0
Software Engineer
 Аватар для Custos
338 / 342 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
22.06.2026, 21:50
Цитата Сообщение от Royal_X Посмотреть сообщение
т.е. это было сделано намеренно, чтобы она не смогла декомпилировать?
Ну и для этого тоже
Лучше сразу открывай вкладку дизассемблера
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
22.06.2026, 22:05  [ТС]
Custos, если правильно посчитал, то после того ряда вычислений регистр AL=0x33 и вызов адреса 0x4013E8 и потом retf
0
Software Engineer
 Аватар для Custos
338 / 342 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
22.06.2026, 22:16
Цитата Сообщение от Royal_X Посмотреть сообщение
Custos, если правильно посчитал, то после того ряда вычислений регистр AL=0x33 и вызов адреса 0x4013E8 и потом retf
Но это еще не решение
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
22.06.2026, 22:36  [ТС]
Custos, 8940623657875707603

всё оказалось намного проще

взламывается за пару сек
0
Software Engineer
 Аватар для Custos
338 / 342 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
22.06.2026, 22:49
Цитата Сообщение от Royal_X Посмотреть сообщение
8940623657875707603
Ага
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
22.06.2026, 22:53  [ТС]
Цитата Сообщение от Custos Посмотреть сообщение
Ага
мне отладчик дал на блюдечке) ставил лишь один брекпойнт - запускается программа, ввожу любой мусор, на брекпойнте беру пароль из регистра. Всё.

Никакие jmp и патчи не делал - ты же просил не делать. Так что, всё по условию))
0
 Аватар для sporta1982
215 / 61 / 7
Регистрация: 05.10.2023
Сообщений: 542
23.06.2026, 05:25
Цитата Сообщение от Custos Посмотреть сообщение
Одна из задач, для которой предназначается либа, это предоставить собственную реализацию самых часто используемых WinAPI функций. Это сделано для того, чтобы затруднить попытки их "перехвата" user space инструментами, так как первое, что обычно идут хукать, это системные либки.
вы же syscall используете...

Так то же самое, можно ковыряться в функции WinAPI LineTo, и кончится это тоже syscall'ом....

Добавлено через 5 часов 21 минуту
кстати говоря, тут была тема как написать приложение на си ну или с++ (ну это я не знаю), без использования заголовочных файлов, ну и в принципе если бы нашелся вдохновенный человек кто то мог бы написать блог , о том что можно написать приложение с использованием того же syscall, мне кажется эта идея вполне реальна,. А блог бы хороший был бы , мне кажется это вполне реально. Но в этой секции не хотят думать на низком уровне...
0
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
23.06.2026, 06:24
Цитата Сообщение от Royal_X Посмотреть сообщение
ломаной IDA пользуются профаны
И те любители, что к ней привыкли, как минимум. В далеком 2003, когда я только-только начинал интересоваться реверсом (вместо кроссвордов по вечерам), когда было большое активное сообщество на cracklab - никакой гидры ещё и в помине не было. А эксперты-любители уже были. И были разовые утечки ломаной иды как праздник. И многие популярные и качественные скрипты для IDA разработаны именно теми любителями. И инструменты анализа, используемые теперь( в том числе профи) оттуда же.

Цитата Сообщение от Royal_X Посмотреть сообщение
эксперты, которые пользуются IDA, обычно её не покупают, а это делают вместо них организации, в которых они работают. Почему? Потому что она дорогая.
И потому, что купить лицензию на IDA - это тот ещё квест. Абы кому не продавали.

Гидра сильно подгадила коммерческой стратегии IDA - если теперь начинающий эксперт начнет с гидры, то на IDA потом пересаживаться ему незачем. Он наработает свой тулсет и привычки с гидрой. Потому и стали free выпускать и ломаные валяются на каждом углу.

А лучшие стратегии защиты ПО остались прежними: демо-версии с вырезанным физически функционалом + именные лицензии с подписью + онлайн функционал + VM навесная.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
23.06.2026, 10:55  [ТС]
WhiteP, сам движок анализа Ghidra неплохой. Но вот gui полный отстой. Под gui подразумеваю оконное приложение Ghidra, написанное на Java Swing. Топорный интерфейс (собственно это из-за Swing), часть фич нужно настраивать с танцами с бубном. Например, программа предоставляет лишь интерфейс для связи c внешними отладчиками, но пока их настроишь, в другой программе можно было уже давно выполнить нужную задачу. К тому же, отладка баганутая в Ghidra.
Пока я не смог раскрыть потенциал ни отладчиков в Ghidra, ни эмулятора из-за невозможности привести их в рабочее состояние. А если быть точнее, то из-за нежелания участвовать в этом цирке.
Объясню на примере. Запустить просто, например, локальный отладчик gdb в Ghidra не получится. По крайней мере, у меня Ghidra выдавала ошибку. Копавшись в ней понял, что проблема с тем, что Ghidra не могла запустить какой-то внутренний Powershell скрипт. Это было связано с execution policies. Если запустить PowerShell от админа и ввести:
PowerShell
1
Get-ExecutionPolicy -List
то ты поймешь, о чем речь.
Данная ошибка исправляется сменой политики выполнения хотя бы для текущего пользователя, например:
PowerShell
1
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
причем, нужно выставлять именно Unrestricted, потому что скрипты Ghidra без подписи и всякие RemoteSigned или AllSigned не прокатят.
Но на этом клоунада не заканчивается. Нужно еще питон настроить и установить еще пакеты типа protobuf и пр.

Кстати, со скриптами в Ghidra тоже печалька. Там в качестве главного языка это Java, тогда как стандарт в отрасли это Python. В Ghidra питон тоже можно юзать благодаря Jython, но опять же всё через одно место.

А в IDA Pro отладчики (WinDbg, Local Windows Debugger и другие) работают из коробки.

Цитата Сообщение от WhiteP Посмотреть сообщение
Гидра сильно подгадила коммерческой стратегии IDA
потому что по функционалу почти не уступает IDA Pro, а в чем-то даже лучше. Например, в Ghidra из коробки есть Version Tracking, тогда как для IDA Pro нужно ставить плагины BinDiff или Diaphora
В Ghidra тоже есть инструменты для совместной работы - Ghidra Server, а это означает, что софтулю можно юзать даже в приличных организациях.
Но любитель/начинающий в RE вряд ли станут воевать с интерфейсом Ghidra, а просто установят крякнутую IDA Pro.

Цитата Сообщение от Custos Посмотреть сообщение
никакой защиты от отладки
вчера я забыл написать, но в этом плане ты соврал

Защита от отладки там была. А именно был использован трюк Heaven's Gate. Странно то, что ты говоришь, что это твой крякми, а сам не знаешь, что там защита от отладки?

Heaven's Gate - трюк анти-отладки / обфускации, когда твой 32-битный крякми намеренно прыгает в 64-битный режим (far jmp на сегмент 0x33)

Assembler
1
2
3
4
5
6
7
push 0x33          ; Поместить в стек селектор для 64-битного сегмента кода
call $+5           ; Выполнить call на следующую инструкцию
add dword [esp], 5 ; Скорректировать адрес возврата на метку x64_code
retf               ; Дальний возврат, который переключает режим
 
x64_code:
; ... здесь выполняется 64-битный код ...
32-битный отладчик (например, x32dbg) не понимает 64-битные инструкции. Он видит лишь "мусор", в то время как реальный код выполняется в 64-битном режиме . Это делает анализ на x64dbg невозможным (по крайней мере, без спец. плагинов).

Не говорю уже, что в коде полных всяких int 3.

Правда толку от этих антиотладочных мер ноль) Все равно, если постараться, отладка идет как по маслу.

hardware-брекпойнт типа execute с размером 1 (у execute вообще-то всегда 1), плевать хотел на все эти анти-отладочные трюки.

Custos, но зато много чего узнал про регистры DR0-DR3. Спасибо тебе
0
 Аватар для sporta1982
215 / 61 / 7
Регистрация: 05.10.2023
Сообщений: 542
23.06.2026, 12:54
Цитата Сообщение от Royal_X Посмотреть сообщение
Защита от отладки там была. А именно был использован трюк Heaven's Gate. Странно то, что ты говоришь, что это твой крякми, а сам не знаешь, что там защита от отладки?
Heaven's Gate - трюк анти-отладки / обфускации, когда твой 32-битный крякми намеренно прыгает в 64-битный режим (far jmp на сегмент 0x33)
да уж, только стоять и аплодировать....
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
23.06.2026, 13:02  [ТС]
я так понимаю, что тема особо не залетела, поскольку многие не готовы рискнуть запускать всякие крякми от анонимов на своих реальных машинах, а на виртуалке никто не хочет извращаться.
крякми от наших форумчан-старожилов еще можно в какой-то степени доверять, но многие крякми из интернета содержат вирусы
такие крякми идеальное средство для распространения вирусов. Те, кто их скачивает, отключают антивирусы, чтобы false positive их не доставали, что делает устройство уязвимым.

так что, лучше просто обсуждать в этой теме RE без публикации самих исполняемых файлов. А то, у кого-то еще устройство крякнет, а винить будут автора темы))
0
 Аватар для sporta1982
215 / 61 / 7
Регистрация: 05.10.2023
Сообщений: 542
23.06.2026, 13:16
я чего то думал если приложение 32 бита и используй x32dbg, а если 64 бита то используй x64dbg....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.06.2026, 13:16

Реверс слов в строке
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int...

Реверс строки
Не могу написать программу которая перестанавливает символы в строке(abc->cba)

Реверс элементов массива
Надо поменять значения элементов массива в обратном порядке.Первый->последний,второй->предпоследний...

реверс строки
короче, у меня есть строка.. ее надо перевести наоборот. типа было ЛОХ стало ХОЛ вот как я...

Реверс масива по строках.
Задание: Поменять первую строку с последней, вторую с предпоследней и так далее. Я делаю вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru