我应该如何了解Delphi中的代码混淆?
我应该或不应该这样做?
它是如何完成的,是否有任何好的工具(商业/免费)来实现自动化?
答案 0 :(得分:11)
你为什么需要?
作为一个整体,Delphi不会反编译,与.net不同,所以,虽然反编译总是有点风险,但我从来没有找到一个反编译器实际上以一种有用的方式做到了,很多区域都留下了汇编程序和等等。
如果人们想重做你的工作,他们可以,无论是什么,混淆与否,哎呀,一些程序员写了几乎自然混淆的代码(与少数人一起工作)
因此,我的投票是不应该打扰的。除非有人能给我看一个真正有用的delphi的反编译器,并生成完整的可编译器,以及最初的所有delphi,我不会担心一滴。答案 1 :(得分:7)
Pythia是一个可以混淆用Delphi或C ++ Builder创建的二进制文件(不是源代码)的程序。 Source code for Pythia is here
<强>之前强>:
<强>后强>:
答案 2 :(得分:5)
由于编译器已经为你做了这一点,所以没有任何混淆。
无法从二进制文件重新创建源代码。
组件可以以有用的方式分发,而无需分发源代码。
因此通常没有(技术)原因来分发源代码。
答案 3 :(得分:4)
例如,您可以做其他事情来降低攻击者禁用软件激活系统的能力,但在Delphi等本机编译系统中,您无法从二进制文件中重新创建源代码。另一个答案(目前已接受的答案)恰恰说明了这一点,并且其他人指出了一个有用的工具来混淆人们可能用来深入了解软件内部的RTTI信息。
您可以调查以下强化技术来阻止系统的修改,如果这是您真正想要的:
自我修改代码,使用门控逻辑将代码的关键功能(如软件激活)划分为各种级别的可互操作校验和,以及代码损坏和修复。
调试检测。您可以检测软件上使用的调试器,并尝试阻止软件在这种情况下工作。
加密磁盘上的PE二进制数据,并在加载时或在运行之前及时解密,这样关键的汇编程序代码就不能轻易地反向工程回到汇编语言。
正如其他人所说,黑客攻击你的软件不需要恢复原始资源来修改它。如果他们尝试的话,他们会尝试直接修改你的二进制文件,并会使用详细而广泛的汇编语言知识来规避你不希望的事情。
答案 4 :(得分:0)
您可以使用免费的JCF(Jedi代码格式化程序)来混淆您的源代码。但是,pascal语法不允许强混淆,JCF甚至不能做到最好(好吧,它是一个代码格式化工具,而不是混淆器!)