Что такое обратный инжиниринг

Обратная инженерия

Обра́тная разрабо́тка (обратный инжиниринг, реверс-инжиниринг; англ. reverse engineering ) — исследование некоторого устройства или программы, а также документации на них с целью понять принцип его работы и, чаще всего, воспроизвести устройство, программу или иной объект с аналогичными функциями, но без копирования как такового.

Применяется обычно в том случае, если создатель оригинального объекта не предоставил информации о структуре и способе создания (производства) объекта. Использование обратной разработки может противоречить закону об авторском праве и патентному законодательству.

В настоящее время под словами «reverse engineering» чаще всего понимается т. н. «clean room reverse engineering», то есть процесс, при котором одна группа разработчиков анализирует машинный код программы (в сленге хакеров для этого процесса используется также выражение «обратный инжиниринг» или «реверсный инжиниринг»), составляет алгоритм данной программы на псевдокоде, либо, если программа является драйвером какого-либо устройства, составляет исчерпывающие спецификации интересующего устройства. После получения спецификаций другая группа разработчиков пишет собственный драйвер на основе полученных спецификаций или алгоритмов. Такой подход позволяет избежать обвинений в нарушении авторских прав на исходную программу, так как по законам, к примеру в США, подпадает под понятие «fair use», то есть добросовестного использования оригинальной программы. Результат обратной разработки редко идентичен оригиналу, что и позволяет избежать ответственности перед законом.

Содержание

Сферы применения обратной разработки

Электроника

Копирование различных электронных блоков без фактической разработки. Известно, что часть советской цифровой электроники копировалась. Например, американская серия интегральных схем 74 и её советский аналог К(Р)155.

Ещё один пример обратной разработки — создание компанией AMD процессора Intel 80386.

Программное обеспечение

С развитием Интернета популярные операционные системы и программы всё интенсивнее исследуются на предмет обнаружения в них уязвимостей или т. н. дыр. В дальнейшем найденные дыры могут использоваться для получения несанкционированного доступа к удалённому компьютеру или компьютерной сети.

Одним из широко известных примеров обратной разработки является исследование IBM, ставшее серьёзным шагом на пути развития производства IBM-совместимых компьютеров сторонними производителями. Создание сервера GNU/Linux и работающего с серверами на базе ОС Microsoft Windows) также потребовало обратной разработки используемого SMB.

Обратная разработка программного обеспечения производится с помощью следующих методик.

Базы данных

может использоваться при создании реляционной модели базы данных.

Промышленность

Обратная разработка продукта конкурента с целью узнать его устройство, принцип работы и оценить возможности создания аналога.

Военная промышленность

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Самыми известными фактами обратной разработки во время второй мировой войны являлись:

Для анализа исходного кода

Существуют программы, которые предоставляют как возможность восстановления (обратный, reverse) по исходному коду общего системного проекта (классы, связь между ними и т.п.), так и прямой генерации исходного кода на основе созданного проекта (функциональных блоков бизнес-процесса):

Источник

Reverse engineering: обратная разработка приложений для самых маленьких

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Выделяют 4 методики проведения обратной разработки:

анализ обмена данными приложения, с помощью различных анализаторов трафика;

использование режима отладки для поиска нужных участков кода и просмотра данных с которыми работает приложение;

дизассемблирование машинного кода программы (изучение требует довольно много времени);

декомпиляция кода программы для создания исходного кода программы на языке программирования высокого уровня.

Установка

Рекомендуемым разработчиками способом установки и обновления Radare2 является установка из официального git-репозитория. Предварительно в системе должны присутствовать установленные пакеты git, build-essential и make.

Запуск установки рекомендуется производить не из под пользователя root, иначе скрипт сам произведёт понижение привилегий.

Далее устанавливаем графическую оболочку для Radare2. Мы будет устанавливать официальный GUI под названием Iaito. Установим пакеты, необходимые для установки Iaito:

Для дистрибутивов Linux на базе Debian, есть готовые пакеты, ссылки на которые можно взять тут. Скачаем и установим нужную версию пакета:

Теперь установим плагин r2ghidra, который является интеграцией декомпилятора Ghidra для Radare2. Плагин не требует отдельной установки Ghidra, так как содержит в себе всё необходимое. Для установки плагин доступен в качестве r2pm пакета:

Установленный плагин автоматически интегрируется в GUI Iaito. После установки запускаем графическую оболочку и если все сделали правильно, то видим стартовый экран:

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Теперь мы можем заняться нашим примером. Суть программы-примера заключается в следующем: при запуске на экране выводится некий токен, необходимый для того, чтобы зафиксировать выполнение задания и приватный SSH ключ. Но что-то пошло не так и в результате ключ выводится в некорректном виде, а токен не принимается в качестве правильного.

