• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Программирование для хакеров (Часть 2)

R

rrrFer

Тут начинали переводить статьи из цикла "программирование для хакеров": Введение. Ну а я продолжу. Однако, мой перевод будет невероятно вольным, а какие-то части я вообще могу пропустить, т.к. на мой взгляд, автор исходных статей много говорит не по теме. В фигурных скобках и курсивом мои {переводчика} примечания.

Шаг 1 Создание файла с кодом

Дождитесь загрузки операционной системы {в оригинале - Ubuntu}. Откройте любой текстовый редактор {на самом деле, подойдет не любой - нужен т.н. plain text editor - в Linux это, например kate и gedit, в Windows - notepad, notepad++}. Вставьте в него этот код:
Код:
#include <stdio.h>
int main()
{
        printf("Hello Null Byte!\n");
        return 0;
}
Результат будет выглядеть примерно так:
c-c-programming-for-hackers-part-2-the-history-c-and-coding-our-first-program.w1456.jpg

Шаг 2. Сохранение файла

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

Шаг 3. Компиляция файла

{Откройте терминал (в Windows - командную строку)}. Если вы сохранили файл в домашней директории {касается только Linux-систем} - можете сразу выполнить команду компиляции. В противном случае вам надо сначала перейти в нужный каталог. Сделать это можно командой cd.
{Например если вы находитесь в каталоге C:\, а файл main.c находится в C:\lesson2 то достаточно выполнить команду
cd \lesson2
Если же вы находитесь на C:\, а файл main.c - на E:\lessons\lesson2 - то вам нужно сначала перейти на диск E - сделать это можно
cd /d E:
Ключ /d предназначен для смены каталога. Вы могли бы сразу перейти в нужный каталог с
cd /d E:\lessons\lesson2
а можно использовать несколько команд - сначала сменить диск, а затем указать конкретный каталог на нем.
Для вывода содержимого каталога используйте команду dir (в Linux также доступна команда ls).

Можно получить справку по командам. Например для вывода справки по команде dir - в Windows введите в консоли:
dir /?
а в Linux:
man dir

Использовать консоль/терминал совсем не обязательно. Но если привыкнуть, то это может быть удобно. Кроме того, часто применяются файловые менеджеры типа Far (Windows) или MidnightCommander (команда mc в Linux), упрощающие навигацию в файловой системе, но сохраняющие все прелести использования консоли).
}

После перехода в нужную директорию скомпилируйте программу командой:
gcc main.c
В результате успешной компиляции в текущем каталоге будет создан файл a.out. {Если вы что-то меняли (и сломали в файле main.c - на экран будет выведен список ошибок}.

Шаг 4. Запуск созданной программы

Для запуска созданной нами программы нужно файл, сгенерированный компилятором сделать исполняемым. {В оригинальной статье описывается этот процесс для Linux} - Для этого щелкните в файловом менеджере по нему правой кнопкой мыши, выберите "свойства", вкладку "ограничения" и поставьте галочку напротив - "разрешить выполнение файла".
{Чтобы сделать файл исполняемым в Windows достаточно сменить разрешение на .exe}
{А в Linux нормальный способ сделать файл исполняемым - использование команды chmod с ключом +x. Например:
chmod +x a.out
Это тем более логично, что на предыдущем шаге автор предлагал использовать терминал
}

Теперь перейдите в терминал и запустите файл командой:
./a.out
{точка в начале команды (пути файла) говорит о том, что используется файл из текущего каталога}.

На этот раз это все, а в следующей статье мы рассмотрим подробно исходный код нашей программы (которую скомпилировали только что).
 
R

rrrFer

Конечно пишут. Во-первых, это один из основных языков разработки микроконтроллеров. Во-вторых, на Си пишутся системные утилиты (от С++ там нет особого профита), почти все драйвера в частности. В третьих - это один из основных языков параллельного программироания высокопроизводительных вычислительных систем (от ООП там опять же особого выигрыша архитектуре вы не получите, поэтому пишут чаще на Си и Фортране - посмотрите современные книжки по MPI {основной стандарт параллельного програмирования кластеров}).

В тему - вакансия программиста С/Linux (из почтовой рассылки, которая мне пришла сегодня).
Снимок экрана из 2016-11-22 10-47-47.png


Т.е. писать то пишут, но вот статьи, которые я продолжил переводить какие-то нубские (хотя и называются "для хакеров") и язык Си я знаю гораздо лучше, чем автор оригинального текста. Поэтому тут больше моих комментариев, чем перевода.
 
  • Нравится
Реакции: in1rovert

Сергей Попов

Кодебай
30.12.2015
4 691
6 584
BIT
291
Однако, мой перевод будет невероятно вольным, а какие-то части я вообще могу пропустить, т.к. на мой взгляд, автор исходных статей много говорит не по теме. В фигурных скобках и курсивом мои {переводчика} примечания.
Вы выбрали самый верный путь. Спасибо !
 
I

Ishikawa

Конечно пишут. Во-первых, это один из основных языков разработки микроконтроллеров.

Это была шутка, бро. Без обид :)
Я знаю что такое С (писал на borland, intel), писал на ассемблере MASM/FASM.
А по теме: переходи к сложностям, основы и так известны.
 
  • Нравится
Реакции: Fox007 и ghostphisher
R

rrrFer

Это была шутка, бро. Без обид :)
Я знаю что такое С (писал на borland, intel), писал на ассемблере MASM/FASM.
А по теме: переходи к сложностям, основы и так известны.

1) я на Си, если честно, почти не пишу. Я С++ и Java -программист;
2) я никогда не стал бы писать сам вот такие мануалы для чайников (и тем более называть их "для хакеров");
3) я нашел одинокую тему на форуме, где пользователь Ник Уайлд начал переводить серию статей. Лично мне содержание статей неинтересно.
4) я хочу уметь не только читать, но и писать корректные тексты на английском языке. Я учусь. Для этого читаю и перевожу тексты на английском. В основном, всякие мануалы и научные статьи по оптимизирующим трансляторам;
5) я подумал, ну а что бы не перевести по быстрому эту серию статей? (их там всего 10 штук). На неделе я это доделаю.
6) у меня есть свой блог (ссылку не даю, т.к. это будет уже реклама, да и не нужна мне реклама) и форум по программированию на С++. Иногда я размещаю материалы там, но эти статьи будут тут, т.к. с одной стороны их начали переводить тут (и не я), а с другой - содержание этих статей мне абсолютно не интересно.

Таким образом, я только перевожу статьи. Статьи для чайников и более сложных вещей в них просто нет. Я не пишу на Си промышленно, поэтому более сложные вещи от себя я не напишу. Я описываю какие-то сложные и интересные штуки о С++ и алгоритмах, но ты понимаешь, что мне целесообразнее сделать это на своем сайте (хотя кое-что на кодебай тоже перепадает).
 
  • Нравится
Реакции: Ishikawa

kot-gor

Grey Team
07.09.2016
529
705
BIT
0
Добрый вечер, эх прям ностальгия .. вспомнились студенческие годы.Последний раз писал на си когда с ардуинкой баловался..)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!