|
6770 / 3135 / 1065
Регистрация: 01.06.2021
Сообщений: 12,172
|
|
Crackme: реверс-инжиниринг18.06.2026, 13:19. Показов 29798. Ответов 279
Метки нет (Все метки)
В архиве 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. *** Короче, если вам скучно и не знаете, чем заняться, то можете поиграться с этими файлами и ознакомиться с основами реверс-инжиниринга.
0
|
|
| 18.06.2026, 13:19 | |
|
Ответы с готовыми решениями:
279
Ошибка приложения в простом коде, реверс строки Функция и реверс строки |
|
Software Engineer
338 / 343 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
|
||
| 24.06.2026, 17:46 | ||
![]() В чатике дискорд-сервера по реверсу это решили минут за 15-20
0
|
||
|
Software Engineer
338 / 343 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
|
||
| 24.06.2026, 17:50 | ||
0
|
||
|
6770 / 3135 / 1065
Регистрация: 01.06.2021
Сообщений: 12,172
|
|||||
| 24.06.2026, 18:11 [ТС] | |||||
|
другой вопрос, если они добавлены лишь, чтобы запутать людей и они не имеют никакого отношения к настоящему решению - такой вариант я не исключаю Добавлено через 2 минуты если не смогут за 10-15 мин, значит они не те, кем прикидываются
0
|
|||||
| 24.06.2026, 19:58 | ||||||||||||||||||||||
Пожуем только одну упомянутую Вами "фишку" - думаю ее вполне достаточно чтобы закрыть баловство с отладчиком. Как НЕ НАДО делать
Можно ли это сломать? Конечно да, подменить одну из либ Qt, навесить фильтр и отследить все события (может даже сигналы) и.т.д. Но.. это совсем не то что слегка полазить в отладчике, заниматься этим любитель не будет. А будет - усилим ("у нас ножичков на всех хватит" )
0
|
||||||||||||||||||||||
|
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,362
|
|
| 24.06.2026, 20:53 | |
|
Ну, мою прогу взломаете?
0
|
|
|
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,362
|
|
| 24.06.2026, 21:12 | |
|
Ексешник:
0
|
|
|
6770 / 3135 / 1065
Регистрация: 01.06.2021
Сообщений: 12,172
|
||
| 24.06.2026, 22:44 [ТС] | ||
|
0
|
||
|
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
|
||||
| 24.06.2026, 23:30 | ||||
|
0
|
||||
|
6770 / 3135 / 1065
Регистрация: 01.06.2021
Сообщений: 12,172
|
||
| 24.06.2026, 23:59 [ТС] | ||
|
0
|
||
|
6770 / 3135 / 1065
Регистрация: 01.06.2021
Сообщений: 12,172
|
||
| 25.06.2026, 13:18 [ТС] | ||
|
сразу видно, что пароль сравнивается с хешем 12ED15FEABB873897DA403D84207398. В связи с этим у меня вопрос: действительно ли пароль находится в бинарнике или там только его хеш? В последнем случае - создай отдельную тему "Найдите исходное значение по его хешу", но уверен, что никто не станет тратить время на такое идиотское задание.И объясни, что за крестики в качестве пароля на скриншоте? Не похожи на цифры...
0
|
||
|
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
|
||
| 25.06.2026, 16:21 | ||
![]() Ну за 2 минуты если, то вот: 0x12F3: 74 58 -> 90 90 Формируется нечто похожее на CRC, но с таблицей псевдослучайных чисел.
0
|
||
|
6770 / 3135 / 1065
Регистрация: 01.06.2021
Сообщений: 12,172
|
||
| 25.06.2026, 17:44 [ТС] | ||
|
0x00401ef3 74 -> 75 (т.е. je/jz поменял на jne/jnz) Но по тому же способу можно и все остальные крякми решить из этой темы
0
|
||
|
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
|
|
| 25.06.2026, 17:51 | |
|
0
|
|
|
6770 / 3135 / 1065
Регистрация: 01.06.2021
Сообщений: 12,172
|
|||
| 25.06.2026, 17:56 [ТС] | |||
|
Добавлено через 2 минуты 0111 0100 (74) 0111 0101 (75) весь механизм защиты на одном бите держится ![]() хотя, правильнее говорить, что изменили 1 байт (каждая из вышеперечисленных инструкций занимает именно байт).
0
|
|||
|
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
|
||
| 25.06.2026, 18:19 | ||
|
0
|
||
| 25.06.2026, 19:35 | ||
|
К тому же не раз видел такую штучку: на входе что-то типа strcmp выше, ну точно лох делал. Приложение запускается (вроде сломано), начинает что-то делать, и тут хирак - еще проверка, но уже без всяких месяг, калечит данные.
0
|
||
|
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
|
|||
| 25.06.2026, 19:58 | |||
|
Чтение строки из буфера контрола в буфер приложения отловить всё равно можно. Можно, конечно, написать свою реализацию метода контрола, где после API ОС сразу модифицировать введенное и отдавать уже его, вплоть до использования системных вызовов напрямую. Но это не шибко усложнит задачу исследователю, но разработчику вполне. Бывает, что вообще хукают нажатия клавиш, когда курсор в поле. И сразу же ксорят во внутренний буфер или сразу несколько. Тогда буфер контрола вообще не трогают, или используют как ханипотный путь. Я не сильно вникал в кишки Qt, чтобы дать конкретный рецепт. Опять же - НЕ ХРАНИТЬ флаг "всё ок" нигде. Так как просто этот флаг тогда и заменят (снова spoc). Лучшим вариантом, как я уже неоднократно писал - дешифровывать высчитанным из ключа ключом данные - лучше. Там просто непонятно на месте, всё ли ок.
0
|
|||
|
6770 / 3135 / 1065
Регистрация: 01.06.2021
Сообщений: 12,172
|
||
| 25.06.2026, 20:51 [ТС] | ||
|
Вообще динамическую линковку для Qt, wxWidgets и похожих библиотек не советую, поскольку исполняемый файл будет содержать таблицу импорта с именами необходимых функций. Учитывая это, всякие статические анализаторы очень качественно всё декомпилируют, в том числе, используя FLIRT и пр. Лучше всего использовать статическую линковку со strip и с полным вырезанием всей отладочный инфы. Например, в программе на wxWidgets со статической линковкой анализатор в таблице импорта лишь покажет имена функций WinAPI, но не самой библиотеки wxWidgets. Бесплатная опенсорсная лицензия не позволяет статическую линковку. К тому же, насчет Qt я вообще не уверен. Возможно, FLIRT способен даже в случае статической линковки Qt восстановить имена функций. Но вот wxWidgets точно не может.
0
|
||
|
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
|
|||
| 25.06.2026, 21:33 | |||
|
Но в целом, да - стрип-статика заставит исследователя потратить больше времени на анализ.
0
|
|||
|
6770 / 3135 / 1065
Регистрация: 01.06.2021
Сообщений: 12,172
|
|
| 25.06.2026, 21:50 [ТС] | |
|
WhiteP, ну, например, IDA не способна восстанавливать имена функций, да и сами функции в таком виде, в котором они были, для статик приложений на wxWidgets. IDA показывает всё в виде WinAPI функций - тех самых, которые под капотом используются в wxWidgets на винде (wxMSW). Это усложняет анализ кода. Результат декомпиляции выглядит запутаннее, чем даже когда изначально приложение пишется на чистом WinAPI. Например, IDA может показать, будто используется сотни функций из WinAPI, хотя ты разумеется использовал всего десяток функций из wxWidgets. В импортах вообще ни одного упоминания про wxWidgets, только нативные виндовые функции.
А вот я открыл приложение на Qt динамик - результат декомпиляции прям очень похож на исходный код, все имена на месте, сами функции тоже выглядят так, как в исходном сорце. Имхо, логику такого приложения очень легко можно понять.
0
|
|
| 25.06.2026, 21:50 | |
|
Реверс слов в строке
Реверс элементов массива реверс строки Реверс масива по строках. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|