2012-03-14 82 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,每已发表物业方法 ...