cobfusc генерирует неизвестные символы

#c #obfuscation

#c #запутывание

Вопрос:

Я хотел получить запутанный вывод (для студентов). Я использовал этот пример:

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

int main() {
    printf("Hello, World!n");
}

$ cobfusc hello.c -o olleh.c
$ cat olleh.c
#include <stdio.h>

�my�U �my�U() {
    �my�U("Hello, World!n");
}%  

$ gcc olleh.c
olleh.c:3:1: error: stray ‘344’ in program
    3 | �my�U �my�U() {
      | ^
olleh.c:3:2: error: stray ‘16’ in program
    3 | �my�U �my�U() {
      |  ^
olleh.c:3:5: error: stray ‘333’ in program
    3 | �my�U �my�U() {
      |     ^
olleh.c:3:3: error: unknown type name ‘my’
    3 | �my�U �my�U() {
 

Это ожидаемое поведение? Я думал, что результат должен быть компилируемым.

Комментарии:

1. Вы спрашиваете, что должна делать какая-то программа, а не вопрос программирования. Что говорится в инструкциях? Вы проверили их багтрекер?

2. Вы проверяли документацию «cobfusc» о кодировке символов?

3. @thebusybee Здесь нет ничего о кодировании: manpages.org/cobfusc

4. Да, я нашел справочную страницу слишком короткой. Вы искали проект / веб-сайт или просматривали исходный код, чтобы узнать, что делают разные режимы?

Ответ №1:

В README.compile объясняется проблема с «flex» и говорится, что вам нужно либо использовать «lex», либо использовать «flex -l».

Самое простое решение — обновить все Make-файлы после запуска ./configure и обновить строку LEX= на flex -l вместо flex .

Счастливого запутывания!