幾天前,我在Notepad ++中意外地打開了商業應用程序的C++可執行文件,發現存儲在可執行文件中的原始源代碼有相當多的信息。在C++可執行文件中存儲了多少源信息
可執行我能找到的文件名(app.c,dlgstat.c,...),函數名(GetTickCount
,DispatchMessageA
,...)和小片的源代碼,主要是條件(szChar != TEXT('\0')
,iRow < XTGetRows(hwndList)
內)。之後,我檢查了另一個QT可執行文件,並且:是,再次輸入源文件名和方法簽名。因此,我想知道在C/C++可執行文件中真正存儲了多少源代碼信息(例如,使用QT或MinGW編譯)。這可能是某種調試版本仍然包含原始源代碼?這些信息是用於某些反思的東西嗎?出版商是否有任何理由不刪除這些東西?
的條件可能是從'assert'宏(並且不定義'NDEBUG'一個版本)的字符串文字。如果您使用調試信息編譯包含 –
了很多東西(即「-g」如果你是一個古老的計時器),而不是如果你關掉調試信息和優化(即「-O3」)。 –
它可能是用存儲在其中的調試符號編譯的。或者像@ R.MartinhoFernandes所建議的那樣。 – nullpotent