30 对Perl代码有好的模糊处理方法吗?

有人知道Perl的代码混淆器吗?我被要求在将代码发布给客户之前研究一下模糊化代码的选项。我知道模糊的代码仍然可以被逆向工程,但这不是我们主要关心的。

有些客户对我们提供给他们的源代码做了小的改动,当出现问题而我们不得不修复它时,或者当我们发布的补丁与他们所更改的内容不兼容时,这让我们感到噩梦。所以我们的目的只是让他们很难自己修改代码(反正他们不应该这么做)。

请先 登录 后评论

5 个回答

rjray

不喜欢。只是不喜欢。

把它写进合同(或者修改合同,如果你必须的话),你不负责他们对软件所做的更改。如果他们搞砸了你的代码,然后希望你去修复它,你的客户端问题不会通过混淆代码来解决。如果你混淆了它,他们遇到了一个实际的问题,祝你好运,让他们在错误报告中准确地报告行号等。

请先 登录 后评论
Ovid

我曾经经历过这条路,当你不得不处理“模糊的”代码时,这绝对是一场噩梦,因为当开发人员无法阅读代码时,在客户端服务器上调试一个问题会大大增加成本。你最终会遇到“去混淆器”,将“真正的代码”复制到客户端服务器或其他一些问题,这只会成为维护的真正麻烦。

我理解你的想法,但听起来好像管理层有问题,他们希望你实施一个选定的解决方案,而不是找出正确的解决方案是什么。

在这种情况下,这听起来像是一个许可或合同问题。让他们拥有开源的代码,但将其作为许可的一部分,即他们提交的任何更改都必须返回给你并获得批准。当您推出补丁时,检查所有代码的md5和,如果它与预期的不匹配,那么它们就违反了许可证,将被相应收取费用(这应该是一个高得多的费用)。(我记得有一家公司允许我们开放源代码,但明确表示,如果我们更改了任何内容,我们就以2.5万美元的价格“购买”了代码,除非我们购买了新的许可证,否则他们将不再负责任何bug修复或升级)。

请先 登录 后评论
freespace

看起来你的主要问题是客户修改代码,这使得你很难支持它。我建议你在他们向你寻求支持时询问他们文件的校验和(md5,sha等),在打补丁时同样检查文件的校验和。例如,您可以要求客户端提供所提供程序的输出,该输出将通过它们的安装和所有文件的校验和。

最终他们得到了代码,所以他们可以对它做任何他们想做的事情。您能做的最好的事情就是强制执行您的许可,并确保您只支持未修改的代码。

请先 登录 后评论
EvdB

在这种情况下,混淆视听是错误的做法。

当您将代码发布给客户端时,您应该保留发送给它们的代码的副本(要么在磁盘上,要么最好在您的版本控制中作为标记/分支)。

然后,如果您的客户做出了更改,您可以将他们的代码与您发送给他们的代码进行比较,从而轻松地发现更改。毕竟,如果他们觉得有必要进行修改,那一定是某个地方出了问题,你应该在主代码库中修复它。

请先 登录 后评论
piCookie

我正在运行Windows O/S,使用靛蓝星的perl2exe。生成的. exe文件不太可能在现场更改。

正如其他人所说,“我如何模糊它”是一个错误的问题。“我如何阻止客户更改代码”是正确的。

请先 登录 后评论