Первый запуск программы-примера

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Открываем файл в Iaito, оставляем настройки анализа по умолчанию:

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

После того, как Radare2 проанализирует файл, смотрим результат, открывшийся во вкладке Dashboard:

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Программа скомпилирована под 64-битную версию Linux, написана на языке C. Слева мы видим список функций, которые Radare2 смог обнаружить. Среди них импортируемые из библиотеки libc функции printf, puts и putchar, выводящие на экран строку по формату и символ.

Функция main – это главная функция программы. Выполнение начинается с неё. Кликнув два раза по её названию, открывается вкладка Disassembly с результатом её дизассемблирования:

Немного про Ассемблер

Команды ассемблера

Каждая команда Ассемблера — это команда для процессора. Синтаксис команды состоит из нескольких частей:

Или рассмотрим другой пример как выглядит возведение числа в степень в Ассемблере:

Это же действие будет выглядеть на языке высокого уровня, например, Си как:

Вернемся к нашему заданию

Для большего понимания логики выполнения программы можно переключиться на вкладку Graph внизу окна. Там мы увидим блоки команд функции, в которой мы находимся, и переходы между ними, построенные Radare2 на основе команд условных и безусловных переходов.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Масштабирование на этой вкладке выполняется сочетаниями клавиш Ctrl+»-» и Ctrl+»+». Можно было бы начать разбираться в работе программы уже с этого места, но есть возможность посмотреть на программу в ещё более “читаемом” виде. Переключаемся на вкладку Decompiler, внизу окна и видим псевдокод, полученный в результате декомпиляции (восстановление до кода на языке, на котором программа была написана, в нашем случае – язык C) средствами встроенного декомпилятора Radare2.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

В полученном тексте всё ещё много упоминаний регистров и безусловных переходов. Переключимся на декомпилятор Ghidra, который мы ранее установили. Для этого в правом нижнем углу окна в выпадающем списке выберем “pdg” вместо “pdc”.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Теперь код программы стал практически полностью читаем, за исключением имён переменных.

В коде мы видим, что сначала выводится строка “Token:”, после чего происходит вызов некой функции с двумя параметрами, после которого идёт цикл с переменной var_8h, которая проходит значения от 0 до 14 включительно и выводит что-то посимвольно, основываясь на адресе памяти 0x5020 и счётчике с множителем 8. Из этого можно сделать вывод, что в памяти, начиная с адреса 0x5020, расположен массив структур из 15 значений размером 8 байт. Также стоит обратить внимание, что адрес 0x5020 передавался в качестве первого параметра в функцию, вызываемую перед этим циклом. Будем для простоты далее называть его “токен”. Далее по коду выводятся строки начала закрытого ключа и в цикле выводится посимвольно закрытый ключ. Внутри цикла вывода ключа идёт повторяющийся цикл по обнаруженному нами ранее массиву структур, используя переменную var_ch. Перед выводом на экран над каждым символом закрытого ключа производится операция исключающего ИЛИ (XOR) с текущим символом токена. После цикла выводится строка, завершающая закрытый SSH ключ. Исходя из того, что выводимый программой токен не является правильным, можно сделать вывод, что что-то происходит не так в ранее обнаруженной нами функции с двумя параметрами fcn.00001189, вызываемой перед выводом токена на экран. Перейдём на неё, дважды кликнув по названию функции в списке слева.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

В полученном после декомпиляции коде функции мы видим, что она представляет из себя двойной цикл с параметром, в котором после сравнения двух значений элементов структуры происходит их обмен местами, если одно значение меньше другого. Больше всего это похоже на алгоритм сортировки. В частности, на одну из реализаций сортировки “пузырьком”. Основываясь на информации об алгоритме сортировки “пузырёк” и полученном нами коде, можно сделать вывод, что условие выхода из вложенного цикла написано с ошибкой. Проход осуществляется не до конца массива структур.

Получается, нужно это исправить. Переключимся на вкладку дизассемблера:

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

В полученном коде мы видим только одну команду вычитания 8:

Переключимся в режим графа, чтобы соотнести ассемблерный код с результатом декомпиляции:

Представление в виде графов

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Проанализировав логику переходов и соотнеся её с ассемблерным кодом подтверждаем, что нас интересует именно эта область функции.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Для этого, находясь на вкладке дизассемблера, поставим курсор на эту команду и переключимся на вкладку Hexdump:

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

