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