Это очень простая тема, но с ее помощью вы можете многому научиться.
В этой теме вы узнаете, как взломать вашу первую программу и как вы можете улучшить свои навыки взлома программного обеспечения.
Требования:
x64dbg
10 IQ
Это будет долгая беседа, так что купите себе попкорна и колы, и все будет в порядке.
Как я уже сказал, вы собираетесь взломать свою первую программу, программа называется «Взломай меня», программы взлома предназначены для взлома, поэтому у них нет системы безопасности.
Я сделаю туториал о том, как обойти разные системы безопасности в другом потоке.
А пока мы будем только взламывать крэк.
Настраивать
Чтобы начать наше путешествие, вам понадобится отладчик, в данном случае x64dbg.
Ссылка для скачивания:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Чтобы открыть его, просто разархивируйте, перейдите к выпуску и нажмите x96dbg.exe.
Далее вам понадобится crack me, есть много трещин, но для этого урока мы будем использовать
КАК ДЕЛАЮТ КРЯКИ ДЛЯ ИГР
ссылку для скачивания «Mexican Crackme» :
Пожалуйста, авторизуйтесь для просмотра ссылки.
Взлом, часть 1
Чтобы начать взламывать, вам нужно сейчас, что вы будете взламывать.
Итак, сначала вам нужно будет открыть программу, вам, вероятно, потребуется выключить антивирус, поскольку он определяет как ложное срабатывание.
Чтобы открыть программу, запустите cmd и перетащите на нее exe.
Вы увидите сообщение «Попробуйте усерднее».
Ваша цель — обойти это сообщение и сохранить флаг в программе.
Взлом, часть 2
Теперь, когда вы знаете, как работает программа и ваша цель, вы можете приступить к взлому.
Сначала вам нужно открыть кряк с помощью x64dbg, для этого просто перетащите Untitled1.exe в x96dbg.
Должно появиться окно с большим количеством информации, которую вы, возможно, не понимаете, я объясню вам это, но сначала
вам нужно будет настроить свой x64dbg, для этого перейдите в Параметры / Настройки и убедитесь, что ваши настройки выглядят следующим образом
Пожалуйста, авторизуйтесь для просмотра ссылки.
Взлом, часть 3
Теперь я могу объяснить вам, что такое «Странные символы». 1-адрес, он представляет, где расположены «команды». 2- Машинный язык, мы не будем рассматривать его в этом руководстве. 3-Ассемблер, это в основном переведенный машинный язык, поэтому теперь мы можем читать и понимать, что делает программа.
Основы языка ассемблера: jmp — jump je / jle — Jump if . mov — make register value = something. sub — вычесть значение из регистра. cmp — сравните 2 значения nop — код, который ничего не делает (действительно важен). В этом руководстве мы будем использовать только jmp, je / jle, nop и cmp. Сначала вам нужно будет нажать F9, чтобы вы могли перейти к точке входа.
Как взломать программу
1-адрес, он представляет, где расположены «команды».
2 — Машинный язык, мы не будем рассматривать его в этом уроке.
3 — Язык ассемблера, это в основном переведенный машинный язык, так что теперь мы можем читать и понимать, что делает программа.
Основы языка ассемблера:
jmp — прыжок
je/jle — Прыгать, если.
mov — сделать значение регистра = что-то.
sub — вычесть значение из регистра.
cmp — сравнение 2 значений
nop — код, который ничего не делает (действительно важно)
в этом уроке мы будем использовать только jmp, je/jle, nop и cmp.
Теперь вам нужно использовать то, что вы знаете о приложении, поэтому в основном все, что приложение делает, это говорит «Попробуй усерднее », а затем закрывается.
«Усерднее» — это строка, строки — это тип данных, представляющий текст, и в x64dbg вы можете искать строки, вы можете сделать это вручную или щелкнуть правой кнопкой мыши пустую область, выбрать поиск, текущий модуль, а затем ссылки на строки.
На этом экране вы увидите адрес, разборку и строковый блок. Не смотрите на другие блоки, а пока ищите строку «попробуйте сильнее» на правильном блоке строки.
Строка «попробуй сильнее », вероятно, будет на 5-й или 6-й строчке.
Найдя его, дважды щелкните по нему, и вы должны увидеть такой экран. Если вы поняли инструкции, которые я объяснил ранее, например, jle и cmp
Вы можете видеть, что программа сравнивает 2 значения, и если это правда, она перейдет к следующему
шагу : cmp dword ptr ss: [esp + 1C], C1
jle untitled1.401653
Этот скачок перейдет непосредственно к строке «Try Hard».
Теперь что-то, вероятно, щелкнуло у вас в голове, если не продолжать читать
Что вам нужно сделать, так это обойти инструкцию jle.
-Как мы можем сделать это ?
На самом деле это очень просто, у вас есть 2 варианта: превратить jle в nop или уравнять 2 сравниваемых значения.
Я выберу простое решение, превращу jle в nop, для этого выберите, нажмите на инструкцию jle и нажмите пробел.
Выберите параметр «Заполнить NOP» и введите «nop» в текстовое поле.
После этого нажмите esc, чтобы покинуть этот экран.
и вот так уже свою первую программу взломали
-Как ее протестировать?
Что вы сделаете дальше, так это установите точку останова на втором «nop», точка останова — это место, где программа остановится после того, как вы ее запустите.
чтобы установить точку останова, дважды щелкните вторую строку nop в блоке машинного языка: после установки нажмите F9. Теперь, когда вы находитесь в строке nop, дальше нужно запускать программу построчно, пока что-то не появится в консольном приложении. Для этого просто нажмите F8. Будет показан флаг программы. Захват флагов — основная цель кряка, и вы только что нашли это поздравление !!
Источник: yougame.biz
Как крякнуть любую программу
>Q:Какими
программками посоветуешь пользоваться?
A:Отладчики:
DOS: Soft-Ice, DeGlucker, CUP /d, TD(только для
начинающих),386(тоже),
Еще есть: AFDPro, GameTools, AxeHack, но это только для
частных случаев.
WIN: Soft-Ice, TD , встроенный в WDASM32 отладчик
Вьюеры/редакторы:
DOS/WIN: HiEW, BIEW, QVIEW
WIN:WDASM32
И самая рульная вещь — IDA. Это наикрутейший
дизасемблер со многими фичами и отлично
продуманной идеологией.
Унпакеры:
DOS:unp, cup386, unpack
WIN:procdump
>Q: Хм! Думаешь мне что нибудь говорят слова
`отладчик’, `унпакер’, `дизасемблер’.
A: Хм! Очень плохо
_Отладчики_(они же дебагеры) были придуманы для
поиска ошибок в программах.Но вскоре были
приспособлены хакерами для своих нужд. А вскоре
появились специальный хакерские
отладчики.Отладчики посволяют пройти программу
по шагам, останавливаться толко в определенных
местах программы и т.д. При этом хакер полностью
контролирует трассируемую(так называется
выполнение по шагам) программу. _Унпакеры_.
Производители программ часто упаковывают свои
программы(чтобы они занимали меньше места) или
криптуют(зашифровывают) их (чтобы хакеры или
конкуренты не могли взломать/посмотреть ее).
Первое и второе усложняет взлом. Чтобы
избавиться от проблем хорошие люди делают
унпакеры/ункрипторы, которые позволяют
распаковать/раскриптовать эти программы.
_Дизасемблер_ позволяет из исполняемого файла (com,
exe, . ) получить листинг этой программы на языке
ассемблера. Ассемблер это эквивалент машинного
кода, только записаный более-менее понятными
словами и обозначениями.
>Q:Что мне нужно знать для того чтобы стать
хакером?
A:Просто знать что-то конечно недостаточно, но вот
несколько советов:
Во-первых не обойтись без знания ассемблера.
Учить его можно по-разному. Сначала нужно
почитать книжки или доки по ассемблеру, вникнуть
в устройство компьютера (прерывания,организация
памяти,ввод/вывод на уровне портов). Неплохо
написать
несколько небольших программ на асме или хотя бы
посмотреть как это делают другие. Хорошо бы
выучить какой-нить язык высокого уровня. Лично
мне кажется что для
этого идеально подходит С. Ведь С некоторые даже
называют языком среднего уровня, т.к. он наиболее
близок к ассемблеру и одновременно обладает
огромной мощью.
Потом начинайте ломать всякие кракмисы. Они ведь
для этого и сделаны Переходите
к взлому программ. Вначале посмотрите примеры, а
затем ломайте сами. Учитесь пользоваться
различными программами. Например, IDA очень трудно
освоить одним наскоком, но сколько возможностей
она дает! Soft-Ice тоже имеет много фич которые вы
можете никогда и не узнать, но при их применении
жизнь может сильно облегчиться.
>Q:Полного знания паскаля хватит, чтобы
заниматься хакингом?
A: Повторюсь что ты должны знать в первую очередь
асм. Конечно, если ты знаешь паскаль очень хорошо,
то тебе его надолго хватит одного. Но в идеале
нужно знать _несколько_ языков.
Например: ASM, C, C++,PAS, Perl и т.д.
>Q:Вот ты говоришь что IDA крутая вешь? А для чего я
ее могу применять? Ясно конечно что для
дизасемблирования, но ты говорил про всякие
крутые фичи.
A: Самое простое: поиск ссылок на строки
регистрации. Например, программа пишет тебе на
экран «Unregistered». Ты ищещь эту строку в
программе, а затем ссылки на нее. Т.е. определяешь
в каких местах программы идет обращение к этой
строке. А где-то рядом будет проверка
пароля/рег.номера. Еще такая замечательная вещь.
IDA использует технологию FLIRT. При помощи нее можно
обнаруживать в программах
вызовы функций стандартных библиотек и вместо call
12345678h
ты увидишь: call _strcpy
А что делает strcpy ты уже должен знать Еще в IDA
есть встроенный язык, очень похожий на С. С
помощью него можно вытворять с программой что
угодно: например, расшифровать зашифрованную
часть программы.
>Q:Что такое Soft-Ice и как этой прогой
пользоваться?
A:Как было сказано вначале это отладчик. Кстати,
очень крутой отладчик. По фичности он опережает
всех. А насчет пользования, то софт-айз имеет кучу
команд, и нужно знать что какая из них делает. Об
этом можно прочитать в различных ФАКах о
софтайзе.
>Q:А если нету у меня такого ФАКа? Что делать?
A:Искать! Может быть в следующей версии этого ФАКа
я добавлю команды софтайза, но пока придется
довольствоваться командой `H’. Без
параметров она выдает список всех команд с
кратким описанием, а если в качестве параметра
указать название какой-нить команды софтайза, то
получишь немного более подробную справку.
>Q:Я уже приготовился ломать, но понял что не
знаю как запускать софтайз
A:Кстати если я теперь говорю про софтайз, то я
имею ввиду виндовую версию. Софтайз запускается
из режима эмуляции ДОСа по виндами. Нужно просто
запустить файл winice.exe. Когда загрузятся винды
запускаете Symbol Loader. А в нем в File->Open. Выбираете
ломаемую прогу и Module->Load.
>Q: Все о каких-то бряках говорят. Что это?
A: Бряк, брякпоинт, брекпоинт, breakpoint — точка
останова. Отладчики позволяют поставить бряк в
каком-нить месте программы и запустить ее. Когда
программа дойдет до этого места — она
остановиться и ты окажешься в дебагере, а там
делай чего хочешь.
>Q: Один мой друг хвастался что все программы
битхаком каким-то ломает. Что это такое?
A: Битхак (bithack) — это метод взлома при котором в
программе меняются несколько бит или байт.
Например если известно что по такому-то адресу
происходит переход, если программа не
зарегестрирована, то можно команду перехода,
которая находится по
этому адресу, заменить, например, на команду NOP.
Если ты не знаешь что это за команда, то серьезнее
отнесись к изучению асма
>Q: Ясно. А что такое метод Бруте Форсе?
A: Во-первых пишется с маленькой буквы — бруте
форсе(brute force) ;)) А во вторых дословно переводиться
как метод `грубой силы’, т.е., например, простой
перебор всех возможных паролей.
>Q:Почему софтайз не дает поставить брякпоинт на
некоторые функции, например на GetDlgItemTextA?
A:Все функции храняться в библиотеках. Например
GetDlgItemTextA находится в USER32.DLL К тому же функции
грузятся в память по определенным адресам. И
брякпоинты ставятся не на функции а на адреса
соответсвующие им. А что бы софтайз знал где — что,
нужно экспортировать в софтайз нужные
библиотеки. Делается это в winice.dat
Обычно эти строки уже есть, но закомментированы и
нужно просто убрать `;’
>Q:Все сделал, загрузил. Теперь хочу начать
ломать программу. Она спрашивает
регистрационный номер(РН). Что делать?
A:Нужно отыскать место где сравнивается
введенный номер с нужным и подправить его
чуть-чуть
>Q: Отыскать? А как?
A: Можно несколькими путями.
1. Отлавливаем место где вводится РН. Затем
трассируем по шагам пока не найдем сравнение.
Здесь обчно делают так bpx GetDlgItemTextA ставят бряк на
функцию, при помощи которой обычно считывается
строка из окна ввода. Можно ставить бряки на
другие функции GetDlgItem*, GetWindowText*, hmemcpy. Хочу
обратить внимание на последнюю. Она просто
выполняет копирование участка памяти, но она
применяется поголовно всеми функциями ввода
данных. Поэтому бряк можно ставить и на нее. Но
нужно помнить, что она может вызывается и при
простом копировании данных, поэтому бряк на нее
нужно ставить только перед нажатием кнопки `OK’.
Ввод РН можно отловить и так: Ввели РН. И не
нажимая ОК жмете Ctrl+D. Теперь вы в софт ксора к
данным дает исходные данные.
Вам когда-нибудь хотелось узнать о том, как программы защищаются от копирования? С помощью нужных инструментов вы сможете поглубже узнать о работе программ и их защиты. Используя язык ассемблера, вы сможете изменить данные программы так, чтобы полностью убрать надобность в регистрации или покупке.
Disclaimer: всё ниженаписанное написано исключительно с просветительскими и исследовательскими целями, а также понимания механизмов защиты от взлома. Автор ни в коем случае не рекомендует использовать данную информацию для взлома программ.
В данной статье я хочу рассказать про три с половиной основных способа взлома программ на .NET, цель, которую я преследую — помочь разработчикам лучше понять механизмы защиты своих программ, т.е. выяснить наиболее очевидные угрозы и предпринять соответствующие меры (или не принимать).
Я не буду углубляться в детали и использовать сложные инструменты для взлома. Всё будет расписано «для чайников», т.е. все инструменты будут простыми, легкодоступными и бесплатными. А основным будет Reflector, декомпилятор программ под .NET
В качестве подопытного кролика я выбрал Expresso — анализатор регулярных выражений. Данная программа бесплатная, в лицензии вроде бы ничего не указано про взлом, но при этом без регистрации она будет работать всего 60 дней. Другими словами, вред от взлома данной программы минимальный, к тому же внутреннее её устройство очень уж хорошо подходит для тренировки. Буду надеяться, что автор данной программы не обидится на меня.
Для начала краткий ликбез по структуре .NET программы, для тех кто не знаком с разработкой под данный Framework: весь код, написанный на любом .NET языке (C#, Visual Basic, F#, Delphi.NET) компилируется в особый Intermediate Language, называемый обычно IL или MSIL. Это что-то типа ассемблера, только весьма умного и обладающего весьма мощными инструкциями. И это, в принципе, такой же равноправный язык как и C#, только синтаксис похуже (а возможности больше). Кроме того, в программе на .NET активно используются метаданные, т.е. вся информация о классах, метода, пропертях, атрибутах и всём остальном сохранена в исполняемом файле.
Т.е. на самом деле, декомпиляция программы не очень верное понятие в данном случае. Она и так вся в открытом виде лежит, а инструменты в виде Reflector’а занимаются тем, что приводят конструкции MSIL к соответствующим конструкциям C# или другого языка, повышая читабельность кода.
Перейдём, собственно, к взлому.
0. Обнуление триала
Собственно, это даже не взлом, а полулегальный способ продлить срок использования неактивированной программы. Заключается он в том, что находится место, где хранится дата первого запуска и меняется/уничтожается. После этого всё можно пользоваться программой до следующего срока.
Посмотрим на нашего подопытного рефлектором:
Немного погуляв по коду, находим интересную строчку в конструкторе MainForm
Открываем редактор реестра, идём в HKEY_CURRENT_USERSoftwareUltrapicoExpresso и видим следующие ключи:
Удаляем их и получаем ещё 60 дней работы.
Набор программ для взлома программ. Выбираем инструменты для реверса
У каждого реверс-инженера, вирусного аналитика и просто исследователя со временем появляется устоявшийся набор утилит, которыми он постоянно пользуется для анализа, распаковки или кряка. В этом обзоре я поделюсь своей версией. Это будет полезно всем, кто еще не обзавелся своим набором и только приступает к изучению этой темы. Впрочем, и опытному реверсеру должно быть любопытно, что используют коллеги по цеху.
WARNING
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Отладчики
Отладка приложения — это неотъемлемая часть процесса исследования, инструмент, который всегда под рукой у реверсера. В современном мире отладчик должен поддерживать обе интеловские архитектуры — x64 и x86, из этого мы и будем исходить.
Также у нас должна быть возможность отлаживать код, который работает в режиме ядра. Такая нужда периодически возникает, особенно если ты намерен искать zeroday-уязвимости в ядре ОС или реверсить драйверы вирусов. Основных претендентов два: x64dbg и WinDbg. Первый отладчик работает в режиме user mode, второй может отлаживать код в режиме kernel mode.
x64dbg
Этот современный отладчик с весьма приятным интерфейсом — достойный преемник OllyDbg. Поддерживает обе архитектуры — x64 и x86, обладает массой полезнейших плагинов.
Да, безусловно, он не лишен недостатков — в нем до сих пор есть несколько неприятных багов. Однако он активно поддерживается и развивается. Разумеется, из-за того что отладчик работает в пользовательском режиме, он остается уязвимым для многих техник обнаружения отладки. Но этот минус отчасти компенсируется разнообразием плагинов для сокрытия отладчика.
У x64dbg есть встроенный декомпилятор, поддерживается отображение кода в виде графа, можно делать точки останова на чтение, запись, выполнение и доступ, имеется встроенная утилита реконструкции импортов (как x64, так и x86). В общем, что говорить — этот отладчик использовался в узких кругах для того, чтобы победить небезызвестную игровую защиту Denuvo, и успешно справляется с этой задачей!
Почему не OllyDbg
В подборку не попал отладчик OllyDbg — по той причине, что он уже серьезно устарел. Он не поддерживает ни современные ОС, ни архитектуру x64. На официальном сайте приложения был анонс 64-битной версии и даже сообщалось о прогрессе в ее разработке, но сам сайт обновлялся в последний раз в 2014 году. Безусловно, с OllyDbg связана целая эпоха, но, по всей видимости, она прошла. Да и отладчиков kernel mode тоже поубавилось — разработчики забросили Syser Kernel Debugger, а он в свое время был преемником SoftICE.
WinDbg
Если нужно отлаживать ядро или драйвер, то WinDbg нет равных. Этот отладчик поддерживает сама Microsoft, и он входит в состав Windows Driver Kit (WDK). На данный момент это самое актуальное и мощное средство отладки кода ядра. Здесь нет такого приятного интерфейса, как в x64dbg, но и выбора у нас немного — другие отладчики не работают в kernel mode.
WinDbg поддерживает удаленную отладку и умеет скачивать отладочные символы напрямую с серверов Microsoft. Чтобы быстрее настроить его для отладки ядра ОС внутри виртуальных машин, существует надстройка VirtualKD. Безусловно, начинать путь реверсера с WinDbg строго противопоказано, но, когда наберешься опыта и начнешь пробовать разные интересные вещи, он становится необходимостью.
Именно в WinDbg можно запросто посмотреть, как выглядят те или иные системные структуры, и легко дизассемблировать функции NTAPI. Конечно, им можно отлаживать и «обычные» приложения, но лично я предпочитаю распаковывать столь могучий инструмент только при крайней необходимости!
Дизассемблеры
Сложно представить себе реверс без инструментов статического анализа кода. На сегодняшний день дела с дизассемблерами обстоят немногим лучше, чем с отладчиками, но все-таки можно выделить фаворитов в этой области. Признанный стандарт антивирусных лабораторий — это дизассемблер IDA Pro. Второе место по востребованности занимает фреймворк для реверс-инжиниринга Radare2 (хотя многие считают, что Radare2 не уступает IDA).
IDA Disassembler
Существует две версии IDA — платная (Pro) и бесплатная (Starter). Бесплатная версия урезана по количеству поддерживаемых архитектур — она понимает только x86, кроме того, она не поддерживает плагины. Платная версия лишена подобных ограничений: она поддерживает внушительное количество архитектур процессоров и позволяет подключать расширения.
В IDA есть встроенный отладчик, весьма простенький по набору функций, но к его самобытному интерфейсу придется приноровиться. Также IDA может быть укомплектован дополнением Hex-Rays — декомпилятором исходного кода приложения в код на C. Это полезнейшее дополнение, которое значительно ускоряет анализ программы.
В целом IDA — мощнейший и прекрасно отполированный инструмент, который развивался много лет. Жаль только, что профессиональная версия стоит в районе 500–1000 долларов в зависимости от вида лицензии и кому попало не продается. Кто попало в результате выкручивается как может.
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Источник: xakep.ru