Обратная разработка (англ. Reverse Engineering) - метод исследования устройств или программного обеспечения с целью понять принцип его работы или обнаружить недокументированные возможности. В информационной безопасности она занимает значительную роль, благодаря ей специалисты в области ИБ могут исследовать вредоносные приложения, разбираться как они работают для последующего, например, составления сигнатур в базы антивирусов и защиты других пользователей от предстоящей цифровой угрозы.
Выделяют 4 методики проведения обратной разработки:
:exclamation:️ Пиратство в России незаконно. За него суд может назначить штраф до 200 тысяч рублей, до двух лет исправительных работ или лишить свободы на срок до двух лет. А за распространение, использование и создание вредоносного ПО — до семи лет. Поэтому не занимайтесь взломом — занимайтесь кибербезопасностью.
Лучше всего изучить обратную разработку на своих проектах или решать задачи на специальных сайтах — например, на Crackmes. Так вы сможете вполне легально прокачать свои навыки.
Программ для ревёрс-инжиниринга достаточно. Некоторые из них могут быть вам знакомы — например, Cheat Engine. Вообще, это программа для обратной разработки, но она также позволяет накрутить игровой валюты где-нибудь в Sims или GTA.
Вот ещё список программ:
Давайте в качестве примера покажем, как выглядит обратная разработка в программе IDA Pro. Напишем код «Hello, World» на C++, скомпилируем его и попробуем расшифровать с помощью приложения.
Так выглядит код программы в среде разработки Visual Studio Code
Открываем программу IDA Pro и видим первый экран. Здесь нажимаем кнопку «New», чтобы начать процесс дизассемблирования:
Видите — ничего сложного пока нет. Просто нажимаем кнопку «New»
Дальше нам нужно загрузить файл в программу. На выбор есть два варианта — формат DLL или бинарный файл. Нам нужен первый:
Остальные настройки оставьте по умолчанию. Они нам пока не пригодятся
Готово — вот как выглядит наш дизассемблированный файл. Можно поизучать его и понять, из каких элементов он вообще состоит.
Так выглядит файл, который прошёл обратную компиляцию, или дизассемблирование
Сначала мы попадаем на вкладку «IDA View-A». Это место, где находится код языка ассемблера нашей переведённой программы. Если приглядеться, то можно увидеть строчку lea rdx, _Val ; "Hello, World". Она показывает, что мы что-то делаем со строкой «Hello, World» — а точнее, пытаемся вывести её в консоль. Но это очевидно для нас, потому что программа простая. Если бы тут был, скажем, код операционной системы Windows, то мы бы думали очень долго.
Давайте посмотрим, что находится в других вкладках ?
Это вкладка «Hex View 1». Тут дизассемблированный код представлен в виде шестнадцатеричных — то есть понятных для компьютера — символов. Если понимать язык нулей и единиц, отсюда можно достать полезную информацию — например, найти повторяющиеся команды или какие-нибудь интересные данные.
Кстати, обратите внимание на функции слева. Они тоже могут дать много полезной информации:
Например, по этим функциям можно понять, какие системные вызовы делает программа. Правда, имена этих вызовов не вполне очевидны, поэтому часто приходится гуглить, зачем они нужны.
Переходим на следующую вкладку — «Structures».
Здесь можно подробнее исследовать, как устроены структуры данных в программе. Например, тут показано, какие классы вызываются, какие типы переменных они используют и какие исключения обрабатывают. Сложно, зато познавательно.
Пару книжек полезных:
Бэкап перевода Яши с wasm.in цикла статей "Введение в реверсинг с нуля, используя IDA PRO" от Рикардо Нарвахи
Запас https://yutewiyof.gitbook.io/intro-rev-ida-pro
Reversing для начинающих
Вскрытие покажет! Практический анализ вредоносного ПО
Выделяют 4 методики проведения обратной разработки:
- анализ обмена данными приложения, с помощью различных анализаторов трафика;
- использование режима отладки для поиска нужных участков кода и просмотра данных с которыми работает приложение;
- дизассемблирование машинного кода программы (изучение требует довольно много времени);
- декомпиляция кода программы для создания исходного кода программы на языке программирования высокого уровня.
:exclamation:️ Пиратство в России незаконно. За него суд может назначить штраф до 200 тысяч рублей, до двух лет исправительных работ или лишить свободы на срок до двух лет. А за распространение, использование и создание вредоносного ПО — до семи лет. Поэтому не занимайтесь взломом — занимайтесь кибербезопасностью.
Лучше всего изучить обратную разработку на своих проектах или решать задачи на специальных сайтах — например, на Crackmes. Так вы сможете вполне легально прокачать свои навыки.
Программ для ревёрс-инжиниринга достаточно. Некоторые из них могут быть вам знакомы — например, Cheat Engine. Вообще, это программа для обратной разработки, но она также позволяет накрутить игровой валюты где-нибудь в Sims или GTA.
Медиа заблокировано
Этот домен не входит в список разрешённых для медиа.
Формат: изображения / GIFДомен:
skillbox.ruРазрешённые домены
imgur.comru.imgbb.comprnt.scimgbb.comibb.coi.imgur.comi.ibb.codarklimb.vipi.pinimg.comimg3.teletype.inimg4.teletype.inteletype.inpikabu.rucs15.pikabu.ruimg2.teletype.inlh7-rt.googleusercontent.comduty-files.ccblogger.googleusercontent.com
Вот ещё список программ:
Давайте в качестве примера покажем, как выглядит обратная разработка в программе IDA Pro. Напишем код «Hello, World» на C++, скомпилируем его и попробуем расшифровать с помощью приложения.
Медиа заблокировано
Этот домен не входит в список разрешённых для медиа.
Формат: изображения / GIFДомен:
skillbox.ruРазрешённые домены
imgur.comru.imgbb.comprnt.scimgbb.comibb.coi.imgur.comi.ibb.codarklimb.vipi.pinimg.comimg3.teletype.inimg4.teletype.inteletype.inpikabu.rucs15.pikabu.ruimg2.teletype.inlh7-rt.googleusercontent.comduty-files.ccblogger.googleusercontent.com
Так выглядит код программы в среде разработки Visual Studio Code
Открываем программу IDA Pro и видим первый экран. Здесь нажимаем кнопку «New», чтобы начать процесс дизассемблирования:
Медиа заблокировано
Этот домен не входит в список разрешённых для медиа.
Формат: изображения / GIFДомен:
skillbox.ruРазрешённые домены
imgur.comru.imgbb.comprnt.scimgbb.comibb.coi.imgur.comi.ibb.codarklimb.vipi.pinimg.comimg3.teletype.inimg4.teletype.inteletype.inpikabu.rucs15.pikabu.ruimg2.teletype.inlh7-rt.googleusercontent.comduty-files.ccblogger.googleusercontent.com
Видите — ничего сложного пока нет. Просто нажимаем кнопку «New»
Дальше нам нужно загрузить файл в программу. На выбор есть два варианта — формат DLL или бинарный файл. Нам нужен первый:
Медиа заблокировано
Этот домен не входит в список разрешённых для медиа.
Формат: изображения / GIFДомен:
skillbox.ruРазрешённые домены
imgur.comru.imgbb.comprnt.scimgbb.comibb.coi.imgur.comi.ibb.codarklimb.vipi.pinimg.comimg3.teletype.inimg4.teletype.inteletype.inpikabu.rucs15.pikabu.ruimg2.teletype.inlh7-rt.googleusercontent.comduty-files.ccblogger.googleusercontent.com
Остальные настройки оставьте по умолчанию. Они нам пока не пригодятся
Готово — вот как выглядит наш дизассемблированный файл. Можно поизучать его и понять, из каких элементов он вообще состоит.
Медиа заблокировано
Этот домен не входит в список разрешённых для медиа.
Формат: изображения / GIFДомен:
skillbox.ruРазрешённые домены
imgur.comru.imgbb.comprnt.scimgbb.comibb.coi.imgur.comi.ibb.codarklimb.vipi.pinimg.comimg3.teletype.inimg4.teletype.inteletype.inpikabu.rucs15.pikabu.ruimg2.teletype.inlh7-rt.googleusercontent.comduty-files.ccblogger.googleusercontent.com
Так выглядит файл, который прошёл обратную компиляцию, или дизассемблирование
Сначала мы попадаем на вкладку «IDA View-A». Это место, где находится код языка ассемблера нашей переведённой программы. Если приглядеться, то можно увидеть строчку lea rdx, _Val ; "Hello, World". Она показывает, что мы что-то делаем со строкой «Hello, World» — а точнее, пытаемся вывести её в консоль. Но это очевидно для нас, потому что программа простая. Если бы тут был, скажем, код операционной системы Windows, то мы бы думали очень долго.
Давайте посмотрим, что находится в других вкладках ?
Медиа заблокировано
Этот домен не входит в список разрешённых для медиа.
Формат: изображения / GIFДомен:
skillbox.ruРазрешённые домены
imgur.comru.imgbb.comprnt.scimgbb.comibb.coi.imgur.comi.ibb.codarklimb.vipi.pinimg.comimg3.teletype.inimg4.teletype.inteletype.inpikabu.rucs15.pikabu.ruimg2.teletype.inlh7-rt.googleusercontent.comduty-files.ccblogger.googleusercontent.com
Это вкладка «Hex View 1». Тут дизассемблированный код представлен в виде шестнадцатеричных — то есть понятных для компьютера — символов. Если понимать язык нулей и единиц, отсюда можно достать полезную информацию — например, найти повторяющиеся команды или какие-нибудь интересные данные.
Кстати, обратите внимание на функции слева. Они тоже могут дать много полезной информации:
Медиа заблокировано
Этот домен не входит в список разрешённых для медиа.
Формат: изображения / GIFДомен:
skillbox.ruРазрешённые домены
imgur.comru.imgbb.comprnt.scimgbb.comibb.coi.imgur.comi.ibb.codarklimb.vipi.pinimg.comimg3.teletype.inimg4.teletype.inteletype.inpikabu.rucs15.pikabu.ruimg2.teletype.inlh7-rt.googleusercontent.comduty-files.ccblogger.googleusercontent.com
Например, по этим функциям можно понять, какие системные вызовы делает программа. Правда, имена этих вызовов не вполне очевидны, поэтому часто приходится гуглить, зачем они нужны.
Переходим на следующую вкладку — «Structures».
Медиа заблокировано
Этот домен не входит в список разрешённых для медиа.
Формат: изображения / GIFДомен:
skillbox.ruРазрешённые домены
imgur.comru.imgbb.comprnt.scimgbb.comibb.coi.imgur.comi.ibb.codarklimb.vipi.pinimg.comimg3.teletype.inimg4.teletype.inteletype.inpikabu.rucs15.pikabu.ruimg2.teletype.inlh7-rt.googleusercontent.comduty-files.ccblogger.googleusercontent.com
Здесь можно подробнее исследовать, как устроены структуры данных в программе. Например, тут показано, какие классы вызываются, какие типы переменных они используют и какие исключения обрабатывают. Сложно, зато познавательно.
Пару книжек полезных:
Бэкап перевода Яши с wasm.in цикла статей "Введение в реверсинг с нуля, используя IDA PRO" от Рикардо Нарвахи
Не удалось прогрузить медиа
Initial page | Введение в реверсинг с нуля, используя IDA PRO
Не удалось прогрузить медиа
backlect.gitbook.io
Reversing для начинающих
Вскрытие покажет! Практический анализ вредоносного ПО
👍64
❤️14
👏11
🤔21
💯6
LIMB