По относительному адресу команды 0x00001211 убеждаемся, что курсор стоит там, где необходимо. Выделяем 4 байта, начиная с адреса 0x00001211 и справа выберем вкладку “Parsing”. Увидим результат дизассемблирования выделенных байт.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Теперь нужно заменить выделенные байты на 4 байта со значением 90 (шестнадцатиричное значение машинного кода команды nop), но тут мы сталкиваемся с тем, что в Iaito нельзя просто так отредактировать шестнадцатиричное значение по адресу. Список доступных действий мы можем увидеть, нажав на выделенных байтах правую кнопку мыши.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Да, можно воспользоваться сторонним hex-редактором, но это было бы “неспортивно”. Так как мы пробуем выполнить все действия только в рамках функционала Radare2, то будем использовать что есть.

Сначала выберем “Write zeros”. Iaito напомнит нам, что файл открыт в режиме “только для чтения” и предложит переоткрыть его либо в режиме для записи, либо включить режим кэширования. В режиме кэширования все изменения к исходному файлу будут применяться только после выбора пункта меню “File → Commit changes”.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Выберем режим кэширования, после чего снова попытаемся записать нули. И теперь это у нас получается. На каждом из четырёх байт выберем из контекстного меню пункт “Edit → Increment/Decrement” и добавим значение 144 (десятичную запись шестнадцатиричного числа 90).

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Смотрим на получившийся результат:

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

После внесения изменений не забываем нажать “File → Commit Changes”. Запускаем ещё раз программу dechip, чтобы посмотреть результат наших действий:

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Стоит отметить, что часть наших действий основывалась на предположениях. И не всегда они подтверждаются так быстро и успешно. Для гарантированного успеха нужно более глубоко изучать язык Ассемблера той архитектуры процессоров, реверсом программ для которой Вы хотите заниматься, а также наиболее распространённые алгоритмы.

Заключение

В целом, бесплатный аналог IDA Pro в лице Radare2 является довольно неплохим решением. Однако, официальный GUI Radare2 хоть и позволяет удобно перемещаться между инструментами Radare2 и в части отображения информации удобнее консольной версии, но в то же время он ещё недостаточно доработан и не предоставляет всех возможностей, которые можно реализовать через консоль. Со всеми возможностями консольной версии можно ознакомиться в официальной книге по Radare2.

Что касается обратной разработки, то он оказался совсем не страшным и даже при начальном уровне знания языка Ассемблер можно разбираться в устройстве какого-нибудь простенького приложения. А в Корпоративных лабораторияx Pentestit можно попробовать свои силы не только в реверс-инжинеринге бинарных файлов, но и в деассемблировании Android/IOS приложений.

Источник

Реверс-инжиниринг. История. Моя

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

На этот раз статья будет не технической (хотя в ней и будут попадаться какие-то технические термины/моменты), а скорее автобиографической, если так можно выразиться. Эта статья о том, как я докатился до такой жизни пришёл в реверс-инжиниринг, что читал, чем интересовался, где применял, и т.д. И, я почему-то уверен, что моя история будет иметь множество отличий от твоей. Поехали.

Начало

А начиналось всё ещё в далёком детстве. Думаю, как и многим парням (а может и девушкам), мне всегда было интересно знать, как же всё устроено, почему работает, почему не работает, и т.д.
Сначала я начал разбирать все машинки на батарейках, которые у меня были (даже те, что были у брата). Конечно, не всегда удавалось собрать, но, интерес был превыше. Потом нашёл какой-то старый радиоприёмник-магнитофон у отца в кладовке, и разобрал его тоже. Ещё были тамагочи. Но там я вообще ничего не мог понять: микросхема, «капля» и экран. Хотя да, экран я разбирал на слои.
Конечно же, за всё несобранное я получал по шапке.

Sega Mega Drive

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Отец купил мне её на день рождения: обычная пиратка, ибо лицензионных тогда не было, плюс картридж » Contra: Hard Corps «. Уверен, момент покупки приставки для многих детей 90-х не забыт до сих пор (ромхакеры и ретрогеймеры — привет!), а именно для меня он стал ещё и ключевым в будущем. Но обо всём по-порядку.

11-й класс

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

(прим. автора: тот самый компьютер, только куда позднее)

Осенью 2005-го года мне купили компьютер. С первых дней я начал играть в игры. Учёба в школе просела, но держалась на нормальном для гимназии уровне. А спустя полгода играть надоело. Тогда и свершился переломный момент!

Негеймер

Именно тогда, в 2006 году, как мне кажется, начался варезный бум. Куча сайтов с кряками, кейгенами, патчами. Каждый старался перепаковать инсталлятор так (привет сборкам Винды), чтобы скачавшему ничего лишнего делать не нужно было: установилось и работает, правда иногда добавляя что-то от себя.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Переводчик

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

