Проблема с интерпретируемыми языками, то, что Вы отправляете источник для получения их работа (если у Вас нет компилятора к байт-коду, но с другой стороны, это довольно тривиально для декомпиляции).
Так, если Вы не хотите жертвовать производительностью, можно только действовать на имена переменной и имена функций, например, замену их с a, b... aa, ab... или a101, a102, и т.д. И, конечно, удалить столько пространства/новых строк, сколько Вы можете (это быть тем, что так называемые компрессоры JS делают).
строкам Запутывания поразят производительность, если необходимо зашифровать их и дешифровать их в режиме реального времени. Плюс отладчик JS может показать окончательные значения...
hexdump -v -e '16/1 "0x%x," "\n"'
генерирует массив, подобный C, из стандартного ввода, но без объявления, фигурных скобок или хорошего форматирования.
Я знаю, что это вопрос для Unix / Linux, но любой, кто просматривает его и хочет сделать то же самое в Windows, может использовать Bin2H .
Для больших файлов преобразование в текст с последующим повторным анализом компилятором неэффективно и ненужно. Вместо этого используйте objcopy
:
objcopy -I binary -O elf32-i386 stuff stuff.o
(Настройте выходную архитектуру по мере необходимости для платформ, отличных от x86.) Затем, как только вы свяжете ее со своей программой, вы сможете получить к ней доступ следующим образом:
extern char _binary_stuff_start[], _binary_stuff_end[];
#define SIZE_OF_STUFF (_binary_stuff_end - _binary_stuff_start)
...
foo(_binary_stuff_start[i]);