Как удалить конфиденциальные данные из скомпилированного двоичного файла (.dll)?Visual Studio 2015 (cpp) - PullRequest
0 голосов
/ 20 сентября 2018

Я строю 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.Как мне этого избежать.

...