2012-03-14 55 views
3

當我編譯項目方含代碼,如:如何隱藏已編譯項目中的標識符名稱?

ttest = record 
    one, two: string; 
    three: integer; 
end; 

我可以在EXE串像「t檢驗」,「一」,「二」看,「三」。

這是Delphi的任何版本,甚至在Free Pascal中也是如此。

有沒有可能不把它放在編譯的程序中?不使用包裝器,加密器等。

+1

您是否在構建發行版本,因爲它聽起來更像調試版本,除非這些名稱是恆定值... – Remko 2012-03-14 18:20:21

回答

0

我解決了這個問題。在記錄中使用「字符串」會導致記錄名稱在可執行文件中可見

3

嘗試各式各樣的調試信息,您可以在Project Options對話框(菜單項項目/選項),然後重新生成整個項目找到關閉(即不只是編譯,使用工程/建造菜單項,以便項目中的每個單元都被重新編譯)。這應該解決它。

你必須在項目的選擇取決於你的Delphi版本取消實際選擇:德爾福2006 /渦輪德爾福,這其中就包括編譯器選項卡下調試所有選項(也許除了「斷言」 )和連接器標籤「包含TD32調試信息」/「包含遠程調試符號」。較新的Delphi版本具有類似於Visual Studio的「構建配置」功能,在此處選擇「發佈」,重建應刪除所有「警告」調試信息。

+0

感謝您的回覆。這沒有奏效,我關閉了項目選項中的所有內容,並且它仍然存在於EXE中。只要我使用Delphi,我從來沒有發現如何刪除它。我可以用WinHex覆蓋這些字符串,並且程序可以正常運行 - 沒有崩潰等問題,但問題是任何人都可以閱讀我的數據結構,這可以幫助例如破解應用程序。 – user1269348 2012-03-14 23:16:57

+0

你確定這是你給的例子嗎?發佈的屬性總是RTTIed !!!!!所以你看到_some_ fieldnames是正常的。避免讓他們發佈,如果你不想要的(但VCL部分依賴於此) – 2012-03-16 12:59:54

1

只要避免將您的數據作爲發佈,如果可能的話,否則字段名稱是可見的。另外,不要忘記,在檢查屬性檢查器時創建的每個方法都會自動發佈(因爲它們也在dfm文件中使用)。所以每個'Button1Click'等都是可見的,因此易於本地化(方法代碼)。

只是檢查與德爾福在IDA自由並以特別「德爾福字符串IDC腳本(在IDA宮殿找到它)」編譯的程序。在名稱窗口,你會很容易看到每一個TSomething,每已發表物業方法 ...