|
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
|
|
Crackme: реверс-инжиниринг18.06.2026, 13:19. Показов 23379. Ответов 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. *** Короче, если вам скучно и не знаете, чем заняться, то можете поиграться с этими файлами и ознакомиться с основами реверс-инжиниринга.
0
|
|
| 18.06.2026, 13:19 | |
|
Ответы с готовыми решениями:
278
Ошибка приложения в простом коде, реверс строки Функция и реверс строки |
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
|
|
| 22.06.2026, 11:58 | |
|
https://xakep.ru/2016/12/08/re... ial-part1/
https://vk.com/wall-3183750_261199 Здесь дают... Догоняют и ещё добавляют... И WinApi знать для этого, тоже неплохо бы.
0
|
|
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
|
|
| 22.06.2026, 12:18 | |
|
Вообшем снова основы доучивать. Которые кто то не доучил. Толково. И для си, тоже не лишнее будет. Здесь делаеться упор си --> ассемблер...
0
|
|
|
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
|
||||||
| 22.06.2026, 12:20 [ТС] | ||||||
|
Наталья8, книги не мое. Никогда не любил читать такие учебники. Например, С++ я изучал по простому самоучителю https://www.learncpp.com/, а потом просто смотрел в https://en.cppreference.com/.
То же самое с этими ассемблерными инструкциями. Если чёт не понимаю, смотрю в справочник, а не в книгу. Бесит эта "вода" в книгах. Например, в x64dbg cделали очень удобно. Можно нажать Ctrl+F1 или через контекстное меню выбрать "Help on mnemonic" и во вкладке Log про данную инструкцию выведется текст с очень подробным объяснением, для чего она, как использовать и пр. В офиц. справочнике Intel даже не так подробно. Например, я нажал на SBB, зацените, как всё чётко расписано. В какой книге один лишь SBB опишут на 231 строку? Тут не только примеры опкодов и их значение, описание, но и исключения, флаги, на которые влияет, аналоги интринсиков для Intel C/C++ компилятора. Кликните здесь для просмотра всего текста
0
|
||||||
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
|
|
| 22.06.2026, 12:28 | |
|
Да ничего. Толково написано и перевод хороший.
Я особо не вникал, но читаеться хорошо.
0
|
|
|
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
|
||
| 22.06.2026, 12:32 [ТС] | ||
|
0
|
||
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
|
|
| 22.06.2026, 12:46 | |
![]() Однозначно это как то вот так. Мораль - если трудно вьехать в код на си, то на ассемблере то же самое, вообще все волосья выщиплешь однако.
0
|
|
|
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
|
||||||||||||||||||||||
| 22.06.2026, 15:26 [ТС] | ||||||||||||||||||||||
|
У C++ ниже порог для начала работы, но гораздо выше общая сложность освоения. Ниже ответ ИИ: Полезно разделять два понятия: Порог вхождения — насколько трудно начать писать работающие программы. Внутренняя сложность языка и экосистемы — сколько концепций нужно освоить для уверенного владения. Если смотреть на порог вхождения: У ассемблера он действительно высокий. Чтобы сделать даже простую программу, нужно понимать регистры, память, соглашения о вызовах, инструкции процессора, иногда устройство ОС и компоновку программы. На C++ можно написать Hello, World! или простую консольную программу, почти не понимая, как работает процессор. В этом смысле ассемблер сложнее для старта. Но если смотреть на общую сложность языка: Ассемблер очень маленький. Инструкций конечное число, правила обычно довольно простые. C++ содержит огромный набор возможностей: шаблоны, метапрограммирование, перегрузку операторов, множественное наследование, RAII, move-семантику, лямбды, корутины, концепты, модель памяти многопоточности и многое другое. В этом смысле C++ значительно сложнее ассемблера как язык программирования. Однако есть важная оговорка. Иногда говорят: «Ассемблер простой, а C++ сложный». Это верно только для языка как формальной системы. Но реальные задачи на ассемблере часто оказываются очень трудными, потому что сложность переносится из языка в голову программиста. То, что в C++ скрыто за абстракциями, в ассемблере приходится контролировать вручную. *** Выводы:
Добавлено через 2 часа 22 минуты Кстати, даже самый банальный велосипед может усложнить работу в IDA Pro Например, если написать вот так строку "anubis", то поиск по строке в IDA Pro ничего не даст
В IDA Pro псевдокод главной функции будет выглядеть так (при компиляции MSVC)
Я не утверждаю, что написание строки таким образом это прям супер защита. Ведь, разумеется, в рантайме отладчик на блюдечке выведет всю строку. Но всё-таки немного усложняет реверс, тем более, что такое написание строки в коде С++ не требует сложных действий. *** Просто заметил, что во всяких туториалов по крякми люди сразу же выполняют поиск всех строк, чтобы быстро перейти в нужное место. Что мешает разрабам таких крякми немного усложнить задачу?
0
|
||||||||||||||||||||||
|
Software Engineer
338 / 342 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
|
||
| 22.06.2026, 16:07 | ||
![]() https://github.com/JustasMasiulis/xorstr
0
|
||
|
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
|
|
| 22.06.2026, 16:16 [ТС] | |
|
Custos, не, ты меня не понял. Таких готовых библиотек можно найти тысячи, причем разного уровня сложности.
Но для крякми обычно такое не используют, потому что, как я уже писал выше, цель крякми это посредством развлечений изучать основы реверса. Если же посредством готовых библиотек создать крякми, то никто не станет такое взламывать. А вот то, что я предлагал выше, это просто пример того, как посредством простейших действий можно немного усложнить реверс. Я же специально не упоминал сложные методы сокрытия строк. Готовые библиотеки есть смысл использовать, когда ты уже на практике разрабатываешь что-то серьезное. А мне вот интересны простейшие трюки, как вот я привел со строкой, которые не требуют ни готовых библиотек, ни сложных вычислений, но зато усложняют анализ в IDA Pro. Если знаешь еще такие штуки, то напиши. Но речь о самых простых трюках.
0
|
|
|
Software Engineer
338 / 342 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
|
||||
| 22.06.2026, 16:45 | ||||
|
В этом и суть CrackMe - развитие и улучшение скила реверса. Годами решать однотипные примитивные CrackMe - это не развитие, а пустая трата времени. Как вариант, вернись к моему CrackMe и попробуй сначала разобраться, к примеру, как именно сломаны xrefs, что мешает удобной навигации по коду в IDA. Я даже скриншот скидывал с исходником, где видно, что вызовы функций завернуты в call obfuscation макрос. Попробуй разобраться как именно это реализовано. Разве не интересно разбираться в чем-то новом?
0
|
||||
|
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
|
|||||
| 22.06.2026, 17:28 [ТС] | |||||
|
Например, я бы не стал взламывать сложное крякми, поскольку мне в этом случае даже немного обидно, что какой-то васька-нуб, который сам ноль в реверсе, взял готовую библиотеку и создал крякми, а я еще должен голову ломать над его взломом. Честно говоря, это напоминает ситуацию, когда на сайте chess.com или lichess.org наталкиваешься на читера, играющего с помощью шахматного движка. Нет никакого удовольствия от такой игры. Раз пошло на то, чтобы взламывать серьезные библиотеки, то перейду на взлом реального софта. Но мне еще рано о таком думать о взломе, например, Adobe Creative Cloud))) насколько мне известно,Igor3D тоже не любит брать готовое и предпочитает всё писать самостоятельно. Вроде бы, он хотел крякми создать. Такой крякми будет интересно взламывать. Добавлено через 4 минуты кстати, последние уровни тренировочных игр из Cheat Engine более интересны, чем эти примитивные крякми, которые я находил в инете *** На всякий случай, я напоминаю, что тема называется "реверс-инжиниринг для начинающих". Обсуждение взлома сложных крякми на готовых библиотеках - это не для начинающих.
0
|
|||||
|
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
|
|
| 22.06.2026, 17:51 [ТС] | |
|
Custos, я когда-то делал такой крякми, сможешь взломать?
0
|
|
| 22.06.2026, 18:02 | |
|
Практическая ситуация
После того как юзер переведет бабульки, он получает код авторизации. Проданное приложение запрашивает его на старте пока он не получен, потом просто запускается. Вам поставлена задача написать проверку этого кода. Нюансы - кроссплатформенность - обязон - считаем что хороший случай - приложение с обильным UI (напр на Qt), весит сотни мегабайт, спрятать можно хоть слона - считаем что все понимают философию "щит и меч", никто не обвинит если Ваша защита будет взломана когда-нибудь. НО она не должна валяться ломаной на следующий день, не должна стать легкой добычей любителей что с упоением забивают jmp'ы (как в данной теме) - срок исполнения - макс 2 дня, отмазки типа "да я никогда этого не делал" кончатся плачевно. А если еще тыкаете коллегам, то результат ожидается через час, другой, словом - в тот же день (возможно с удовольствием )Ваши действия ?
0
|
|
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
|
|||
| 22.06.2026, 18:26 | |||
|
Добавлено через 1 минуту
0
|
|||
|
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
|
|
| 22.06.2026, 18:47 [ТС] | |
|
Igor3D, грубо говоря, нужно создать приложение, которое запрашивает код, если его не ввести, то оно не работает?
0
|
|
|
Software Engineer
338 / 342 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
|
||
| 22.06.2026, 19:05 | ||
|
Задание максимально облегченное, никакой защиты от отладки, никаких поломанных xrefs. Весь код проверки пароля находится в main функции.
0
|
||
|
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
|
|
| 22.06.2026, 19:06 [ТС] | |
|
0
|
|
|
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
|
|
| 22.06.2026, 19:49 | |
|
Сам Ильфак Гильфанов таки пришел к пониманию (скорее всего его отдел маркетинга, так как он сам (по слухам со старого cracklab от людей, что с ним общались) - непробиваем), что если долго максимально огораживать ПО и лупить цену, то придёт конкурент от Open Source, куда энтузиасты ринутся с большим желанием с целью допилить инструмент. Так и получилось, когда вышла Ghidra - сразу стали на каждом углу ломаную IDA раздавать и free версии выпускаться.
0
|
|
|
6315 / 3039 / 1054
Регистрация: 01.06.2021
Сообщений: 11,582
|
|||
| 22.06.2026, 20:13 [ТС] | |||
|
эксперты, которые пользуются IDA, обычно её не покупают, а это делают вместо них организации, в которых они работают. Почему? Потому что она дорогая. Эксперт-одиночка установит Ghidra, поскольку будет лохом, если потратит столько денег, когда есть бесплатный аналог. То, что написал выше, - это не моя фантазия, а мнение, которое сформировалось в ходе чтения комментов на разных форумах, где эксперты обсуждают RE софт.
0
|
|||
| 22.06.2026, 20:13 | |
|
Реверс слов в строке
Реверс элементов массива реверс строки Реверс масива по строках. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 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
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|