В следующие 15 минут я научу вас обратному инжинирингу двоичных файлов. К концу этого видео вы сможете анализировать двоичные файлы с помощью Ida. Вам не нужен опыт программирования или кибербезопасности. Давайте начнем!

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

Один из методов, который мы можем использовать, — это команда «strings». Он ищет в двоичном коде строки ASCII из пяти или более символов и печатает их. Хотя это дает нам некоторую информацию, оно не раскрывает пароль или логику, стоящую за ним. Нам нужно углубиться в машинный код.

Мы можем использовать дизассемблер, такой как «objdump», чтобы разобрать двоичный файл на удобочитаемые инструкции по сборке. Однако в нем отсутствует четкая визуализация графа потока управления, что затрудняет понимание операторов if и ветвления в коде.

Чтобы преодолеть это ограничение, мы можем использовать более мощный дизассемблер, такой как Ida. Установите Ida и импортируйте бинарный файл. Ида разберет бинарник и даст четкий обзор инструкций по сборке. Теперь мы можем начать читать ассемблерный код.

Понимание двоичного ABI (абстрактного двоичного интерфейса) имеет решающее значение. Он определяет соглашение между компилятором и процессором относительно регистров и передачи данных. Например, аргументы передаются в определенных регистрах, таких как RDI и RSI, а возвращаемые значения — в RAX.

Анализируя ассемблерный код, мы можем определить важные функции и символы. Мы можем переименовать метки, чтобы сделать код более читабельным. Например, мы можем определить буфер, в котором хранится пароль.

IDA позволяет нам перемещаться по функциям и проверять их ассемблерный код. Мы можем видеть вызовы библиотечных функций, таких как «puts» и «printf». Изучая ассемблерный код, мы можем понять логику программы и определить условия и ответвления.

Мы можем найти функцию «get_password» и проанализировать ее ассемблерный код. Следуя инструкциям, мы можем вывести пароль. В данном случае это «can_ya_dig_it?»

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

Я рекомендую попробовать этот процесс самостоятельно, выполнив шаги, используя предоставленную Ida и двоичный файл на моем GitHub. Это отличный способ научиться обратному инжинирингу на практике.

Надеюсь, вам понравилось это введение в двоичный реверс-инжиниринг. Получайте удовольствие, исследуя увлекательный мир реверс-инжиниринга!