0
我有應用程序(可執行文件),但我沒有該應用程序的源代碼。我可以啓動這個應用程序。 我需要知道的是它的發佈或調試版本。確定是否使用或不使用_DEBUG宏編譯的應用程序
是否有任何方式在Windows中以編程方式確定應用程序編譯與_DEBUG
宏?
P.S. CheckRemoteDebuggerPresent
可以檢查連接的調試器進程的存在。這不是我需要的。
我有應用程序(可執行文件),但我沒有該應用程序的源代碼。我可以啓動這個應用程序。 我需要知道的是它的發佈或調試版本。確定是否使用或不使用_DEBUG宏編譯的應用程序
是否有任何方式在Windows中以編程方式確定應用程序編譯與_DEBUG
宏?
P.S. CheckRemoteDebuggerPresent
可以檢查連接的調試器進程的存在。這不是我需要的。
我會先用一些最基本的數據嗅探它, 兩個這樣的例子是bin字符串和應用程序頭文件;
沒有 <assemblyIdentity type="win32" name="Microsoft.VC90.CRT
「
隨着<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT"
(可能也編譯器?)
You ca n,其中任何下列選項中提取的字符串:打開exe文件在VS,並期待在RCDATA,在十六進制編輯器打開EXE,GUI工具,如BinText,字符串實用MinGW binutils (windows)和更多的選擇
正如我說的這些可能白送回答,或者如果不希望給一些導致與。
除非您有可用的調試信息,可以告訴您在構建時定義了哪些宏,那麼沒有辦法。 –
我發現了幾篇文章「如何調試版本構建」,並附帶說明如何做到這一點。我發現,對於某些應用程序列表,加載的DLL與發佈/調試版本非常不同。因此我假設調試器可以區分發布/調試版本。 –
您可以檢查它是否與標準C庫DLL的調試版本或發行版本鏈接(如果它沒有靜態鏈接)。確切的DLL名稱取決於Visual Studio版本。 – interjay