#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 .
Счастливого запутывания!