2012-07-02 35 views
3

當看編譯relese .exe文件二進制我可以找到它的類/結構名稱!這很奇怪 - 顯然這些符號沒有必要。我擔心的是這些符號可以用來反向生成我的軟件,給軟件許可證保護帶來很大的風險。例如,我可以找到文本。?AVCMySecureKeyManager(原始類名稱是CMySecureKeyManager,它看起來像所有名稱都是添加了前綴「?AV」),很容易猜到我的代碼在做什麼,對嗎?看起來像黑客的開放門戶。爲什麼我可以在使用Visual C++編譯的.exe文件中看到類/結構體名稱?

特別,我可以告訴大家,我啓用了所有可能的優化在Visual C++編譯器/連接選項,關閉所有瀏覽/調試信息生成,也許我失去了一些東西?

+1

這只是班級的名字吧?如何暴露只是類名是一個很大的風險? – Naveen

+0

擔心嗎?看看SoftICE!黑客將破解 – slashmais

回答

3

您正在看到RTTI(運行時類型信息)。如果您的代碼中不使用dynamic_casttypeid,則通常可以安全地關閉它。請注意,例外總是使用RTTI(對於catch語句匹配),並且無法爲它們禁用它。

如果您確實需要dynamic_cast,那麼您可以在編譯後從EXE中清除名稱。代碼不取決於實際的名稱字符串,而只是他們的地址。

也就是說,類名雖然有用,但在反向工程中並不重要。不要依賴他們的缺席作爲保證。

+0

完美!禁用/ GR-編譯器選項的竅門!謝謝!我的.exe文件的大小縮小了55Kb :) –

相關問題