[C, Демосцена, Компиляторы, Ненормальное программирование] Компиляторная бомба: 29 байт кода → 16 ГБ .exe

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
07-Июл-2020 15:30

Достойный наследник ZIP-бомбы и PNG-бомбы (которая в своё время положила Хабр) — компиляторная бомба, которая генерирует огромный бинарник из нескольких строчек кода. Наилучший на сегодня вариант предложил в 2016 году пользователь StackExchange под ником Digital Trauma (последняя версия протестирована в 2020 году). Код на C:
main[-1u]={1};

Это 14 байт. По условиям конкурса к коду добавляется 15 обязательных байт.
Данный код определяет функцию main как большой массив и инициализирует его первый элемент. Такое поведение заставляет компилятор GCC хранить весь массив в результирующем исполняемом файле.
Поскольку массив больше двух гигабайт, при компиляции следует указать флаг -mcmodel=medium.
Компиляция следующей командой:
gcc -mcmodel=medium cbomb.c -o cbomb

Не каждая машина осилит такую компиляцию. Эксперименты показали, что с ней справляется виртуальная машина RedHat 5.6 с 10 ГБRAM, свопом на 12 ГБ и большим локальным разделом в /tmp. GCC версии 4.1.2. Общее время компиляции около 27 минут.
Компилировать на продакшн-машине не рекомендуется.
В итоге получается исполняемый файл размером 17 179 875 837 байт (16 гигабайт).
Конкурс на лучшую бомбу не закончен.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_c, #_demostsena (Демосцена), #_kompiljatory (Компиляторы), #_nenormalnoe_programmirovanie (Ненормальное программирование), #_kompiljatornaja_bomba (компиляторная бомба), #_c, #_demostsena (
Демосцена
)
, #_kompiljatory (
Компиляторы
)
, #_nenormalnoe_programmirovanie (
Ненормальное программирование
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 22:31
Часовой пояс: UTC + 5