代码之家  ›  专栏  ›  技术社区  ›  codaddict

我如何混淆Perl脚本,使其难以进行反向工程?

  •  35
  • codaddict  · 技术社区  · 16 年前

    我开发了一个具有机密业务逻辑的Perl脚本。

    我必须把这个脚本交给另一个Perl程序员在他的环境中测试它。他可能会试图从我的程序中提取逻辑。所以我想让我的剧本很难理解。

    6 回复  |  直到 15 年前
        1
  •  126
  •   Stephen C    16 年前

    模糊处理无法保护您免受坚决的逆向工程尝试。这在理论上和实践上都是不可能的。

        2
  •  44
  •   brian d foy    14 年前

    Mastering Perl

    您是否考虑过用C实现敏感的东西,并提供带有Perl接口的预编译二进制文件?这是相对容易做到的,没有依靠一个聪明的把戏也有同样的效果。有决心、技术熟练的人仍然可以对其进行逆向工程,但对于任何解决方案都是如此。您确实需要为每个平台编译库,但是如果这些东西足够重要以保护它,那么它就足够重要以向使用它的人收取足够的费用。

    或者,将敏感内容放在web服务后面,这样他们就永远不会得到代码。

    我见过的一个聪明的策略是为每个客户机定制一个文件,无论是通过格式还是内容。这类似于使用平庸代码、注释或文档的低级水印。找到那个奇怪的文本序列,你就知道泄漏的来源了。

        3
  •  9
  •   tsee    16 年前

    首先,让我说你找错人了。出于许多原因,你想做的是错误的方法。

    第二,退房 Filter::Crypto (及 PAR::Filter::Crypto

        4
  •  7
  •   ЯegDwight kri    16 年前

    使用 Acme::Bleach 将代码漂白干净。然后混淆产生的漂白代码。但是,任何经过编码/模糊处理的代码都可以解码,因为Perl解释器必须对其进行解码。

        5
  •  3
  •   Anon.    16 年前

    你可以看看perlcc。它不能保证正确性,但如果您的脚本中没有做任何太时髦的事情,它应该可以正常工作。

        6
  •  2
  •   Volomike nbk    10 年前

    至少在OSX上,它们提供了三个很棒的命令:

    parl
    par.pl
    pp
    

    PARL -将PAR文件转换为不需要Perl或其他模块运行的可执行二进制文件

    从Perl脚本中生成PAR文件

    pp-将perl脚本编译成二进制(但仍需要perl)

    不确定这些是否适用于Windows或Linux。

    我注意到的一件有趣的事情是,当我在编译的perl脚本中使用命令来指示当前的工作目录时,它与我的新二进制可执行文件的目录是相同的。我本以为它会将某些内容解压缩到/tmp并从那里运行,但事实并非如此。