Как скрыть имена файлов объектов в статической библиотеке? - PullRequest
5 голосов
/ 13 декабря 2011

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

Моя проблема в том, что моя библиотека все еще содержит читаемую информацию, которую я хотел бы скрыть или сделать недоступной для человека:

1- Имена объектных файлов: Когда я запускаю nm на .a, ядо сих пор видим имена каждого объектного файла.(т.е. myObect1.o myObject2.o и т. д.).Есть ли способ удалить эти имена из моего .a?

2- пути к файлам: Когда я запускаю строки в своей библиотеке, я по-прежнему вижу пути к файлам заголовков, а также некоторые пути к файлам .c (включены как #include).Есть ли способ удалить их, а также.(Флаг GCC или другой способ)?

Спасибо за вашу помощь,

baba

ps: я знаю о nm и строках, но если вам известны какие-либо другие инструменты или еслиВы можете предложить что-либо еще, что я должен проверить, правильно скрыто в моем .a, все предложения приветствуются.

1 Ответ

2 голосов
/ 13 декабря 2011

Рассмотрите возможность распространения объединения, как это делает SQLite: http://www.sqlite.org/amalgamation.html. Другими словами, вместо библиотеки распространяйте один файл .o и один файл .h.

Вы должны будете аннотировать свои внутренние функции как статические. Это также даст компилятору дополнительную возможность для оптимизации. Lua использует такие аннотации. См. Например http://www.lua.org/source/5.1/ldo.h.html. Для объединения LUAI_FUNC определено как статическое.

...