Скрыть символы экспорта без использования файла DEF

Я хотел бы скрыть экспортированные символы из DLL для целей запутывания.

Это довольно аккуратно выполнимо при использовании файла определения модуля (.def) выглядит примерно так;

EXPORTS
??0Foo@QAE@XZ   @1   NONAME
??1Foo@QAE@XZ   @2   NONAME
?Bar@Foo@UAEHXZ @3   NONAME

Проблема в том, что такое решение очень негибкое и требует ручной работы. Как вы можете видеть в моем примере, я экспортирую символы C ++, поэтому они в значительной степени декорированы моим компилятором.

Так что мой текущий рабочий процесс выглядит следующим образом;

Я должен сначала создать версию моей DLL, которая экспортирует все символы стандартным способом, используя __declspec(dllexport)тогда мне нужно извлечь все экспортированные имена символов, используя dumpbin или так. После того, как это сделано, мне нужно скопировать&вставьте символы в мой файл определения модуля и добавьте, что NONAME директивы. Тогда я должен убедиться, что мои оригинальные источники не используют это __declspec(dllexport) больше. После того, как все это будет сделано, мне нужно активировать этот файл .def в настройках проекта, а затем я наконец смогу создать бесплатную версию экспорта этой библиотеки DLL. Я думаю, много работы для этой довольно простой задачи.

Прежде чем рассказать обо всем этом, используя кучу скриптов и прочего, я подумал, что может быть, просто возможно есть решение, которое намного проще?

Обратите внимание, что я использую VisualStudio (2012) и, следовательно, отличный GCC pragma hidden не буду делать, насколько я знаю.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector