Я строю DLL, и я хочу сделать статический анализ этого DLL более сложным.Но, черт возьми, я вижу полные пути к моим (НЕКОТОРЫМ) файлам .cpp и .h, как если бы я открывал скомпилированный файл .dll в блокноте.Я вижу определения (НЕКОТОРЫХ) функций, декомпиляция не требуется lol, это видно.Пример:
void __cdecl Core::Context::Shutdown(void)
void __cdecl U::Read(unsigned __int64,unsigned __int64,char *)
C:\Git\Repo\Games/XXX/GameApi.h
и т. Д. И т. Д. Я не новичок и понимаю разницу между компиляцией Debug / Release.Меня не волнуют мои жестко закодированные строки в двоичном коде, я знаю, как это скрыть.Но общие, функциональные прототипы и пути к файлам?Они не должны быть в скомпилированном .dll.
Я использую
- Release ,
- x64 Платформа,
- C / C ++ -> Общие -> Формат отладочной информации -> Нет
- C / C ++ -> Генерация кода -> Библиотека времени выполнения -> Многопоточная DLL (/ MD)
- C / C ++ -> Язык -> Включить информацию о типе во время выполнения -> Нет (/ GR -)
- Linker -> Отладка -> Создание информации отладки -> Нет
ЭТИ ВАРИАНТЫ УДАЛИЛИ МНОГО ЧУВСТВИТЕЛЬНОЙ ИНФОРМАЦИИ ИЗ .DLL, НО НЕ ВСЕ!
Полная командная строка для компилятора:
/GS /GL /W3 /Gy- /Zc:wchar_t /Gm- /O1 /sdl- /Fd"x64\Release\vc140.pdb"
/Zc:inline /fp:precise /D "_WINDLL" /D "_UNICODE" /D "UNICODE"
/errorReport:prompt /WX- /Zc:forScope /GR- /Gd /MD /Fa"x64\Release\" /EHsc
/nologo /Fo"x64\Release\" /Os /Fp"x64\Release\Dll_x64.pch"
Полная командная строка для компоновщика:
/OUT:"C:\Git\Repo\Games\XXX\Dll_x64.dll" /MANIFEST /LTCG:incremental
/NXCOMPAT /DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib"
"winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib"
"oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib"
/IMPLIB:"C:\Git\Repo\Games\XXX\Dll_x64.lib" /DLL /MACHINE:X64 /OPT:REF
/MANIFESTUAC:"level='asInvoker' uiAccess='false'"
/ManifestFile:"x64\Release\Dll_x64.dll.intermediate.manifest" /OPT:ICF
/ERRORREPORT:PROMPT /NOLOGO /TLBID:1
Кто-нибудь, пожалуйста, объясните, почему мои прототипы функций и пути к файлам CPP / Hпоявился в скомпилированном .dll.Как мне этого избежать.