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

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

18.06.2026, 13:19. Показов 29842. Ответов 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.

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

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

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

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

279
 Аватар для Наталья8
640 / 404 / 68
Регистрация: 09.03.2016
Сообщений: 4,425
23.06.2026, 13:22
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Royal_X Посмотреть сообщение
я так понимаю, что тема особо не залетела,
Возни много. Пользы ноль.
Что ты такого собрался сделать в этой сфере что бы принести пользу миру.
Хоть самому себе.
Люди написавшие приложение герои, а ты, и ещё толпа тебе подобных, как бы уровнем пониже.

Добавлено через 5 минут
Если я обучившись по книжкам этой всей грамоте,
и следуя вашим советам, напишу себе защиту,
ни кому не составит труда её легко убрать.
Зачем работать?.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
23.06.2026, 13:24  [ТС]
Цитата Сообщение от Наталья8 Посмотреть сообщение
Что ты такого собрался сделать в этой сфере что бы принести пользу миру.
Хоть самому себе.
Всегда хотел понимать ассемблер хотя бы на уровне любителя-хоббиста. Но никогда не имел желания, да и не было необходимости, писать приложения на ассемблере.
Так что, это просто альтернативный способ изучить ассемблер в более интересной манере.

Цитата Сообщение от Наталья8 Посмотреть сообщение
Если я обучившись по книжкам этой всей грамоте,
и следуя вашим советам, напишу себе защиту,
ни кому не составит труда её легко убрать.
Зачем мучиться.
Задроты, которые пишут книги, специально убивают будущих экспертов в зародыше. Они пишут много воды и специально пропускают самые важные нюансы. Наверное, не хотят иметь конкурентов.
Сейчас же в эпоху ИИ ни эти задроты, ни их книги не нужны. Если что-то не понимаешь, то ИИ так чётко распишет с примерами, что даже умственно отсталый чел всё сразу поймет.
0
 Аватар для sporta1982
216 / 64 / 7
Регистрация: 05.10.2023
Сообщений: 565
23.06.2026, 13:28
Цитата Сообщение от sporta1982 Посмотреть сообщение
трюк Heaven's Gate.
расскажите про это , многие меня упрекают что в своей манере пишу и требую от кого-то что-то...

Я думаю многим будет интересно...
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
23.06.2026, 13:38  [ТС]
Цитата Сообщение от sporta1982 Посмотреть сообщение
расскажите про это
полагаю, что ИИ лучше расскажет

короче, я сам ничего не подозревал вчера. Открываю IDA Pro, а там какой-то красный JUMPOUT. Уже подозревал что-то неладное, но пока еще не знал, что такое. Автор крякми объяснил, что просто IDA типа не смогла правильно декомпилировать.
Когда там в коде в регистре AL оказалось магическое число 0x33, то решил дальше поисследовать, что там оно делает.
Я еще до того, как нашел пароль, начал подозревать в анти-отладочном механизме https://www.cyberforum.ru/cpp-... st17747837

Оказалось, что 0x33 с формированием пароля не имеет никакого отношения.

Манипулируя регистром CS через дальний прыжок можно прыгать между режимами.
сегментный регистр CS =0x23 процессор в 32-битном режиме
сегментный регистр CS = 0x33 процессор в 64-битном режиме

И это магическое число 0x33 как раз было для перехода в 64-битный режим.

А прикол был в том, что приложение было 32-битным и оно запускалось только в x32dbg, но с 32-битного отладчика толку не было. Естественно, нужно было запускать 64-битный отладчик. Но x64dbg, очевидно, не работает с 32-битными приложениями. Хз, возможно, есть плагины, с помощью которых он будет работать. Но чистый x64dbg отказывался запускать этот крякми.
Наверное, трюк Heaven's Gate был использован, чтобы не использовать x64dbg.

***
Я не стал тратить время на анти-анти-отладочные методы, просто взял другой отладчик.
Пароль я потом вытащил из регистра R8, который есть только в 64-битном режиме. См. https://learn.microsoft.com/ru... #registers

Если кто-то хочет повторить мое решение, то подсказываю, что я ставил брекпойнт на 0x401445

- запускаешь приложение
- вводишь любой мусорный пароль
- тормозишь на 0x401445
- смотришь в регистр R8

Т.е. крякми взламывается одним брекпойнтом.

С этой задачей справляются многие отладчики, но лично я предпочитаю WinDbg. В IDA Pro можно его тоже выбрать, он есть там в списке. И, кстати, если выбрать этот отладчик, то пароль можно найти и в IDA. Однако, я предпочитаю саму программу WinDbg из Microsoft Store.
На первый взгляд, покажется, что фич/кнопочек у него мало, но там его мощь проявляется, когда работаешь с консолью. Это очень крутой отладчик, который в отличие от остальных поддерживает даже режим ядра.
Например, в WinDbg, hardware-брекпойнт типа execute с размером 1 ставится командой:
Code
1
ba e1 0x401445
Поскольку значение регистра R8 будет в hex, то чтобы увидеть в десятичном формате (собственно, пароль, который нужно ввести), вместо r r8 пишем:
Code
1
? @r8
это выведет
Code
1
Evaluate expression: 8940623657875707603 = 7c1379d8`ee2296d3
либо можно вывести во всех форматах, в том числе, десятичном
Code
1
.formats @r8
что выведет
Code
1
2
3
4
5
6
7
8
9
10
Evaluate expression:
  Hex:     7c1379d8`ee2296d3
  Decimal: 8940623657875707603
  Decimal (unsigned) : 8940623657875707603
  Octal:   0760233635435610513323
  Binary:  01111100 00010011 01111001 11011000 11101110 00100010 10010110 11010011
  Chars:   |.y.."..
  Time:    Sat Sep 17 03:09:47.570 29932 (UTC + 2:00)
  Float:   low -1.25797e+028 high 3.06296e+036
  Double:  4.74499e+289
0
 Аватар для sporta1982
216 / 64 / 7
Регистрация: 05.10.2023
Сообщений: 565
23.06.2026, 14:13
сейчас бы сейчас специалиста по расширенному режиму процессору x86 он бы вы дюлей вставил, но я так мимо проходил...
какой еще CS...
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
23.06.2026, 14:14  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
в WinDbg, hardware-брекпойнт типа execute с размером 1 ставится командой
я тут не намеренно усложняю вещи, а в WinDbg действительно нужно делать это через консоль. Тыканьем по интерфейсу можно лишь установить software брекпойнт. Однако, WinDbg поддерживает большое количество разнообразных брекпойнтов с самыми разными параметрами. Но они устанавливаются через команды в консоли.
0
 Аватар для sporta1982
216 / 64 / 7
Регистрация: 05.10.2023
Сообщений: 565
23.06.2026, 14:31
это user mode)) какой нахер cs
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
23.06.2026, 14:36  [ТС]
sporta1982, хочешь сказать, что в user mode (ring 3) нет cs?
0
 Аватар для sporta1982
216 / 64 / 7
Регистрация: 05.10.2023
Сообщений: 565
23.06.2026, 14:39
либо я чего то не знаю , как так то

Добавлено через 2 минуты
ну я не знаю может за 20 лет чего то изменилось...
0
Software Engineer
 Аватар для Custos
338 / 343 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
23.06.2026, 14:42
Цитата Сообщение от sporta1982 Посмотреть сообщение
вы же syscall используете...
Все вызовы API для взаимодействия с ОС в конечном итоге заканчиваются системным вызовом.
Здесь нюанс немного в другом - каким путем вы к этому syscall придете: ntdll manual mapping, direct syscall по зашитым SSN таблицам под каждую версию винды, direct syscall с парсингом SSN из текущей системной ntdll, и так далее. Все ограничивается лишь больной фантазией того, кто это будет реализовывать.

Цитата Сообщение от sporta1982 Посмотреть сообщение
ну и в принципе если бы нашелся вдохновенный человек кто то мог бы написать блог , о том что можно написать приложение с использованием того же syscall
Куча материала по этой теме, нужно лишь поискать. Можете еще поискать материалы по разбору VMProtect, автор этого протектора очень любит абузить direct syscall.

Цитата Сообщение от Royal_X Посмотреть сообщение
С этой задачей справляются многие отладчики, но лично я предпочитаю WinDbg.
Не справляются. На сегодняшний день WinDbg - единственный отладчик, который может нормально отлаживать такой код, который переключается между разными режимами.
Фактически этот CrackMe был рассчитан на то, чтобы подловить тех, кто привык использовать популярные инструменты типа x64dbg/etc , для которых полно разных anti-anti-debug плагинов для обмана anti-debug детектов, и т.д.
Добавив anti-debug трюки можно сломать WinDbg, но так как это базовый CrackMe, то я не стал это делать
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
23.06.2026, 14:43  [ТС]
sporta1982, я ж это всё узнал вчера. Как я понял, cs используется и в 64-битном режиме user mode. Но, возможно, я не так понял.
Я читал в инете статьи про Heaven's Gate, там было про cs и селекторы режимов. Но я не утверждаю, что прав.
0
 Аватар для sporta1982
216 / 64 / 7
Регистрация: 05.10.2023
Сообщений: 565
23.06.2026, 14:44
каждое приложение в windows работает в своем пространстве, мультизадачность и так далее ... у вас есть 64 бит процессор ... так и рассчитывайте 2^64 бит.
0
Software Engineer
 Аватар для Custos
