Найти в Дзене
Ибрагим Данилов

Но хакер понимает, что в реальности выполняется именно скомпилированная программа

Обычному программисту, которому нужно только, чтобы скомпилированная программа работала, интересен собственно исходный код. Но хакер понимает, что в реальности выполняется именно скомпилированная программа. Хорошо разбираясь в работе ЦП, хакер может манипулировать программами, которые на нем выполняются. Мы видим исходный код своей первой программы и компилируем его в исполняемый двоичный файл для архитектуры x86. Но как выглядит этот двоичный файл? Среди инструментов разработчика GNU есть программа под названием objdump, с помощью которой можно изучать скомпилированные двоичные файлы. Начнем с того, что посмотрим с ее помощью машинный код, в который была транслирована функция-вход grep с параметром, задающим вывести только 20 строк после регулярного выражения main.:. Байты представлены в шестнадцатеричной системе счисления, основание которой – 16. Нам более привычна десятичная система, поэтому начиная с 10 нужны дополнительные символы. В шестнадцатеричной системе цифры от 0 до 9 п

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

Хорошо разбираясь в работе ЦП, хакер может манипулировать программами, которые на нем выполняются. Мы видим исходный код своей первой программы и компилируем его в исполняемый двоичный файл для архитектуры x86. Но как выглядит этот двоичный файл?

Среди инструментов разработчика GNU есть программа под названием objdump, с помощью которой можно изучать скомпилированные двоичные файлы. Начнем с того, что посмотрим с ее помощью машинный код, в который была транслирована функция-вход grep с параметром, задающим вывести только 20 строк после регулярного выражения main.:. Байты представлены в шестнадцатеричной системе счисления, основание которой – 16.

Нам более привычна десятичная система, поэтому начиная с 10 нужны дополнительные символы. В шестнадцатеричной системе цифры от 0 до 9 представлены теми же цифрами от 0 до 9, а числа от 10 до 15 – буквами от A до F. Это удобная система обозначений, потому что в байте 8 бит, каждый из которых может иметь значение 1 (истина) или 0 (ложь). То есть один байт имеет 256 (28 ) возможных значений и может быть описан двумя шестнадцатеричными цифрами