|
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
|
|
Crackme: реверс-инжиниринг18.06.2026, 13:19. Показов 29868. Ответов 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
Ошибка приложения в простом коде, реверс строки Функция и реверс строки |
|
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
|
|||
| 25.06.2026, 21:58 | |||
|
0
|
|||
|
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
|
|||
| 25.06.2026, 22:39 [ТС] | |||
|
Соответственно, этот FLIRT распознает как функции WinAPI, а не wxWidgets. конечно, если использовать wxWidgets динамик, то там имена будут в таблице импорта. WhiteP, в любом случае, я лишь хотел сказать, что обсуждение написания какого-то приложения на Qt, реверс которого подразумевается, что будет затруднен, довольно глупо, с учетом, что бесплатная версия разрешает только динамическую линковку, а там все функции как на ладони. Если нужно написать приложение с более-менее норм. защитой, то либо нужно делать как Custos - писать аналоги WinAPI функций, либо брать такой фреймворк, который плохо анализируется.
0
|
|||
|
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
|
|||||
| 25.06.2026, 22:48 | |||||
|
0
|
|||||
|
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
|
|||
| 25.06.2026, 23:07 [ТС] | |||
|
К тому же, библа очень популярна и в центре внимания всяких программ, типа IDA. Так что, анализ Qt приложений все равно проще, чем приложений на менее популярных либах. Как оно будет на практике - неизвестно. Никогда не использовал эти инструменты, в том числе sigmake.
0
|
|||
|
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,362
|
|||||||||
| 25.06.2026, 23:45 | |||||||||
|
Добавлено через 13 минут
0
|
|||||||||
|
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
|
|||
| 26.06.2026, 00:09 [ТС] | |||
|
Ну а менять опкод, чтобы вывести текст - это настолько банальная задача, что мне даже в голову не пришло, что ты мог ради этого написать целое приложение и потом попросить, чтобы другие его "взломали" таким образом. Добавлено через 4 минуты QCryptographicHash, который поддерживает более двух десятков алгоритмов вычисления хеш-суммы.Ну или на крайний использовать std::hash<std::basic_string>
0
|
|||
|
Software Engineer
338 / 343 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
|
||
| 26.06.2026, 00:42 | ||
|
Подход имеет свои ограничения и недостатки, которые в основном касаются цикла разработки и поддержки. Но результат того стоит. Даже не самые лучшие реализации этого подхода доставляют крякерам достаточно много боли и страданий. Для примера, система лицензирования 99% читов с большой аудиторией для популярных AAA игр построена именно на сесионных бинарниках.
0
|
||
|
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
|
||
| 26.06.2026, 01:07 [ТС] | ||
|
0
|
||
|
Software Engineer
338 / 343 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
|
||
| 26.06.2026, 01:16 | ||
|
Часть механизмов он так и не разобрал. Также особенность при кряке этой системы лицензирования - ты никогда не знаешь все ли ты пропатчил. Там в "уголку" мог затаится какой-то функционал, который вызывается, условно, раз в месяц. Проблема похоже на ту, которая возникала при кряке софта накрытого ныне почившим протектором Armadillo с наномитами. Кряк может запускаться, но через пару минут/часов падать, соответственно нормально пользоваться таким софтом не получится (особенно если это игра или рабочий софт). Также кряк не обязан падать. Если, к примеру, это какой-то сложный рабочий софт, он может не падать, а просто начать делать неправильные вычисления. И ты попробуй это проверить и отличить какие какие из констант завязаны на сесионные данные, а какие относятся к предметной области. И там еще огромное полотно таких пунктиков. С возрастанием сложности защищаемого приложения сложность отлома растет фактически в геометрической прогрессии, особенно если ты защищаешь любой софт, предметная область которого связана с огромным количеством критически важных вычислений.
0
|
||
|
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
|
||
| 26.06.2026, 01:31 [ТС] | ||
Но то, что испортили все мультиплеерные игры, это факт. Одни создают читы, другие взламывают читы, третьи используют читы.
0
|
||
|
Software Engineer
338 / 343 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
|
|||
| 26.06.2026, 01:42 | |||
|
Проблема в том, что такие игры постоянно обновляются и читы обновляются вслед за ними. Пока ты за пару недель доломаешь даже самый криво защищенный чит, игра успеет получить пару обновлений и твой кряк чита станет неактуальным. В лучшем случае он просто не будет работать. В худшем - кроме того, что чит не работает, дак ты еще и успеешь отлететь в бан в игре, так как старый чит уже начал обнаруживаться античитом игры. Поэтому коммерческий смысл в этом околонулевой. Добавлено через 5 минут Любой детект попыток дебажить лоадер - ты лишаешься лицензии на софт и на этом твои попытки кряка заканчиваются. Если, конечно, у крякера не бездонный кошелек, чтобы покупать новую лицензию при каждой своей ошибке. Это, кстати, один из важных пунктов, почему стал возможен кряк читов из тех постов, что я кидал. Там не банили лицензию за попытки дебага.
0
|
|||
|
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
|
|
| 26.06.2026, 01:54 [ТС] | |
|
Custos, а что думаешь о читах, которые не вмешиваются в саму игру? Имею в виду программы, которые берут управление курсором, кнопками мыши и пр. на себя. Их же античит не сможет выявить.
Например, программа, которая анализирует картинку в игре, находит там врагов и направляет прицел на них и стреляет. Мне кажется, современные ПК способны быстро анализировать игровые кадры, чтобы распознавать врагов
0
|
|
|
Software Engineer
338 / 343 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
|
||
| 26.06.2026, 02:04 | ||
|
Но даже с таким борются, хоть и с переменным успехом. Как пример из недавнего - https://x.com/riotgames/status/2057604027941302564
0
|
||
|
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,362
|
||
| 26.06.2026, 06:18 | ||
|
Конечно мои "хеши" похуже стандартных будут (хотя может и нет - на внешний вид случайный набор цифр, хорошо меняются при изменении одного байта в пароле) - но их вычисляется четыре, и вероятность что все четыре одновременно дадут коллизию с исходным паролем - на мой взгляд ничтожная. Что касается "bloated либы Qt" - я все программы пишу на ней. Не люблю консоли.
0
|
||
|
-617 / 60 / 2
Регистрация: 10.03.2025
Сообщений: 802
|
|
| 26.06.2026, 06:29 | |
|
Написали бы скрипт на ассемблере лучше для работы с памятью, например на моем слабом ноуте на кедах , периодически
виснет рабочий стол, даже при отсутствии запущенных приложений, мне нравятся кеды за функционал, но этот артефакт бесит просто...хотелось бы фундаментально разобраться в чем дело, вот на LXQt не виснет значит ядро Linux не причем, но винде 10 такого явления нет, значит дело все таки в принципах управления памятью на линуксе, а взламывать пароли конечно прикольно, но эта проблема более интересна найти корень зла в управлении памяти. Щас модер спустит на меня Полкана...стопудофф! Помнится я WinBoard (это шахматная оболочка для запуска шахматных движков) запихивал в RAM для скорости и эта идея мне нравится, активное приложение уходит в RAM максимально, вытесняя все другие, кроме системных, обычно тормоза начинаются когда из 1,9 Гига ОЗУ занято 1,3 но это же моветон, а где еще 0,6, что то здесь не так, но мне не хватает теоретических знаний
0
|
|
|
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
|
||
| 26.06.2026, 09:37 [ТС] | ||
|
Добавлять еще сверху какой-то, например, SHA-256 не нужно! PBKDF2 внутри уже использует SHA-256 / SHA512 как псевдослучайную функцию и возвращает хеш. PBKDF2 из пароля может сгенерировать ключ, например, на 32 байта (256 бит), в виде hex-строки это 64 символа. Длина выходного ключа не зависит от выбора HMAC-функции. Т.е. даже если выберешь PBKDF2 HMAC-SHA512, то без проблем можешь сгенерировать свой 32-байтный ключ. На вход PBKDF2 получает следующие аргументы: - твой пароль, который может быть какой угодно длины. Допустим, "1234_4231" - рандомная соль, например, на 16 байт - целое число, определяющее количество итераций. Как минимум, 100 тыс. Но в 2026 году, имхо, нужно 300 - 500 тыс. итераций, что соответствует 300-500 мс на современных устройствах. - длина выходного ключа - можно указать любую длину, но обычно используют 16, 24 или 32 байта, что соответствует AES-128, AES-192, AES-256. Упоминаю разновидности AES, поскольку чаще всего PBKDF2 используют для последующей работы с AES. В таком случае, даже при использовании простого пароля, твой хеш не найдется в таблицах в интернете, поскольку была использована соль. Мощь PBKDF2 еще в том, что не позволяет перебирать пароли, поскольку данный алгоритм намеренно замедляет вычисление: чем больше итераций, тем больше времени нужно на одну проверку. *** А чтобы крякеры не обошли проверку пароля, то вместо "Password OK!", сделал бы иначе. Сгенерированный результат PBKDF2 служил бы в качестве ключа для AES. Например, если был использован PBKDF2 для получения 32-байтного ключа из пароля, то потом этот же ключ отправил бы в AES-256, который должен расшифровать сообщение при успешном сценарии. В таком случае, - даже самый банальный пароль типа "1234_4231" сложно было бы взломать. По моим меркам, даже на RTX 5090 будет где-то 30к проверок в секунду при использовании PBKDF2 с 500к итерациями. Даже если бы ты прямо сказал, что пароль состоит только из цифр и нижнего подчеркивания, то это 6 суток. Но вот если брутфорсили бы по ASCII-символам, то 950 000 лет. - никакие таблицы хешей в интернете не помогли бы крякерам. Однако, все же лучше не использовать осмысленный или популярный пароль, чтобы предотвратить взлом по словарю. - обойти проверку пароля невозможно. Вернее, проверку убрать можно, но все равно крякер не получит сообщение, ибо не сможет его расшифровать.
0
|
||
| 27.06.2026, 00:50 | ||||||||||
Не по теме: Интересная задачка: "закодировать" строку так чтобы не сработал останов отладчика по чтению памяти :) Должны быть наработанные решения, подскажите
0
|
||||||||||
|
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,362
|
||
| 27.06.2026, 05:58 | ||
|
0
|
||
|
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
|
|
| 27.06.2026, 08:41 [ТС] | |
|
Igor3D, wxWidgets имеет хорошую лицензию и разрешает статическую линковку. Данная библиотека тоже кроссплатформенная. В wxWidgets есть аналог сигналов/слотов - события и обработчики событий.
0
|
|
|
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
|
||||||
| 27.06.2026, 10:31 [ТС] | ||||||
|
Igor3D, ты вот так хотел (приложение во вложении)?
Делал точно по твоему псевдокоду. Использовал события как аналог системы сигналов/слотов. Вывод символов и текста "Password submitted" сделано лишь для показа работы, но в реальном приложении это делать не нужно. wxWidgets / статическая линковка
0
|
||||||
| 27.06.2026, 10:31 | |
|
Реверс слов в строке
Реверс элементов массива реверс строки Реверс масива по строках. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы с термометром и праздничным календарем
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. А теперь человек произносит «мастдай» с усмешкой - и. . .
|