Приветствую всех пользователей форума xss.pro, продолжаю цикл статей по реверс-инжиниринг для начинающих (18-статья). И сегодня: мы начинаем работать в новом направлении и начнем анализировать программы написанные на разных языках программирования. Также, рассмотрим работу как в отладчике OllyDbg так и в IDA Pro. В этой статье, как и в предыдущих, буду стараться пояснить все максимально доступным языком. Читая статью, вы сможете сами убедится что отладчик это всего лишь инструмент для анализа и внесения изменений а вот основой является ваши знаний. Поскольку, если вы умеете читать команды, вносить изменения (понимаете структуру кода) то не важно какой отладчик вы выберете - главное что бы Вам было удобно.
Создавая эту статью, я подошел к делу так: Первая часть статья будет состоять из Crack Me (написанного мной, под это дело + дополнение). Суть в том что бы начинающий человек понимал и разобрался с тем с чем он имеет дело. Статья не рассчитана на экспертов (что уже в курсе всего и всюду), но не спешите бросать тапками в мою сторону.
Далее будут выходить все сложнее и сложнее статьи. Коль мы приступаем к анализу софта, на разных языках программирования, то и начало должно быть (более менее) адекватное и не сразу же протекторы и виртуальные машины крошить. Я то могу, но смысла тогда в цикле статей не будет.Ну и в финале мы пропатчим реальную программу, посмотрим как это все происходит. Я покажу некоторые нюансы, которые (уверен) много кто не знает и не понимает. Снова же я не говорю про экспертов, цель состоит в том что бы адекватно преподнести информацию и вызвать у людей интерес к обучению. Ну вот, в принципе и все.
А мы приступим к анализу первой программы (Crack Me) что я специально создал под - наше дело. Цель состоит в том чтобы показать Вам алгоритм (код программы) в
чистом виде, то есть в среде разработки. После чего, используя отладчик, мы увидим как код выглядит в самом отладчике. Такой подход поможет Вам лучше воспринимать информацию, если взять мои предыдущие статьи то вы заметили: Что язык программирования C#, на котором были написаны программы, отображается в отладчике в читаемом виде. Исключением бывают, только в том случае, если код пропустили через обфускатор. Но как вы заметили что снять практически любой обфускатор, с программы написанной на С#, не создает массу неприятностей .Главное вникнуть в сам процесс и при достаточных знаниях - код приводится в, более менее, читаемый вид. А далее читаем код (инструкции), находим место где происходит проверка лицензии и патчим или пишем KeyGen, в зависимости от ситуации. Все, вышесказанное я не просто так говорю. А подготавливаю Вас, можно сказать, к ситуации что будет происходить дальше.
Внешний вид нашего Crack Me выглядит вот так:
- Мы будем использовать другой отладчик, причем не один. Тут главное выбрать для себя удобный инструмент так как отладчик это всего лишь инструмент для анализа программ. А вот основой являетесь Вы и Ваши знания.
- Снова же, если в предыдущих статьях, на примере языка C#, мы могли почитать код функции что отвечает за активацию (Тем самым почитать справку, ознакомится с переменными) и пропатчить её, то в нынешней ситуации, уже, так просто не будет. Но не нужно опускать руки, так как материал я Вам разжую до мелочей - максимально доступно.
- Самое главное вы должны будет понять (освоить Ассемблер) - что отображает (предоставляет) в доступном виде: типы данных, методы адресации, системы регистров, инструкций и . и .... Это все связано с командами процессора, но я не буду вас грузить сейчас теорией, так как это статья конкретно заточена для того что бы понять логику работы, в конкретном случае. А далее, все постепенно, как и в предыдущих статьях, станет понятно. Но стоит обратить внимание на то что самым главным (Основа) языком для всех манипуляций с программами (крякинг) - есть Ассемблер. С самого начал, тот кто только начинает все изучать, будет не просто и это факт, тут главное терпение.
- Конечно же большим плюсом и преимуществом будет знание, как минимум, одного языка программирования. Но про это все, мы поговорим, немного позже.
Это еще не вся информация, но пока что, на начальных этапах, мы приступим к делу. Сегодня я буду показывать по факту и постепенно мы разберем все функции, используемого отладчика, по ходу дела. Такая практика позволит, постепенно, ознакомится с всем функционалом, не загружая голову всем и сразу. Конечно же: как в сети так и тут на форуме, есть практические уроки по работе с IDA. А мы будем анализа, для начала, именно свой Crack ME.
Но сначала рассмотри как защищается наш Crack Me. Так как писал его я то естественно код программы мы можем посмотреть в среде разработки. Код программы специально написан так что бы, на начальном этапе, вы понимали что мы делаем. В сети много уроков и примеров, что лучше решать Вам. Конечно если есть опыт то показать все не составит труда, но вот для начинающих людей, в этом деле, нужно показать все от и до. Собственно что я и сделаю по завершении этой статьи.
Не отвлекаясь, смотрим код программы и принцип по которому работает защита. Сейчас я все прокомментирую, так как тут есть нюансы которые всплывут при разборе защите в отладчике.
А картина у нас следующая:
- При запуске программы: до загрузки главной формы программы, с активацией, идет проверка файла лицензии License_key.txt. А именно данных что в нем расположены. Если файла лицензии нет то возникает исключение. При этом я специально поместил код в конструкцию try - except. Можно было воспользоваться и функцией для проверки файла на существования if FileExists('Путь к файлу') then и условие. Но суть сейчас не в этом, это как вариант к слову говоря. Так вот, если этого файла нет то при возникновении заключенный код в конструкцию try - except: Выводит сообщение о том что файла лицензии нет. И в Статус лицензии, Тип лицензии, На кого зарегистрирована лицензия, Ключ активации - ничего не добавляет (Это в том случае если файла лицензии нет). А в "Статус к названию главной формы", при этом же условии, добавляется надпись - Demo. А в случае если он есть то идет проверка ключа активации и если он верный и равен - 123 то меняется статус. А далее, у нас, идет запуск программы, собственно ничего сложного нет.
- -3. После запуска программы и вводе данных активации (Нажатие на кнопку Activate): При вводе имени и ключа активации - проверяется только ключ активации, в случае если он равен - 123: То лицензия активируется и в статусах показывается то все ок и лицензия Unlimited.
Примечание: Я не просто так создал такую конструкцию, в процессе вы увидите в чем суть дела. А мы не отвлекаемся и идем далее.
Принцип активации программы показан на видео: CrMe-1.wmv (Имеется и в архиве, на всякий пожарный).
Выводы: На что нужно обратить внимание.
- Все просто, как вы уже заметили что: В программе присутствуют две проверки, условно говоря, что отвечают за активацию данного Crack Me. При анализе, эту информацию, мы должны взять во внимание. Можно было еще усложнить пример и добавить различные проверки, но для анализа и понимания основной картины - этого достаточно (Для старта).Тем более что, с 100% уверенностью, скажу: Начинать нужно с несложных вариантов, если Вы хотите достичь результата. Если, к примеру, не имея опыта, начать с сложных вариантов то результат вы получите не скоро а может и вовсе не получите.
Отладчики, какой выбрать и что лучше ?
- Скажу так: Сегодня мы рассмотрим работу сразу же в двух отладчиках (OllyDbg и IDA Pro) - у каждого есть свои особенности. К примеру IDA Pro - более сложный вариант но в тоже время более функциональнее и удобней, лично мое мнение. А вот OllyDbg это, скажем так, уже ветеран на основе которого имеются много уроков и подробной информации. Плюсом же IDA Pro является тот факт что она работает как с 32-битными приложениями так и с 64-битными. Но это не говорит о том что OllyDbg не поддерживает x64-битные приложения, на официальном сайте есть релиз по x64. Но разработчик годами не обновлял его. И плюсов и минусов можно перечислить очень и очень много, но про это все постепенно будем говорить. Но все же IDA это мощнейший комбайн для профессионального реверсинга.
А сейчас приступим к анализу нашего CRack Me. Я предлагаю начать с простого и использовать OllyDbg2 (Модификацию с настройками). Так Вам проще будет воспринимать информацию. Ну и далее, следующую программу, в этой статье, будем анализировать используя IDA Pro.
Приступим.
Так как я программировал данный Crack Me то я уже знаю что это 32-битное приложение. Но если вы хотите проверить разрядность приложения то можно, также как и в предыдущих статьях, можно использовать утилиту Exeinfo PE (Анализатор исполняемых файлов), что: программа написана на Delphi, разрядность программы (32-битное приложение) и дополнительной защиты в виде пакеров, протекторов - нет. Ну и собственно 4 пункт, утилита, дает совет по использованию OllyDbg для анализа приложения.
Для того что бы открыть программу под отладчиком: Нажимаем File - Open - Выбираем наш файл. Или альтернативный вариант - просто перетянуть файл на форму отладчика. После чего, получаем вот такую картину. И тут уже я буду показывать только нужный, нам, функционал отладчика. Так мы постепенно будем разбирать каждую функцию, по мере её использования.
Те, кто только начинают вникать в суть дела, конечно же видят страшную картину. А именно понятно то что ничего не понятно
- Дизассемблированный листинг, вот так выглядит наш код под отладчиком. То есть уже после компиляции в готовый exe (исполняемый) файл.
- Это у нас Регистры.
- Дамп.
- Стек.
А теперь, давайте снова включать логику и делать выводы. Основной нашей целью является поиск места (функции) что отвечает за активацию программы. Вариантов, как действовать есть множество. К примеру, мы знаем что при вводе выдуманного ключа (от фонаря
- Для того что бы произвести поиск мы нажимаем правой кнопкой мышки "Search For".
- Далее в меню выбираем пункт "All Referenced Strings".
- Далее ищем наше сообщение, что выводит программа, если ключ активации неверный.
- После чего, как видим, находим наше сообщение.
- Двойным щелком мышки переходим по инструкции что вызываем наше сообщение.
Таким способом мы нашли место где вызывается наше сообщение и снова вернулись в дизассемблированный листинг. Но уже на нужное нам место и тут уже нужно разбирать конструкцию и выяснять как происходит активация.
Сначала, советую посмотреть порядок действий на видео (Для укрепления материала): CrMe-2.wmv (Имеется и в архиве, на всякий пожарный).
Видео посмотрели, ну а теперь идем далее и продолжаем наш анализ с места вывода этого сообщения. Надеюсь доступно поясняю ?, стараюсь, кому не понятно то спрашивайте в теме. Тут, у нас идет список различных функций, что вызываются выходя из ситуации. Но мы снова включаем логику и думаем так: Если имеется сообщение о правильном регистрационном ключе то должно быть сообщение и о неправильном ключе. Хотя, могу 100% гарантировать что так не всегда бывает, но в нашем случае именно так.
1-2. Если подняться по коду немного выше, то мы можем увидеть что по адресу: 005DBACB идет вывод сообщения о правильном регистрационном ключе. И самое интересное что этот ключ отображается по адресу 005DBABB: в комментариях, а именно UNICODE "123". Все бы хорошо, но наша цель состоит в другом, не смотря на то что ключ мы узнали с под отладчика. А именно пропатчить программу так что бы она принимала любой ключ активации. Не всегда, ключ активации, можно вот так взять и получить с под отладчика, потому самый надежный вариант это патчинг. А выше, над вызовом сообщение о верном ключе активации, по адресу 005DBAC5,
идет вызов команды JNE Project1.005DBBC2 (Условный переход по адресу: 005DBBC2 и как подсказка отладчик нам показывает стрелку вниз, куда ведет функция). Для общего понимания: Команда JNE или же та же JNZ условный переход в том случае если флаг Z (в регистрах) не равен нулю.
3. Можно посмотреть что там происходит. Варианта два: Первый не совсем правильный, прокрутить колесико мышки и посмотреть куда он ведет, но если переход длинный то крутить вы будете очень долго
. Или же второй вариант нажать в отладчике CTRL + G и в появившемся меню ввести адрес, а именно: 005DBBC2, куда ведет условный переход JNE.Выглядеть все это будет вот так:
Сначала, советую посмотреть порядок действий на видео (Для укрепления материала): CrMe-3.wmv (Имеется и в архиве, на всякий пожарный).
А далее у нас идет сравнение и после этого естественно активация демонстрационной версии программы. Что же делать далее и как быть ? Все просто. Условный переход по адресу 005DBAC5: то есть JNE Project1.005DBBC2 (что, в свою очередь, делает переход по адресу 005DBBC2) и тем самым активирует цепочку событий- можно пропатчить, используя команду NOP. То есть мы говорим программе - ничего не делай, никаких переходов, по простому говоря.
Команда NOP при своем запуске не делает изменений в стеке или памяти или регистрах. Её применить можно, к примеру, для замены одной инструкции на другую. В основном её предназначение состоит в прерывании других инструкций (команд) или же цепочки событий, проще говоря.
А именно делаем так: Но тут есть интересные моменты на которые стоит обратить внимание.
Ни и теперь внимательно. Основное, что мы сделали, это прервали цепочку событий а именно команду JNE
1. Нажимаем, в отладчике, правой кнопкой мышки по команде JNE Project1.005DBBC2 и в появившемся меню выбираем пункт меню Edit и далее Fill with Nops. И далее видим что команда исчезла. А на её месте появился список NOP, но поxему же так ? Ведь можно подумать мы же делали изменения в одном месте ?. А все дело в том что отладчик увидел (предусмотрел) что данная команда занимает больше байт и добавил дополнительные NOP.
2-3. Изначально, в дампе, до изменения JNE Project1.005DBBC2 на NOP у нас была последовательность байт: 0F85F7000000 по адресу 005DBAC5. А после изменения
это значение (последовательность) изменилось на: 909090909090. К этому значению, мы еще вернемся, сейчас двигаемся далее и давайте сохраним наши изменения в исполняемый файл и посмотрим что у нас получилось.
Для сохранения выделяем наш список NOP, нажимаем правой кнопкой мышки, в появившемся меню выбираем пункт меню Edit - Copy to exetutable.
Я тут снял видео, для более подробной картины и как раз покажу что произошло после изменений в нашей программе. И после продолжим.
Порядок действий на видео (Для укрепления материала): CrMe-4.wmv (Имеется и в архиве, на всякий пожарный).
После того, как мы сохранили изменения в исполняемый файл (на видео это также показано), пробуем запустить софт и активировать.- Так как это патч то: я ввожу любые данные активации и программа активируется выдуманным ключом. После чего создается файл лицензии, с данным активации, файл: License_key.txt. И можно радоваться, победа, но есть одно НО.
- Дело в том что: при следующем запуске, программа переходит снова в Demo-режим работы. То есть что бы снова, условно говоря, активировать софт нужно вводить данные активации. И так будет продолжаться постоянно.
А суть в том что: В самом начале, я говорил, что "В программе присутствуют две проверки". Первую мы убрали, то есть та что расположена на кнопке активации. А вот вторая проверка происходит при запуске программы. И если ключа активации нет, то программа показывает сообщение: No license file. Demo mode activated. Если вернутся и поискать эту строку в отладчике, как мы делали уже, то с легкостью мы находим её. А немного выше, поднявшись по коду, мы видим вызов условного перехода JNE Project1.005DBFD5 по адресу 005DBF4D. То есть если ключ не равен 123 то естественно идет переход по адресу 005DBFD5. В этом случае, также, замечаем что: до изменения JNE Project1.005DBFD5 на NOP у нас была последовательность байт 0F8582000000 по адресу 005DBF4D. А после изменения это значение (последовательность) изменилось на: 909090909090. То есть, это второе значение которое мы запоминаем.
Порядок действий на видео (Для укрепления материала): CrMe-5.wmv (Имеется и в архиве, на всякий пожарный).
Ну и напоследок, по этой программе (Crak Me): Скажу несколько слов, в дополнение:
1. Выше мы выяснили что, по адресу 005DBAC5, после патчинга первой проверки последовательность байт 0F85F7000000 изменилась на 909090909090.
2. А после патчинга, второй проверки, по адресу 005DBF4D, последовательность байт 0F8582000000 изменилась на 909090909090.
Так вот, значения что заменить на что заменить, у нас есть: И можно создать универсальный патчер, к примеру как мы делали в предыдущей статьи (используя программу DUP 2): https://xss.pro/threads/94441/
Это же один из вариантов, ну и конечно же это не единственный способ. Или же просто предоставить пользователям, данные для замены (Показав какой Вы крутой хакер
Есть очень ВАЖНЫЕ НЮАНСЫ (При использовании утилит, типа DUP 2 - для создание патчей), ОБЯЗАТЕЛЬНО ОБРАТИТЬ ВНИМАНИЕ. Сейчас я покажу все подробно, если этот момент упустить то результат будет печальный.
Для начала, выше, мы выяснили что в файл нужно внести изменения.
- Первое это по адресу 005DBAC5: 0F85F7000000 заменить на 909090909090
- Второе это по адресу 005DBF4D заменить: 0F8582000000 заменить на 909090909090
1. Вот почему я пишу именно "по адресу" делаем замену ?. А все дело в том что при поиске в исполняемом файле, таких значений может оказаться много, то есть одинаковых. И неопытный человек может взять и заменить их все, что есть грубой ошибкой. Потому как нам нужно внести изменения именно в том месте (по тому адресу) где мы нашли изьян в защите.
К примеру, если мы создадим патч под наш Crack Me, используя утилиту DUP 2 (И не только, это касается всех подобных утилит). Весь процесс я не буду показывать так как он есть в моей предыдущей статье: https://xss.pro/threads/94441/. Сейчас я покажу только важные нюансы, которые пропускать не нужно.
- Дело в том что последовательность байт: 0F85F7000000, в исполняемом файле нашего пациента, найдена только одно.
- А вот последовательность байт: 0F8582000000 встречается в 7 местах.
И вот как раз, при таких раскладах (При использовании утилиты DUP 2 или подобных для создание патчей), нужно указывать правильный адрес (именно тот что мы выяснили в отладчике). Как заметно на картинке, что ниже, в настройке "Правка поиска и замены образцов" - стоит настройка 5, потому что это и есть правильный адрес по которому патчер найдет последовательность байт и пропатчит, в этом месте, их.
В случае, если проигнорировать этот момент то: патчер просто сделает замену, по списку адресов, этой последовательности байт. И в финале вы получите или не работоспособную программу или криво-работающую. Понятно что это у нас пример, Crack Me а если софт огромный и там может встретится список с 100 одинаковых последовательностей байт. И если, этот момент, не принять во внимание то получите массу ошибок и неработающий вариант софта, после патчинга.
Порядок действий на видео (Для укрепления материала): CrMe-6.wmv (Имеется и в архиве, на всякий пожарный).
На видео, показано то что я выше говорил, до малейших подробностей. А также вариант сравнения двух исполняемых файлов используя, всем известную, программу Total Commander. Суть том что: Берем наш оригинальный файл и файл после патчинга. После чего сравниваем их по содержимому как двоичные файлы и получаем результат, отличия, в виде последовательности байт. Я это показываю не спроста, подобные вещи вы должны знать. Если это покажется сложным то, в будущем, будет в 100 раз сложнее. Спешка и необдуманные действия тут неуместны.
В финале, мы получили результаты сравнения, в Total Commander. И результат, сравнений, выглядит это так:
Алгоритм проверки ключа можно было усложнить, к примеру я сделал так (В архиве также имеется вторая версия Crack Me + Исходный код). А именно
получить имя компьютера и после сравнивать его с колючем активаци. Предварительно переведя имя пк в алгоритм MD5. То есть суть в чем: Имея исходный код или код написанный собственноручно можно тренироваться, создавая разные алгоритмы защиты. А вывод какой: Если есть знания в программировании то Вам будет легче в реверсинге. Код немного изменился, но ломается по такому же принципу, для примера что изменилось в коде:
- И так, устанавливаем программу, после этого проанализируем утилитой Exeinfo PE (Анализатор исполняемых файлов) что бы узнать на чем написана программа и есть ли дополнительная защита. Утилита показала что (картинка выше): программа написана на Delphi, это 32-битное приложение и дополнительной защиты не обнаружено. 4-пункт на картинке, как совет по использованию отладчика OllyDbg).
- Во меню помощь - есть подменю, с формой, куда нужно вводить регистрационные данные, для активации программы. И интересный факт в том что: какие бы данные (Выдуманные) мы не вводили - программа благодарит за регистрацию. То есть диалога о неверном ключе геистрации нет, скорее всего разработчик задумал это для того что бы сбить нас с толку.
- Но мы пойдем другим путем, выходя из информации полученной из пункта 2, выше. А именно: В левом, верхнем углу, главной формы программы: имеется надпись в которой говорится что пробный период 21 день. А далее готовить свои кровные денежки и платить
. Так вот, мы поищем, по части этого диалога, места где он вызывается в программе. После этого проанализируем ситуацию и будем действовать.
Но сначала, мы определимся с отладчиком, который будем использовать далее. Так как, предыдущий пример я показывал в OllyDbg, то сейчас мы посмотрим в сторону IDA Pro. Конечно же, по началу будет сложно, но постепенно привыкните. Самое главное что нужно понимать что зацикливаться на одном инструменте по отладке - нельзя.
Также, сейчас я не буду напрягать вас сразу и всем, по настройкам этого отладчика IDA Pro. Мы будем действовать постепенно и знакомится с его функциями по мере необходимости. При таком подходе не будет так страшно как может показаться изначально . И так приступим.
Для начала, нужно загрузить исп
олняемый файл в отладчик IDA. Так как это вступительный урок то делать мы будем все по стандарту.
На картинке, что выше, видим:
1. Запускаем отладчик, выбираем меню "New" и выбираем наш файл программы для анализа, в данном случае это: AFR.exe.
2. Так как мы работаем, с файлом, впервые и ранее не сохраняли наши наработки, через отладчик, то выбираем overwrite.
3. Оставляем настройки по стандарту, в данном случае, этого достаточно. Если вкратце сказать то: В нашем случае, IDA сама распознала формат нашего файла. Но если
в отладчик загрузить, какую ни будь, прошивку то тогда будет посложнее и нужно уже будет настраивать. Ну как настраивать, включить логику да и все. Но про это, поговорим в будущих статьях. Нажимаем кнопку "Ok".
4. Дожидаемся пока IDA проанализирует нашу программу, то есть когда закончится предварительный автоматический анализа, нашего, исполняемого файла. Где определяются строки, глобальные переменные, функции все что можно вытянуть, на автомате, с нашего анализируемого файла.
5. В окне дизассемблера получаем структуру кода (листинг) в таком виде. Что тут происходит куда копать и как действовать, мы пока что не знаем
6. Это у нас адреса, то есть место где вызывается та или иная инструкция (функция), условный или же безусловный переход и так далее.
Выше, мы определились что будем искать триальную надпись в программе. Давайте поищем по части названия триальной надписи (что отображается в левом, верхнем углу, главной формы, незарегистрированной версии программы), то есть "I have just".
Мы должны понимать вот что: Если, в программе, имеется любая информация по активации то в первую очередь нужно двигаться в этом направлении и искать зацепку.
В нашем случае, поиск происходит так и получаем результат такой:
1. Ищем текст, по части текста триального диалога программы. Выбираем мею, в IDA Pro, "Search For Text". Вводим часть триал-диалога "I have just".
2. Появится форма, в которой нас уведомляют что: идет поиск строк, дожидаемся пока поиск завершится.
3. Далее, в вкладке Occurrences of:, IDA показывает нам адреса по которым вызывается функция sub_5D3E18, где в свою очередь присутствует, наш, искомый текст.
Ну а далее, логично будет перейти в начало функции и посмотреть что там происходит, по адресу: 005D2E18. Думать и гадать ничего не нужно, так как отладчик нам все подсказал. Теперь, главное правильно оценить ситуацию и применить логические действия. Переходим по адресу: 005D2E18 (нажатие на кнопку G, на клавиатуре для вызова меню). И видим что сначала у нас идут записи в реестр, так как софт не зарегистрированный. А далее идет вызов условного перехода jle short loc_5D2EB7 по адресу 005D2EA9. И тут же, если в байте записывается значение 1 то программа сражу же активируется а если ноль то включается режим триала. То есть 1 и 0 это тоже самое что true и false, разрешить или нет. То есть если флаг 0 в mov byte ptr [eax+640h], 0 по адресу 005D2EBA,то программа не активирована, а если 1 то: активирована.
Для внесения изменений делаем так (Картинка ниже, обязательно ознакомится):
1. Ставим курсор на наш условный переход по адресу 005D2EA9 и в меню выбираем Edit - Patch Program - Assemble...
2. После чего заменяем условный переход Jle на команду NOP.
3. Видим что условный переход в коде изменился на NOP.
4. А еще замечаем что, ниже, по адресу 005D2EAA, создалась инструкция db 0Ch. А это говорит о том что функция было повреждена. То есть если инструкции нет, не существует, то эта область отображается как область данных. Что бы это исправить заменим её , также, на команду NOP, по адресу: 005D2EAA. В итоге у нас будет два изменения для того что бы софт активировался. А именно: команда NOP по адресам: 005D2EA9 и 005D2EAA.
5. После того как внесли изменения мы можем посмотреть какие байты и по какому адресу были изменены. Выбрав пункт меню - Patched bytes.
Так вот, если по адресу 005D2EBA, в mov byte ptr [eax+640h], 0 - изменить флаг 0 на 1 то программа также активируется. То есть, по сути то дела, условный переход сработает, то есть jle. Но при таком раскладе, мы изменили условие, что как не крути - все равно True (=1) (Разрешить в независимости от условия).
Все что мы проговорили я покажу на видео, так будет еще понятней. А точнее будет показано два варианта патчинга этого софта. При любом из них - активация пройдет успешно.
Порядок действий на видео (Для укрепления материала): CrMe-7.wmv (Имеется и в архиве, на всякий пожарный).
Ну и собственно получаем вот такой результат.
Порядок действий на видео (Для укрепления материала): CrMe-8.wmv (Имеется и в архиве, на всякий пожарный).
В финале, мы получили результат - наша программа успешно активировалась. То есть софт стартует уже активированным и с авторством кряка, никаких привязок к серийному номеру или железу компьютера нет. Отлично, желаемого результата мы достигли.
В финале, несколько слов по делу:
- В первой части статьи, я специально, показал пример на основе собственного Crack Me. Что бы начинающий человек, в этом деле, понимал как это работает. Даже начинающим программистам, ничего не стоит, написать собственный код и потренироваться его взломать. При таких раскладах вы быстрее получите опыт.
- Категорически не советую, сразу же, хвататься за сложные примеры и пытаться их сломать, если вы только в процессе познания - этого дела. Результата вы не получите, в основном головную боль и это без шуток.
- Анонсирую:
В следующей статье мы разберем защиту парсеров и одного приват (софта) по обработке логов, что попался мне в руки
.
- Вы можете спросить: С чего такой резкий перепад, сразу на сложное (то есть вопрос касается пункта 3 выше). Что бы показать Вам что имея знания можно ломать и сложные проекты. А так как это вступительная статья, то информации предостаточно, для того что бы вызвать интерес. Ну и по стандарту: разберем и не очень сложные проекты. Я же обещал что далее статьи будут смешанными, вот и придерживаюсь этого плана.
Всем хорошего вечера, спасибо за внимание и до следующих статей. 

В архиве:
CrackMe-1 и CrackMe-2: Имеются как исполняемые файлы так и исходные коды к ним.
Программы Virustotal:
В архиве:
CrackMe-1 и CrackMe-2: Имеются как исполняемые файлы так и исходные коды к ним.
- CrackMe-1 (Исполняемый файл) \ Virustotal: https://www.virustotal.com/gui/file/c2370dd759a3ef086e31da9d3c998618cb0d4a8628341c3f729dd00a201c74e9
- CrackMe-2 (Исполняемый файл) \ Virustotal: https://www.virustotal.com/gui/file/584da57040c1ce271f3c74d5ae6332637a7d56b27cac610cb32f68cfb314139a
- Аdvаnced find аnd replаce (Инсталлятор) \ Virustotal: https://www.virustotal.com/gui/file/87907eeeb5cf1a388b98c71f5b27cbaa0882799263075907fec7b50c555c35a7
Инструменты для анализа:
- IDA v7.7 (Инсталлятор) / virustotal: https://www.virustotal.com/gui/file/84aa757b3f7262fc2bc05f3fc8b2591075e5cd3b6765d9b432efcb44b6e0c5cc
- OllyDbg (Исполняемый файл) / virustotal: https://www.virustotal.com/gui/file/ae602a073e34c0e15c6a8752087017e6c455b8f4cd7b04073be469baf0bead23
- HxD (Инсталлятор) / virustotal: https://www.virustotal.com/gui/file/dccfa4b16aa79e273cc7ffc35493c495a7fd09f92a4b790f2dc41c65f64d5378
- ExeinfoPe (Исполняемый файл) / virustotal: https://www.virustotal.com/gui/file/32e6df44a529d3bd543aae01365852990c0e7f3b4f84b5a7f9d7dfc18d6a46fd
Файлы к статье:
Скрытый контент для зарегистрированных пользователей.
Пароль к архиву: -EXE-xss.pro-(ST_18)
Ссылка на файлы к статье: https://mega.nz/file/ETEVhYbT#bSsaor-rAQY8i0vN2ba0mYR2iKkA6z344bKId-S1xZ0