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

Delphi 如何在编译的项目中隐藏标识符名称?,delphi,pascal,freepascal,Delphi,Pascal,Freepascal,当我编译包含以下代码的项目时: ttest = record one, two: string; three: integer; end; 我可以在EXE中看到像“ttest”、“one”、“two”和“three”这样的字符串 这是在Delphi的任何版本中,即使是在免费的Pascal中 有没有可能不把它放在编译的程序中?不使用打包机、加密机等。尝试关闭在“项目选项”对话框(菜单项项目/Options)中可以找到的各种调试信息,然后重新生成整个项目(即不仅仅是编译,使用项目/构建

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

ttest = record
   one, two: string;
   three: integer;
end;
我可以在EXE中看到像“ttest”、“one”、“two”和“three”这样的字符串

这是在Delphi的任何版本中,即使是在免费的Pascal中


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

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


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

不确定这是否会有帮助,但请检查,删除
RTTI
似乎可以解决您的问题。

只要避免将数据发布,如果可能,否则字段名称是可见的。此外,不要忘了在cliking property inspector时创建的每个方法都是自动的发布时放置(因为它们也在dfm文件中使用)。因此每个“Button1Click”等都是可见的,因此易于本地化(方法代码)


只需检查在IDA free中使用Delphi编译的任何程序,以及特殊的“Delphi字符串IDC脚本(在IDA palace中查找)”。在“名称”窗口中,您将很容易看到每个TSomething,每个TSomething发布的属性和方法…

我解决了这个问题。使用“字符串”在记录中,记录名称在可执行文件中可见

您是否正在构建发布版本,因为它听起来更像调试版本,除非这些名称是常量值…感谢您的回复。这不起作用,我关闭了project options中的所有内容,但它仍然存在于可执行文件中。只要我使用Delphi,我就永远找不到如何rem我可以用WinHex覆盖这些字符串,程序正常运行-没有崩溃之类的,但问题是任何人都可以读取我的数据结构,这可以帮助破解应用程序。你确定这正是你给出的示例吗?发布的属性总是RTTING!!!!!因此,你可以看到一些字段名是正常的。避免如果你不想发布它们(但VCL部分依赖于此)