如何在已编译的项目中隐藏标识符名称?

时间:2012-03-14 15:14:34

标签: delphi pascal freepascal

当我编译包含以下代码的项目时:

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

我可以在EXE字符串中看到“ttest”,“one”,“two”和“three”。

这是德尔福的任何版本,即使在Free Pascal中也是如此。

有没有可能不把它放在已编译的程序中?不使用打包器,加密器等。

4 个答案:

答案 0 :(得分:3)

尝试关闭您可以在“项目选项”对话框中找到的各种调试信息(菜单项项目/选项),然后重建整个项目(即不仅仅是编译,使用 Project / Build 菜单项,以便重新编译项目中的每个单元。那应该解决它。

您必须在项目选项中取消选择的实际选项取决于您的Delphi版本:对于Delphi 2006 / Turbo Delphi,这些选项包括编译器调试下的所有选项选项卡(可能除了“断言”)和链接器选项卡“包含TD32调试信息” / “包括远程调试符号” 。较新的Delphi版本具有类似于Visual Studio的“构建配置”功能,在此处选择“发布”,重建应删除所有“告密”调试信息。

答案 1 :(得分:3)

不确定这会有所帮助,但请查看create smaller delphi xe executable,似乎删除RTTI可以解决您的问题。

答案 2 :(得分:1)

如果可能,请避免将数据作为发布,否则字段名称可见。另外,不要忘记在克隆属性检查器时创建的每个方法都会自动放置为已发布(因为它们也用在dfm文件中)。所以每个'Button1Click'等都是可见的,因此很容易本地化(方法代码)。

只需在IDA中免费检查任何使用Delphi编译的程序,并使用特殊的'Delphi string IDC脚本(在IDA宫殿中找到它)'。在 Names 窗口中,您将很容易看到每个< em> TSomething ,每个 TSomething发布的属性方法 ......

答案 3 :(得分:0)

我解决了这个问题。在记录中使用“string”会导致记录名在可执行文件中可见