The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Объявлены победители 28 конкурса по написанию запутанного кода на языке Си"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Объявлены победители 28 конкурса по написанию запутанного кода на языке Си"  +/
Сообщение от opennews (ok), 03-Авг-25, 23:19 
Опубликованы исходные тексты работ, победивших в двадцать восьмом конкурсе IOCCC (International Obfuscated C Code Contest), участникам которого предлагалось подготовить наиболее запутанный и трудноразбираемый код на языке Си. 28 конкурс проведён после  четырёхлетнего перерыва и примечателен  разрешением использовать кодировку UTF-8 в коде...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=63668

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +2 +/
Сообщение от Карлос Сношайтилис (ok), 03-Авг-25, 23:19 
Волчок прекрасен!
Ответить | Правка | Наверх | Cообщить модератору

31. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от jura12 (ok), 04-Авг-25, 08:17 
а ты пробовал компилить?
Ответить | Правка | Наверх | Cообщить модератору

3. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +5 +/
Сообщение от Аноним Анонимович Анонимов (?), 03-Авг-25, 23:21 
Аплодисменты участникам. Каждый раз удивляют победители.
Ответить | Правка | Наверх | Cообщить модератору

12. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +2 +/
Сообщение от Аноним (12), 04-Авг-25, 00:31 
Тут кстати документалка, как авторы готовили свои проекты:
https://www.youtube.com/watch?v=dQw4w9WgXcQ
Ответить | Правка | Наверх | Cообщить модератору

7. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +3 +/
Сообщение от Голдер и Рита (?), 03-Авг-25, 23:58 
Создавать эффективные приложения с небольшим количеством кода — вот причина, по которой я обожаю язык Си.
Ответить | Правка | Наверх | Cообщить модератору

13. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +1 +/
Сообщение от Аноним (-), 04-Авг-25, 00:37 
Поддержка кода и исправление бегов в понятие "эффективные приложения" входит))?
Или как наовнякали, так пусть работает.
Ну пока за пределы буфера не выйдет.
Ответить | Правка | Наверх | Cообщить модератору

27. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от Аноним (27), 04-Авг-25, 08:05 
> Поддержка кода и исправление бегов в понятие "эффективные приложения" входит))?

Нет, конечно. Туда не входит даже проверки данных/параметров на корректность, ибо эффективность сразу улетучивается.

А зачем все это нужно, если у сишочника в случае чего есть универсальная отмаза "и чо, я этот хэллоуворлд писал в одно лицо для самого себя, и в моем конкретном случае все работает111"? (Если что, это был реальный аргумент от одного местного эксперта).

Ответить | Правка | Наверх | Cообщить модератору

37. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от Аноним (37), 04-Авг-25, 09:22 
> Нет, конечно. Туда не входит даже проверки данных/параметров на корректность, ибо эффективность сразу улетучивается

В своем последнем проекте я тоже пришел к данному решению. Проверка производится до вызова функций, реализующих алгоритм. Функции считают, что входные данные и параметры абсолютно корректны.
Если Вы посмотрите на реализации математических алгоритмов во многих математических библиотеках, там это не так. И это действительно снижает эффективность, увеличивает объем кода и дополнительно грузит программиста, отвлекая от реализации алгоритмов.

Ответить | Правка | Наверх | Cообщить модератору

39. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от Аноним (39), 04-Авг-25, 10:13 
> снижает эффективность

Если предположить, что наша функция всегда будет складывать 2+2, как по вашему должна выглядеть эффективная функция (алгоритм) сложения - всегда возвращающая 4 (return 4;)? И эту фукцию разве корректно формально называть "эффективной функцией сложения двух чисел"?

Ответить | Правка | Наверх | Cообщить модератору

41. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от Cyd (?), 04-Авг-25, 10:54 
int getRandomNumber() {
    return 4; // chosen by fair dice roll
                    //guaranteed to be random
}
Ответить | Правка | Наверх | Cообщить модератору

45. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от Аноним (39), 04-Авг-25, 11:21 
ну мы же рассуждаем про "эффективность" в контексте "избавлений от проверок на допустимые значения ВХОДНЫХ параметров", а в вашем "классическом" примере нет входных параметров.
Ответить | Правка | Наверх | Cообщить модератору

28. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от Аноним (27), 04-Авг-25, 08:09 
> с небольшим количеством код

Лол, а как только у нас что-то больше хэллоуврлда, то внезапно появляются самописные строки, контейнеры и всякая банальшина типа split_string() (естественно, без тестов и проверок).

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

38. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +1 +/
Сообщение от Аноним (37), 04-Авг-25, 09:24 
Вам показывают проекты из серии "Программисты шутят", а Вы относитесь к ним слишком серьезно. Реальные проекты на C выглядят иначе.
Ответить | Правка | Наверх | Cообщить модератору

43. "Объявлены победители 28 конкурса по написанию запутанного ко..."  –2 +/
Сообщение от Фнон (-), 04-Авг-25, 11:14 
> Вам показывают проекты из серии "Программисты шутят",

Ты хотел сказть маются уетой?

> а Вы относитесь к ним слишком серьезно.

Эх(((, к вам когда-то на собеседование приходили всякие олимпиадники?

> Реальные проекты на C выглядят иначе.

Теорема г-на Эскобара говорит противоположное))
Думаете такой фигни в проде не будет?
Типа неявных манипуляций юникодом или "код с огромным числом операторов goto"?

Ответить | Правка | Наверх | Cообщить модератору

32. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от jura12 (ok), 04-Авг-25, 08:18 
о чем вы? ассемблер не пробовали? там ваша эффективность будет еще выше.
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

36. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от Аноним (37), 04-Авг-25, 09:16 
Я пробовал. Действительно выше.
Ответить | Правка | Наверх | Cообщить модератору

8. Скрыто модератором  +/
Сообщение от Аноним (8), 04-Авг-25, 00:00 
Ответить | Правка | Наверх | Cообщить модератору

10. "Объявлены победители 28 конкурса по написанию запутанного ко..."  –2 +/
Сообщение от голос_из_леса (ok), 04-Авг-25, 00:08 
Как показывает опыт перла, такие конкурсы предвестники забвения.
Ответить | Правка | Наверх | Cообщить модератору

33. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +4 +/
Сообщение от EULA (?), 04-Авг-25, 08:19 
Уу. 41 год забывают, забывают и никак не могут забыть. Конкурс проводится с 1984 года. Большинство комментаторов ОпенНета еще не родились, когда конкурс проводился в первый раз. И похоже, что все отметившиеся на сегодня здесь, не доживут до того момента, когда конкурс будут проводить в последний раз.
Ответить | Правка | Наверх | Cообщить модератору

42. "Объявлены победители 28 конкурса по написанию запутанного ко..."  –2 +/
Сообщение от Аноним (-), 04-Авг-25, 10:57 
> Конкурс проводится с 1984 года.

В США чемпионат по метанию лепешек навоза проводится с 1970х (В РФ с 2010го вроде бы).
А соревнование по броскам йоркширским пудингом было еще в 1839 году, правда с перерывами.
И скорее всего переживет всех отметившихся сегодня.

Польза от сего конкурса примерно такая же как от вышеперечисленных.
Хотя... возможно метание навозом даже полезнее.

Ответить | Правка | Наверх | Cообщить модератору

46. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от EULA (?), 04-Авг-25, 11:22 
Грэйдон Хор тоже участвовал в конкурсе необычных и бесполезных вещей в IT. Победил. Теперь его проект некоторые люди считают панацеей от кривых рук в программировании.
Ответить | Правка | Наверх | Cообщить модератору

47. "Объявлены победители 28 конкурса по написанию запутанного ко..."  –1 +/
Сообщение от Аноним (-), 04-Авг-25, 11:30 
> Теперь его проект некоторые люди считают панацеей от кривых рук в программировании.

Проблема в том, что еще не родился сишник с прямыми руками.
Доказано 40+ годами написания сишных дыреней.

Ответить | Правка | Наверх | Cообщить модератору

49. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от EULA (?), 04-Авг-25, 12:05 
Ну-да, ну-да.
В "безопасных" языках такие перлы учудили, что умудрились сделать дыры там, где в сишных аналогичных проектах их не было. Например CVE-2023-42456 и CVE-2025-46718. Там еще и десяток других ошибок обработки строк и переменных окружения есть, позволяющее обойти ограничения /etc/sudoers, которых нет в оригинале. Три ошибки просто нельзя исправить из-за особенностей языка.
Ой! Это же кривые руки разработчика! Но в безопасном языке - это норма и не является проблемой языка, а в "небезопасном" - это проблема языка.
Ответить | Правка | Наверх | Cообщить модератору

50. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от Аноним (-), 04-Авг-25, 12:24 
А ничего что это логические ошибки? И еще не придумано способа избегать логических ошибок, кроме формальной верификации. Как только придумают, я буду первым кто будет топить за закапывания раста.

Зато в дыpяшке можно нажать 28 раз Back Space и обойти ввод пароля (opennet.ru/opennews/art.shtml?num=43536) Какой еще йазыг позволяет такой проделать!

Раз ты вспомнил sudo - вот логические  CVE-2021-23240, CVE-2019-19234.
Но в комплекте идут CVE-2021-23239 с race condition, CVE-2021-3156 с buffer overflow и прочие типикАл сишные баги.

Ответить | Правка | Наверх | Cообщить модератору

15. Скрыто модератором  +1 +/
Сообщение от Аноним (-), 04-Авг-25, 00:40 
Ответить | Правка | Наверх | Cообщить модератору

16. Скрыто модератором  +/
Сообщение от Аноним (16), 04-Авг-25, 02:08 
Ответить | Правка | Наверх | Cообщить модератору

21. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +1 +/
Сообщение от Аноним (21), 04-Авг-25, 06:45 
Беллард хоть что-нибудь взял?
Ответить | Правка | Наверх | Cообщить модератору

25. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от Аноним (25), 04-Авг-25, 07:22 
Если зайти по ссылке: https://www.ioccc.org/2024/kurdyukov3/ogvm.html
Написать в текстовом поле: doomp.bin
Нажать кнопку Start, то запустится Doom прямо в браузере.

Автор также бонусом добавил нативную JIT (быстрый JIT без оптимизаций) версию с поддержкой архитектур x86, x86_64, aarch64 и e2k.

Web версия тоже содержит JIT, только на JS, JS позволяет генерить и выполнять JS код во время выполнения.

> Утилита для удаления артефактов из JPEG-изображений

Это урезанная обфусцированная копия утилиты JPEG Quant Smooth (есть в некоторых дистрибутивах линукс как jpegqs).

Ответить | Правка | Наверх | Cообщить модератору

26. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от 1 (??), 04-Авг-25, 07:59 
> На первый взгляд программа возводит в квадрат числа от 1 до 10, но на деле показывается рецепт приготовления жареного лосося. Код 15 строк и содержит манипуляции с незаметными символами Unicode.

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

Ответить | Правка | Наверх | Cообщить модератору

35. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от Аноним (35), 04-Авг-25, 08:40 
Как компилировал?
Качай 2024_cable2.tar.bz2 и запускай

gcc prog.c
./a.out

Season salmon fillets with olive oil, lemon juice, garlic, salt, and pepper, then grill over medium heat for 4-6 minutes per side until flaky and cooked through.

$ cat prog.c
#include <stdio.h>

unsigned int    *salmon = U"󠁓󠁥󠁡󠁳󠁯󠁮󠀠󠁳󠁡󠁬   is very yummy";

#define  grill󠁁  ;while(putchar(*salmon++))
#undef   grill

#define 󠁁 grill󠁁
#undef   grill

int main() {󠁁 󠁁
  for (int i = 1; i <= 10; i++) {
    printf("%d * %d = %d\n", i, i, i*i);
  }
}

$ cat -A prog.c
#include <stdio.h>$
$
unsigned int    *salmon = U"M-sM- M-^A......^@M-^@is very yummy";$
$
#define  grillM-sM- M-^AM-^A  ;while(putchar(*salmon++))$
#undef   grill$
$
#define M-sM- M-^AM-^A grillM-sM- M-^AM-^A$
#undef   grill$
$
int main() {M-sM- M-^AM-^A M-sM- M-^AM-^A$
  for (int i = 1; i <= 10; i++) {$
    printf("%d * %d = %d\n", i, i, i*i);$
  }$
}$

Ответить | Правка | Наверх | Cообщить модератору

30. "Объявлены победители 28 конкурса по написанию запутанного ко..."  –1 +/
Сообщение от Аноним (30), 04-Авг-25, 08:15 
Так Си и так запутанный! Сколько новостей было что люди не справляются с буфером.
Ответить | Правка | Наверх | Cообщить модератору

34. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от jura12 (ok), 04-Авг-25, 08:19 
я боролся с багами в С++. оказалось что я забываю ставить звездочку или амперсанд.
Ответить | Правка | Наверх | Cообщить модератору

44. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от Аноним (44), 04-Авг-25, 11:20 
о, в победителях числится автор fpdoom
Ответить | Правка | Наверх | Cообщить модератору

48. "Объявлены победители 28 конкурса по написанию запутанного ко..."  +/
Сообщение от onanim (?), 04-Авг-25, 11:46 
вот вы бухтите о проблемах с памятью в Си, а иногда это не баг, а фича!

https://serverfault.com/questions/86968/dnsmasq-how-to-incre...

> You can actually bypass the 3600 second --min-cache-ttl check by exploiting an integer overflow bug in the dnsmasq C source code, without any need for recompiling. Here is a value which works:
>
> Via CLI: --min-cache-ttl=6442450943
>
> Via dnsmasq.conf: min-cache-ttl=6442450943

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру