Согласно этой спецификации ELF: Объектный файл ELF содержит различные разделы и один из них раздел таблицы символов .symtab
, который содержит информацию обо всех символах (файлах, функциях, объектах и т. д.).
ELF содержит такую информацию, как имя, флаги атрибутов, тип, значение и привязка и т. д. для каждого символа в таблице символов.
Имя объекта для файла, функции или объекта (массив, переменная, строка) и т. д. фактически раскрывает внутреннюю информацию кода. Таким образом, любой человек может проанализировать ELF (используя инструменты strings
, objdump
или readelf
), увидеть эту информацию и получить представление о внутренних вещах кода, которые следует держать в секрете.
Для удобочитаемости и удобства сопровождения мы пишем код, понятный разработчикам. Итак, нам нужно продолжать использовать правильные имена файлов и имена переменных и т. д. Мы не можем скрыть их с помощью обфускации кода так как это затруднит обслуживание.
Вопрос (отредактировано): Можно ли как-нибудь скрыть или удалить «имена» символов из таблицы символов исполняемого файла ELF, чтобы никто не мог получить представление о коде, а исполняемый файл продолжал работать? ?