【发布时间】:2010-01-30 16:05:54
【问题描述】:
我正在编写一个类来处理我的可执行文件中的安全性(检查序列号、试用日期检查等)。编译可执行文件后(即使在发布版本中,关闭所有调试和 RTTI 生成),当我在记事本中打开它并在原始数据中搜索方法名称时,我可以看到组装我的类的所有方法的名称.代码库中的任何类中都没有已发布的成员。
这对保护不利。有没有办法告诉 Delphi 不要在可执行文件中存储方法名称?如果不需要 RTTI 且没有 COM 爆炸,为什么还要存储它们?是否有任何编译器选项控制这个?
可能是目标可执行文件中任何类的任何方法都以文本形式存储在可执行文件中。显然这是由于 Delphi 2010 中所有类默认打开扩展 RTTI 造成的。
【问题讨论】:
-
@FractalizeR - 不要采取错误的方式,但如果您将(部分)安全性建立在混淆之上,那么您采取了错误的方法。我对安全性知之甚少,但足以知道您不应该尝试使用自己的“牢不可破”方案。我建议您搜索商业或开源解决方案来处理应用程序的安全方面。
-
如果您想查看 exe 中保留哪些符号(例如过程和函数名称),一个很好的测试是在 Ida(交互式反汇编程序)中加载 exe:hex-rays.com/idapro 评估和免费软件版本可用。
-
@Lieven 我打算在我的 exe 上使用 Themida 保护器,但即使在这种情况下,也需要从 exe 中消除所有过多的信息以加强保护。
标签: delphi methods delphi-2010 rtti