Халява Reverse engineering by destroy⭐

lublukotov123
lublukotov123

lublukotov123

Просветленный
badge За шикарный аватар!
Регистрация
22/03/2025
Сообщения
13
Репутация
2
За авторством t.me/doxbotlist
Ревёрс-инжиниринг

Что такое ревёрс-инжиниринг вообще?​



Представим что вы программист, и вас есть задача узнать как работает прототип какой либо программы, но у вас есть только файл в формате ехе.​

Будет не просто решить если вы будете размышлять в парадигме "прямой" разработки. Она состоит из:



  1. Человек пишет код на понятном для него языке - например, Java, Python или C#;
  2. затем он передает файл компилятору, который превращает код из понятного для человека в бинарный файл - чтобы его мог прочитать компьютер;
  3. Пользователь скачивает скомпилированную программу - например, в вышеупомянутом формате EXE и запускает её на компьютере.
Бинарный файл(исполняемый файл) это набор нулей и единиц, тоесть код который понимает наша машина.



Именно для этого и придумали ревёрс-инжиниринг!​



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

Как это работает?​



  1. Сначало разработчик получает исполняемый файл, который понимает только компьютер;
  2. затем он пропускает этот файл через специальную программу и превращает в код на знакомом ему языке программирования;
  3. Дальше человек изучает этот файл и пытается разобраться во внутреннем устройстве и работе программы.

Так выглядит код программы которая прошла через ревёрс-инжиниринг:​

Reverse engineering by destroy⭐



Приведу ещё пару примеров где полезна обратная разработка:

  • Разработка модов для игр. В видеоиграх обратная разработка позволяет создавать модификации для игр и изменять игровой процесс: добавлять новые функции и контент. Например, таким образом создавались моды для игр The Elder Scrolls V: Skyrim и Grand Theft Auto 5.
  • Изучение старых технологий. Иногда бывает, что оригинальная документация для приложения утеряна либо программа написана для старых компьютеров, которые больше не производятся. Поэтому разработчикам приходится с нуля воссоздавать код приложений.

Мы разобрались с вами о том, что такое ревёрс-инжиниринг. Теперь разберем способы как она именно происходит​



  1. Перевести бинарный файл в код на языке высокого уровня. Для этого существуют специальные программы -дизассемблеры. Они понимают, как устроен машинный код, и без проблем могут перевести его на удобный для нас язык программирования-например, C++. Но единственный минус работы дизассемблера в том, что в готовом коде часто нет названий переменных и комментариев, поэтому после процедуры разработчику нужно будет довольно долго разбираться, за что отвечают отдельные блоки кода.
  2. Перевести бинарный файл в код на языке ассемблера. Ассемблер - язык более высокого уровня, чем машинный код, но гораздо более низкого, чем привычные нам JavaScript и Python. Любой процессор умеет работать с ассемблером, поэтому для компьютера этот способ расшифровки бинарного файла - самый простой. Чтобы прочитать код, написанный на ассемблере, нужно разбираться в том, как устроен процессор.
  3. Изучить, какие данные программа пересылает по Сети или внутри компьютера. Обычно программы обмениваются данными по интернету или внутри операционной системы. Поэтому, чтобы понять, как устроена программа, ревёрс-инженеры используют специальные сетевые анализаторы. Существует сетевой анализатор, встроенный прямо в Хром. Чтобы его открыть, нужно зайти в инструменты разработчика нажав F12 и перейти на вкладку «Network».

    Reverse engineering by destroy⭐


Это файлы, которые скачивает браузер при открытии какого либо сайта. Все это - картинки и иконки

