Обычному программисту, которому нужно только, чтобы скомпилированная программа работала, интересен собственно исходный код. Но хакер понимает, что в реальности выполняется именно скомпилированная программа. Хорошо разбираясь в работе ЦП, хакер может манипулировать программами, которые на нем выполняются. Мы видим исходный код своей первой программы и компилируем его в исполняемый двоичный файл для архитектуры x86. Но как выглядит этот двоичный файл? Среди инструментов разработчика GNU есть программа под названием objdump, с помощью которой можно изучать скомпилированные двоичные файлы...
Ибрагим Данилов
Большинство программистов, даже выучив язык от корки до корки, никогда не достигнут большего
Хорошо, все эти важные основы на уровне начального курса программирования. В большинстве вводных курсов по программированию учат, как читать и писать на C. Но поймите меня правильно: свободно владеть C очень полезно и этого достаточно, чтобы считать себя программистом, но это лишь часть более общей картины. Большинство программистов, даже выучив язык от корки до корки, никогда не достигнут большего. Преимущество хакеров в том, что они понимают, как взаимодействуют между собой все части общей картины...
Первая строка программы может озадачить
Выполнение C-программы начинается с главной функции, которую так и называют – main(). Текст после двух косых линий (//) является комментарием, компилятор его игнорирует. Первая строка программы может озадачить, но это всего лишь синтаксис C, с помощью которого компилятору сообщают о необходимости включить заголовки для библиотеки стандартного ввода/вывода имя которой – stdio. Этот заголовочный файл будет добавлен в программу во время компиляции. Его полное имя /usr/include/stdio.h, и в нем определены некоторые константы и прототипы функций, находящихся в стандартной библиотеке ввода/вывода...
Обычно в псевдокоде не используют функции
Обычно в псевдокоде не используют функции, потому что псевдокод служит в основном для создания эскиза программы перед тем, как писать код, который можно компилировать. Поскольку псевдокод реально не будет работать, полностью писать функции не требуется – достаточно отметить что-то вроде «Сделать здесь какую-то сложную вещь». Но в языках программирования, таких как C, функции используются весьма интенсивно. Немалую долю реальной полезности C составляют наборы готовых функций, называемые библиотеками...
Обычно прототипы функций размещаются в начале программы
Обычно прототипы функций размещаются в начале программы. Объявлять какие-либо переменные в прототипе не нужно, потому что это делается в фактической функции. Единственное, что нужно компилятору, это имя функции, тип возвращаемых ею данных и типы данных ее аргументов. Если функция не должна возвращать никакого значения, как, скажем, функция повернуть() в предшествующем примере, ее следует объявить с типом void. Однако функция повернуть() еще не охватывает все действия, необходимые для проезда по маршруту...
