当我编译项目方含代码,如:如何隐藏已编译项目中的标识符名称?
ttest = record
one, two: string;
three: integer;
end;
我可以在EXE串像“t检验”,“一”,“二”看,“三”。
这是Delphi的任何版本,甚至在Free Pascal中也是如此。
有没有可能不把它放在编译的程序中?不使用包装器,加密器等。
当我编译项目方含代码,如:如何隐藏已编译项目中的标识符名称?
ttest = record
one, two: string;
three: integer;
end;
我可以在EXE串像“t检验”,“一”,“二”看,“三”。
这是Delphi的任何版本,甚至在Free Pascal中也是如此。
有没有可能不把它放在编译的程序中?不使用包装器,加密器等。
我解决了这个问题。在记录中使用“字符串”会导致记录名称在可执行文件中可见
尝试各式各样的调试信息,您可以在Project Options对话框(菜单项项目/选项),然后重新生成整个项目找到关闭(即不只是编译,使用工程/建造菜单项,以便项目中的每个单元都被重新编译)。这应该解决它。
你必须在项目的选择取决于你的Delphi版本取消实际选择:德尔福2006 /涡轮德尔福,这其中就包括编译器选项卡下调试所有选项(也许除了“断言” )和连接器标签“包含TD32调试信息”/“包含远程调试符号”。较新的Delphi版本具有类似于Visual Studio的“构建配置”功能,在此处选择“发布”,重建应删除所有“警告”调试信息。
感谢您的回复。这没有奏效,我关闭了项目选项中的所有内容,并且它仍然存在于EXE中。只要我使用Delphi,我从来没有发现如何删除它。我可以用WinHex覆盖这些字符串,并且程序可以正常运行 - 没有崩溃等问题,但问题是任何人都可以阅读我的数据结构,这可以帮助例如破解应用程序。 – user1269348 2012-03-14 23:16:57
你确定这是你给的例子吗?发布的属性总是RTTIed !!!!!所以你看到_some_ fieldnames是正常的。避免让他们发布,如果你不想要的(但VCL部分依赖于此) – 2012-03-16 12:59:54
不确定这会有帮助,但检查出create smaller delphi xe executable,好像删除RTTI
可以解决您的问题。
只要避免将您的数据作为发布,如果可能的话,否则字段名称是可见的。另外,不要忘记,在检查属性检查器时创建的每个方法都会自动发布(因为它们也在dfm文件中使用)。所以每个'Button1Click'等都是可见的,因此易于本地化(方法代码)。
只是检查与德尔福在IDA自由并以特别“德尔福字符串IDC脚本(在IDA宫殿找到它)”编译的程序。在名称窗口,你会很容易看到每一个TSomething,每已发表物业和方法 ...
您是否在构建发行版本,因为它听起来更像调试版本,除非这些名称是恒定值... – Remko 2012-03-14 18:20:21