Теперь, когда мы знаем основные способы обратной разработки, давайте перейдём к самому процессу - этапам ревёрс-инжиниринга. Всего их четыре.​

  1. Для начала нам стоит "попробовать программу". Провести предварительное исследование. Сначала нужно внимательно изучить программу: понажимать все кнопки, попользоваться всеми функциями. Это поможет составить цельную картину того, как работает приложение.
  2. Начать разборку. Теперь мы должны посмотреть внутрь программы и узнать, как она устроена. Для этого как раз применяем один из способов обратной разработки, а затем изучаем полученный код.
  3. Провести анализ. Когда мы разобрались, какие в программе есть алгоритмы и структуры данных, пора собирать всё вместе. Мы изучаем все части и пытаемся понять, как они работают вместе. Например, смотрим, в какой последовательности выполняются методы в коде.
  4. Далее остаётся всего лишь задокументировать функциональность. Нужно записать,что делают функции, какие переменные они принимают и куда отправляют данные.

Как освоить ревёрс-инжиниринг: самые первые шаги​

Попробуйте изучить обратную разработку на ваших проектах, либо же решить задачу на специальных сайтах - возьмём в пример Crackmes

Так же программ для реверс энжиринга тоже уйма, тот же всеми знакомый Cheat engine. Вообще, это программа для обратной разработки, но она чаще всего используется у пользователя для накрутки игровой валюты где-нибудь GTA.
Reverse engineering by destroy⭐




Cheat Engine
Дополнительные программы для реверс энжиринга:

IDA pro

Ghidra

x64dbg


И последний этап, практика:​

  1. В качестве примера покажу, как выглядит обратная разработка в программе IDA Pro. Напишем код «Hello, World» на C++, скомпилируем его и попробуем расшифровать с помощью приложения.
    Reverse engineering by destroy⭐


Пишем наш код в среде Visual Studio Code
Открываем программу IDA Pro и видим первый экран. Здесь нажимаем кнопку «New», чтобы начать процесс дизассемблирования:
Reverse engineering by destroy⭐




Дальше нужно загрузить файл в программу. На выбор есть два варианта - формат DLL или бинарный файл. У меня будет пример на файле DLL

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

Reverse engineering by destroy⭐




Сначала мы попадаем на вкладку «IDA View-A». Это место, где находится код языка ассемблера нашей переведённой программы. Если приглядеться, то можно увидеть строчку lea rdx, _Val ; "Hello, World". Она показывает, что мы что-то делаем со строкой «Hello, World» - а точнее, вывести её в консоль. Но это очевидно для нас, потому что программа простая. Если бы тут был, скажем, код операционной системы Windows, или какой либо GTA V, то мы бы думали очень долго.

Теперь надо посмотреть что находится в других вкладках программы:
Reverse engineering by destroy⭐




Вкладка «Hex View 1». Тут дизассемблированный код представлен в виде шестнадцатеричных - то есть понятных для компьютера - символов. Если понимать язык нулей и единиц, отсюда можно достать полезную информацию - например, найти повторяющиеся команды или какие-нибудь интересные данные.

Кстати, стоит обратить внимание на функции слева. Они тоже могут дать уйму полезной информации:
Reverse engineering by destroy⭐




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



Следующая вкладка - «Structures».

Reverse engineering by destroy⭐




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

Итог:​

Работа непростая - но невероятно полезная. А ещё за это платят неплохие деньги.
 

Создайте учетную запись или войдите, чтобы комментировать или скачивать материалы!

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

Зарегистрироваться

Создайте учетную запись. Это просто!

Авторизоваться

У вас уже есть аккаунт? Войдите здесь.

Похожие темы

MrShu
Ответы
0
Просмотры
1K
MrShu
MrShu
Vasya01
Ответы
0
Просмотры
313
Vasya01
Vasya01
MrShu
Ответы
3
Просмотры
1K
vlada1
Cain
Ответы
0
Просмотры
205
Cain
Cain
Малыш Джон
Ответы
0
Просмотры
1K
Малыш Джон
Малыш Джон
Малыш Джон
Ответы
0
Просмотры
982
Малыш Джон
Малыш Джон
Малыш Джон
Ответы
0
Просмотры
887
Малыш Джон
Малыш Джон
Малыш Джон
Ответы
0
Просмотры
1K
Малыш Джон
Малыш Джон
Малыш Джон
Ответы
1
Просмотры
1K
Shureeken
Shureeken
Сверху Снизу