Худшее злоупотребление препроцессором C (победитель IOCCC, 1986 г.)

Начнем с Международного конкурса обфускаторов C Code Contest (IOCCC).

IOCCC — это конкурс компьютерного программирования на самый творчески обфусцированный C код. Работы оцениваются анонимно жюри. Процесс судейства задокументирован в правилах соревнований и состоит из раундов на выбывание. По традиции не приводится информация об общем количестве заявок на каждый конкурс. Работы-победители награждаются категорией, такой как Худшее злоупотребление «препроцессором C» или Самое неустойчивое поведение, а затем объявляются на официальном сайте IOCCC.

Что такое обфускация?

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

Архитектура и характеристики некоторых языков могут сделать их более запутанными, чем другие. C, C++ и язык программирования Perl — вот некоторые примеры языков, которые легко запутать.

Код победителя

Теперь, когда мы знаем, что такое IOCCC и что такое обфускация, мы можем поговорить о коде победителя «Худшее злоупотребление препроцессором» 1986 года.

Вот код, который мы, люди, вообще не можем понять, это цель обфускации.

Когда мы скомпилируем его и протестируем результат, вот что мы получим.

теперь вы можете прочитать результат и понять, что показано на экране. Вопросительные знаки взяты из кода Морзе (Вопросительные знаки - это символы, неизвестные в коде Морзе), поэтому пробелы и буквы с акцентом отображаются как вопросительные знаки.

Таким образом, в основном код преобразует текст в код Морзе.

Понять код

Давайте сначала углубимся в код, макросы в C - это замены строк, обычно используемые для определения констант, и они заменяются на этапе предварительной компиляции заданным значением.

Код использует рекурсию для перевода точек и тире в коде ascii.

Использование запутанного кода затрудняет обратный инжиниринг, вы можете защититься от кражи коммерческой тайны (интеллектуальной собственности), несанкционированного доступа, обхода лицензирования или других средств контроля и обнаружения уязвимостей.