从已编译的release exe中删除类字符串名称

时间:2013-07-18 20:00:38

标签: delphi security rtti delphi-xe3

我编译了我的应用程序项目的发布版本。当我用二进制编辑器查看我编译的最终exe时,我可以看到我自己创建的对象的所有类名,例如:TPolygon,TRectangle等等,作为exe内的二进制文本数据。

我如何从exe中删除此信息。我尝试在dpr中删除禁用RTTI:

{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

但不是运气,任何提示。

1 个答案:

答案 0 :(得分:2)

如果要从可执行文件中删除类名,那么您的应用程序将停止工作。编译到应用程序中的.dfm文件包含类名。运行时流框架需要能够在类注册表中查找这些类,如果没有名称,那么表单及其属性将无法流式传输。

最重要的是,正如AlexSC指出的那样,TObject.ClassName的实现要求类的名称出现在可执行文件中。