338 / 343 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
23.06.2026, 14:53
Цитата Сообщение от Royal_X Посмотреть сообщение
Я читал в инете статьи про Heaven's Gate, там было про cs и селекторы режимов.
Рекомендую почитать в целом о WoW64. Можно начать с этой статьи https://wbenny.github.io/2018/... rnals.html
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
23.06.2026, 14:56  [ТС]
Цитата Сообщение от Custos Посмотреть сообщение
Не справляются. На сегодняшний день WinDbg - единственный отладчик, который может нормально отлаживать такой код, который переключается между разными режимами.
нативный отладчик Rizin тоже умеет, я вчера проверял
0
 Аватар для sporta1982
216 / 64 / 7
Регистрация: 05.10.2023
Сообщений: 565
23.06.2026, 14:57
Цитата Сообщение от Custos Посмотреть сообщение
Рекомендую почитать в целом о WoW64. Можно начать с этой статьи https://wbenny.github.io/2018/... rnals.html
во уже лучше
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
23.06.2026, 15:02  [ТС]
Цитата Сообщение от Custos Посмотреть сообщение
Рекомендую почитать в целом о WoW64
так о коротко не могли бы вы сейчас ответить про cs и утверждения sporta1982?

Добавлено через 3 минуты
Цитата Сообщение от sporta1982 Посмотреть сообщение
во уже лучше
что лучше? когда что-то знаешь, то уверенно про это можешь говорить. Но что за выпады типа
Цитата Сообщение от sporta1982 Посмотреть сообщение
какой нахер cs
если сам не уверен в своей правоте и пишешь потом, что может ты это и не знаешь, 20 лет прошло

Мне как начинающему нужна только истина, поэтому если не уверен, то лучше промолчи.

из статьи по ссылке Custos

x86 on x64
Entering 32-bit mode

jmp fword ptr[reg] - a “far jump” that not only changes instruction pointer (RIP), but also the code segment register (CS). This segment usually being set to 0x23, while 64-bit code segment is 0x33
Far jump is used most of the time for the transition, mainly because it’s faster. iret on the other hand is more powerful, as it can change CS, SS, EFLAGS, RSP and RIP all at once.
0
Software Engineer
 Аватар для Custos
338 / 343 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
23.06.2026, 15:06
Цитата Сообщение от Royal_X Посмотреть сообщение
так о коротко не могли бы вы сейчас ответить про cs и утверждения sporta1982?
В современном Windows user mode он почти не используется для "адресации сегмента кода" в старом DOS-смысле. Его главная роль - хранить селектор кодового сегмента, через который процессор понимает:
- В каком privilege level выполняется код (user mode / ring 3 или kernel mode / ring 0)
- Какой тип кода сейчас исполняется (32-bit compatibility code или 64-bit long-mode code)
- Какие проверки защиты применяются при control transfer (jmp far, call far, iret, exception return, syscall/sysret-переходы и т.д)
0
 Аватар для sporta1982
216 / 64 / 7
Регистрация: 05.10.2023
Сообщений: 565
23.06.2026, 15:06
господе вы идею windows знаете? каждый процесс работает в своем адресном пространстве. ну что ерундой то заниматься.
Почитайте про защищённый режим , который появился в процессоре x386. Я здесь неуверенно себя чувствую потому что я в математике ни хрена не понимаю, да и глядя на ваш статус. Да и самооценка у меня так себе....
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3136 / 1065
Регистрация: 01.06.2021
Сообщений: 12,173
23.06.2026, 15:07  [ТС]
Цитата Сообщение от Custos Посмотреть сообщение
Его главная роль - хранить селектор кодового сегмента
а я разве не про это писал? я cs упоминал в контексте хранения селекторов

Цитата Сообщение от Royal_X Посмотреть сообщение
Я читал в инете статьи про Heaven's Gate, там было про cs и селекторы режимов.
и опять же, повторюсь, что читал про это в какой-то статье буквально вчера. Ну всякое могло быть, например, я мог не так понять и т.д.

Но если и вы подтверждаете мои слова, то не понимаю выпадов эксперта sporta1982
0
Software Engineer
 Аватар для Custos
338 / 343 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
23.06.2026, 15:11
Цитата Сообщение от Royal_X Посмотреть сообщение
а я разве не про это писал? я cs упоминал в контексте хранения селекторов
Это скорее развернутый ответ для sporta1982 на его вопрос
Цитата Сообщение от sporta1982 Посмотреть сообщение
это user mode)) какой нахер cs
Добавлено через 1 минуту
Цитата Сообщение от Royal_X Посмотреть сообщение
Но если и вы подтверждаете мои слова, то не понимаю выпадов эксперта sporta1982
Учитывая, что он первый раз узнал о существовании WoW64 из этого сообщения, то тут возникают вопросики о его "экспертности"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.06.2026, 15:11

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
Часы с термометром и праздничным календарем
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. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru