【发布时间】:2011-06-03 09:06:59
【问题描述】:
关于 Delphi 中的代码混淆,我应该知道些什么?
我应该还是不应该这样做?
它是如何完成的,是否有任何好的工具(商业/免费)来自动化它?
【问题讨论】:
标签: delphi delphi-2010 obfuscation
关于 Delphi 中的代码混淆,我应该知道些什么?
我应该还是不应该这样做?
它是如何完成的,是否有任何好的工具(商业/免费)来自动化它?
【问题讨论】:
标签: delphi delphi-2010 obfuscation
为什么需要?
作为一个整体 Delphi 不会反编译回来,不像 .net,所以,虽然反编译总是有点风险,但我从来没有找到一个真正有用的反编译器,很多地方都留下了汇编器和以此类推。
如果人们想要修改你的工作,他们可以,不管是否混淆,见鬼,一些编码人员编写几乎自然混淆的代码(与少数人合作过)
因此,我的投票不应该打扰。除非有人可以向我展示一个真正有效的 delphi 反编译器,并生成完整的可编译集,以及原来的所有 delphi,否则我不会担心任何问题。
【讨论】:
【讨论】:
没有必要混淆,因为编译器已经为你做了。
无法从二进制文件重新创建源代码。
并且组件可以以有用的方式分发,而无需分发源代码。
因此分发源代码通常没有(技术)原因。
【讨论】:
例如,您可以采取其他措施来降低攻击者禁用您的软件激活系统的能力,但在像 Delphi 这样的本机编译系统中,您无法从二进制文件重新创建源代码。另一个答案(目前被接受的答案)正好说明了这一点,并且其他人指出了一种有用的工具来混淆人们可能用来深入了解您的软件内部的 RTTI 信息。
如果您真的想要,您可以研究以下强化技术来阻止修改您的系统:
自修改代码,具有门控逻辑,可将代码的关键功能(如软件激活)划分为不同级别的互操作校验和以及代码损坏和修复。
调试检测。您可以检测到您的软件上正在使用的调试器,并尝试阻止该软件在这种情况下运行。
加密磁盘上的 PE 二进制数据,并在加载时或运行前及时解密,这样关键的汇编代码就不会那么容易被逆向工程回汇编语言。
正如其他人所说,在您的软件上工作的黑客无需恢复原始资源即可对其进行修改。如果他们尝试过,他们会尝试直接修改您的二进制文件,并将使用详细而广泛的汇编语言知识来规避您可能不希望他们这样做的事情。
【讨论】:
您可以使用免费的JCF(Jedi Code Formatter)来混淆您的源代码。然而,pascal 语法不允许强混淆,JCF 甚至没有做到最好(嗯,它是一个代码格式化工具,而不是混淆器!)
【讨论】: