我有一个加密的perl脚本。只有安装了Filter::decrypt,才能编译此脚本。我有那个Filter,我安装了它,脚本编译没有问题,但现在我想用一些文本编辑器打开该脚本并进行编辑。
有人可以帮助我并告诉我该怎么做?
答案 0 :(得分:3)
相当基本 - 使脚本难以理解是非常困难的,因为perl是一种解释性语言。究竟如何解开某些东西更多的是它首先纠结在一起的问题。
所以我建议作为第一个停靠点 - 查看Mastering Perl
,其中有一章关于反汇编perl代码的主题。
但是,如果你只看Filter::decrypt
模块页面,它会指出模块根本无法覆盖的几个地方 - 你只能真正地保护'代码如果您首先控制perl解释器。但它建议的是:
剥离Perl二进制文件以删除所有符号。
使用静态链接构建解密扩展。如果扩展是作为动态模块提供的,那么没有什么可以阻止某人在运行时将其与修改后的Perl二进制文件链接起来。
不要使用-DDEBUGGING构建Perl。如果您这样做,那么可以使用
-Dp
命令行选项检索您的源。示例过滤器包含检测DEBUGGING选项的逻辑。
不要在启用C调试支持的情况下构建Perl。
不要将解密过滤器实现为子过程(如cpp源过滤器)。可以窥视连接到子流程的管道。
检查Perl编译器是否未被使用。
BOOT中的代码:decrypt.xs部分显示了如何检测编译器的存在。确保将其包含在模块中。
假设您没有采取任何步骤来发现编译器何时正在使用并且您有一个名为" myscript.pl"的加密Perl脚本,您可以使用它来访问其中的源代码perl编译器后端,像这样
perl -MO=Deparse myscript.pl
请注意,即使您已经包含BOOT:test,仍然可以使用Deparse模块获取各个子例程的源代码。
所以:
perl -MO=Deparse yourscript
perl -Dp yourscript
如果这些不起作用 - 请查看Filter::decrypt
的本地副本并对其进行更改,以便打印解密结果。
答案 1 :(得分:1)
最佳选择:只需编辑未加密的副本并重新安装即可。
替代方法:使用decr
(Filter :: decrypt附带)解密加密文件。