cracklab.ru

Скачал для экспериментов себе парочку «крэкмисов» (программы, специально написанные для того, чтобы их реверсили, обучаясь при этом взлому и защите ). Попробовал — очень понравилось! Всё получилось с первого раза, чему я был несказанно рад.

В итоге, простые защиты снимались на раз-два с помощью патчинга (от слова patch — заплатка), а вот с теми, что посложнее (я решил попробовать эротические шашки и поддавки) как-то уже стало тяжело, и я остановился, решив вернуться к переводам.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Ромхакинг

Иногда играя в Сегу, мне попадались картриджи на русском языке, на титульных экранах игр которых были такие надписи как «Группа перевода SHEDEVR «, «Перевод NEW-GAME.RU «. Разработчики ли это, или же какие-то сторонние организации я не знал, но у них явно был доступ к каким-то манускриптам, древним текстам шумеров, в которых рассказывалось, как переводить игры на русский язык. И мне захотелось овладеть этими знаниями.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжинирингЧто такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Так я открыл для себя форум «Шедевра«.

У них были статьи, были программы — всё необходимое для того, чтобы сделать твою любимую игру ещё и «твоей любимой игрой на русском языке«. Правда, статьи были только для NES (Nintendo Entertainment System, или по-народному: Денди, Сюбор). Но всё равно круто! И я погрузился в новые и увлекательные для себя темы: Ромхакинг и эмуляция ретро-консолей на ПК.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Если вкратце, то ромхакинг — это любое изменение образа или файла игры, с какой либо целью: перевод, исправление кода, графики.

Это был очень занимательный процесс: сидишь, перерисовываешь квадратики игрового шрифта пиксель за пикселем, переводишь и вставляешь с помощью программы для перевода PokePerevod текст, и смотришь что получилось. Правда, никакого тебе ассемблера, только хардкор! Но это уже было планкой, через которую очень немногие могли перепрыгнуть (судя по количество активных на форуме Шедевра).

Я учитель

Сделав какие-то переводы «в стол», а какие-то и в народ, я вернулся к исполняемым файлам Windows. Ещё немного поднаторев в ассемблере, я понял, что «секретных» знаний во мне теперь чересчур много, и мне есть что рассказать из своего опыта, есть чем поделиться, и что ещё не было описано в имеющихся статьях. Хотелось передавать знания таким же новичкам, каким я был сам (видимо, сказывается то, что мама — учитель).

Взяв первую попавшуюся программу, которая требовала лицензию (а практически все статьи, обучающие крякингу, так и начинались), я решил исследовать её, параллельно рассказывая что я делаю. Тогда не будет казаться, что программа взята специально старой версии, давно изученная, поломанная, а получится наоборот такой себе свежий и актуальный урок, со скриншотами и практически без абсолютных адресов, чтобы хоть как-то сохранить актуальность статьи на момент чтения кем-либо в будущем.

Получив положительные отзывы, я писал ещё и ещё, понимая, что спрос есть.

Инструменты

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

А в универах учат реверсу?

Если в двух словах, то в Беларуси с этим туго, и, насколько я знаю, в России и Украине тоже. Почему? Да потому что специалисты этой профессии обычно нужны в одной с половиной организации, и, обычно, полтора человека. Собственно, и преподавателей не так много.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Да, ассемблеру, конечно, учат, даже в некоторых колледжах. Только студент, глядя на написанный ассемблерный листинг, вряд ли даже может осознать, что эти все регистры, операнды, опкоды хоть как-то связаны с информационной защитой, эксплоитами, кряками, кейгенами, патчами, малварью, антивирусами, прошивками и т.д.

Например, в Беларуси я знаю только два-три места, куда требуются реверс-инженеры. В России, конечно, ситуация получше, но, специалистов также немного.

Первая работа

В одну из этих фирм я и решил пойти работать вирусным аналитиком, понимая, что, собственно, больше и некуда.
Реверсишь малварь, клепаешь сигнатуры, изучаешь принципы работы вредоносного ПО, пишешь расшифровщики для ransomware (если получается), попутно улучшаешь ядро.

В принципе, работа неплохая, но, лишь спустя время я осознал, что всяко ближе не наблюдать за тем, как малварь использует какие-то уязвимости, а самому их находить, быть первым в этом, помогая защищать информационный мир отправленными разработчикам отчётами.

Другой ассемблер

Однажды я узнал, что кроме ассемблерного кода Intel (16-, 32-, 64-битного) бывает и другой, по-началу кажущийся совершенно непохожим на тот, что ты знаешь. Это произошло в тот момент, когда я добрался до перевода своей любимой игры — » Thunder Force III «, в которую брат играл лучше меня.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Ресурсы в ней оказались сжатыми каким-то неизвестным упаковщиком, т.к. я не смог найти шрифт ни одним тайловым редактором (именно в таких программах чаще всего и перерисовывают игровые буковки, что выводятся на экран).

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

P.S. Thunder Force III я так и не перевёл, но написал редактор уровней к ней.

Sony Playstation

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Обратное мышление и первый кейген

Знаете, что тогда стало для меня настоящим испытанием? Имея на руках лишь ассемблерный листинг кода, который распаковывает что-либо, написать к нему упаковщик. Здесь потребовалось выработать обратное мышление, которое практически не требовалось во время патчинга «крэкмисов«, и излечивания программ от жадности.

Я пытался идти от обратного, понимая, что должно быть на выходе, на входе, и какие байты сжатых данных за что отвечают, чтобы сделать такие же.

Написав ещё множество утилит для кучи игр по распаковке и упаковке данных, я осознал, что готов написать свой первый кейген, т.к. уже научился мыслить от обратного.

Не помню, что это была за программа, но кейген удался, и из имени пользователя я смог получать всегда правильный серийный номер. О чём также поведал в статье.

Статья о кейгене

А вот писать статью о кейгене было тяжело. Тяжелее написания кейгена. Т.к. в статье передать принцип обратного мышления довольно таки сложно. Как и всё, что приходит с опытом.

Крякерские команды

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Поначалу, если ты, как и я, пришёл в реверс самоучкой, ты реверсишь один, для себя (либо в народ, это как пойдёт). И тебя это устраивает. Но, потом ты натыкаешься на какой-нибудь релиз крякерской команды (это те, что выкладывают взломанный софт с кряками и кейгенами), и решаешь присоединиться к ним. Там и силы свои можно будет сравнить с другими людьми, и заодно набраться от них опыта.

Собравшись с духом, пишешь письмо, с просьбой присоединиться. Высылают задание в виде кейгенми. Решаешь его, после чего тебе дают доступ в чатик команды.

На самом деле, не все из них реверсеры. Кто-то художник, кто-то умеет доставать платный софт, у кого-то вычислительные мощности (возможность факторизовать любой публичный ключ RSA-512 за два дня, на 2013-й год, если это требовалось для снятия лицензионной защиты). В общем, преимущества налицо. Но софт для релиза всё равно выбираешь сам, чаще всего. И денег за релизы не получаешь. Правда.

Проблемы с законом?

Да, за распространение кряков и кейгенов всё таки есть вероятность загреметь (особенно если программа популярная и стоит много денег). В любой момент может произойти контрольная закупка: тебе напишет дядя, который хочет «взломать Adobe / 1C Бухгалтерия сколька будит стоеть» (реальная история). Но ребята хотят выживать, особенно если работы нет, а «навык«-то применять хочется, не важно пока куда. И начинают идти на крайности.

… барыжат ломаным софтом, взламывают программы за деньги.

И, в тот момент, когда появляется желание жить честно, крякер идёт устраиваться на работу, там откапывают его прошлое, и — «Извините, но Ваше прошлое сыграло не в Вашу пользу!«. Хотя, с моей позиции, человека с таким опытом стоит брать с руками и ногами, ведь, во первых, вы даёте человеку возможность исправиться, и, во вторых, направляете его знания в правильное русло. Среди моих знакомых действительно есть примеры успешного трудоустройства в антивирусную область, где товарищ на собесе сказал, что взламывал программы на заказ.

Честно заработанный лицензионный ключ

Да, и такое бывает. Даже у крякера. Были где-то статейки о том, как выпросить у разработчика ключ. И я так пробовал делать. Не помогало.

Тогда я перевёл программу на белорусский язык, и отправил автору языковой файл. За что получил в ответ лицензионный ключ на своё имя! Мой первый лицензионный ключ.

Что такое обратный инжиниринг. Смотреть фото Что такое обратный инжиниринг. Смотреть картинку Что такое обратный инжиниринг. Картинка про Что такое обратный инжиниринг. Фото Что такое обратный инжиниринг

Что дальше?

Наигравшись в пирата, постепенно приходишь к тому, что работа у тебя есть, зарплата стабильная, дело любимое делаешь, а значит пора завязывать с нехорошими вещами.

Ещё бывают реверс-инженеры хардварщики (те, что железо реверсят), но о них я знаю мало. Хотя, тема очень даже интересная. Я же больше по программной части.

Нирвана

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *