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

Тема в разделе "Общие вопросы по С и С++", создана пользователем rrrFer, 22 ноя 2016.

Наш партнер Genesis Hackspace
  1. rrrFer

    rrrFer Гость

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

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

    Дождитесь загрузки операционной системы {в оригинале - Ubuntu}. Откройте любой текстовый редактор {на самом деле, подойдет не любой - нужен т.н. plain text editor - в Linux это, например kate и gedit, в Windows - notepad, notepad++}. Вставьте в него этот код:
    Код (Text):
    #include <stdio.h>
    int main()
    {
            printf("Hello Null Byte!\n");
            return 0;
    }
    Результат будет выглядеть примерно так:
    Программирование для хакеров (Часть 2)
    Шаг 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
    {точка в начале команды (пути файла) говорит о том, что используется файл из текущего каталога}.

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

    Ishikawa Well-Known Member
    Команда форума Grey Team

    Регистрация:
    15 ноя 2016
    Сообщения:
    105
    Симпатии:
    113
    На С еще пишут? :)
     
  3. rrrFer

    rrrFer Гость

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

    В тему - вакансия программиста С/Linux (из почтовой рассылки, которая мне пришла сегодня). Программирование для хакеров (Часть 2)

    Т.е. писать то пишут, но вот статьи, которые я продолжил переводить какие-то нубские (хотя и называются "для хакеров") и язык Си я знаю гораздо лучше, чем автор оригинального текста. Поэтому тут больше моих комментариев, чем перевода.
     
    smDef нравится это.
  4. WebWare Team

    WebWare Team Администратор
    Команда форума

    Регистрация:
    30 дек 2015
    Сообщения:
    483
    Симпатии:
    358
    Вы выбрали самый верный путь. Спасибо !
     
  5. Ishikawa

    Ishikawa Well-Known Member
    Команда форума Grey Team

    Регистрация:
    15 ноя 2016
    Сообщения:
    105
    Симпатии:
    113
    Это была шутка, бро. Без обид :)
    Я знаю что такое С (писал на borland, intel), писал на ассемблере MASM/FASM.
    А по теме: переходи к сложностям, основы и так известны.
     
    ghostphisher нравится это.
  6. rrrFer

    rrrFer Гость

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

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

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.432
    Симпатии:
    36
    Вот за это могу поручиться :)
    А ссылку выложи, чего уж. Оно не реклама, а полезный ресурс.
     
  8. kot-gor

    kot-gor Well-Known Member
    Команда форума Grey Team

    Регистрация:
    7 сен 2016
    Сообщения:
    206
    Симпатии:
    141
    Добрый вечер, эх прям ностальгия .. вспомнились студенческие годы.Последний раз писал на си когда с ардуинкой баловался..)
     
  9. Olej

    Olej Гость

    Сложностей не хватает в жизни?;)
    Вам сюда:
     
    WebWare Team нравится это.
  10. Olej

    Olej Гость

    А вот такой "хакинг" - это просто дешёвая профанация!:eek:
     
  11. Ishikawa

    Ishikawa Well-Known Member
    Команда форума Grey Team

    Регистрация:
    15 ноя 2016
    Сообщения:
    105
    Симпатии:
    113
    Мне всё это известно,бро.
     
  12. Olej

    Olej Гость

    Ой ли?
    Не надорвался бы ... бро:oops:
     
Загрузка...

Поделиться этой страницей