对Perl程序源代码进行编译与加密

Perl, source code

Posted by dulunar on December 29, 2019 | 访问量:

前言

一直以来,写了一些基于Perl的实用脚本,但是会传播扩散,这样子后期如果被随意篡改或者售卖造成一些纠纷,于是需要对一些Perl程序源代码进行编译和加密的处理。

解决方法

现在常用的方法有三个:使用Perl自带的perlcc工具、perl2exe、PAR(Perl Archive Toolkit);

安装上面的这些模块,我一般使用cpanm进行安装,这是因为cpanm是安装Perl module的最方便的方法。自动下载安装依赖包。使用CPAN shell或下载源码包安装模块,遇到大量依赖关系,非常头痛。

安装cpanm

mkdir -p ~/perl5
wget -O- http://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib
eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`
echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.bashrc
echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.bashrc
echo 'cpanmL="cpanm -v --notest -l ~/perl5"' >> ~/.bashrc

perlcc工具

安装perlcc

cpanmL B::C

perlcc只能作用于一个perl文件,但是如果程序中有perl包,就会出现点问题,解决办法是把所有的源代码copy到一个文件,取消所有的package定义,把原来不同package下面同名的函数改名,不同的package里面的同名全局变量也要改名。然后

perlcc -o hello hello.pl

Perlcc的原理是把perl程序转换成C程序,然后用GNU C编译器编译。但是perl5.10.0版本后移除perlcc。还有就是perlcc命令可能对perl代码编译不成功,或成功后不能正常运行(实测)。

perl2exe

perl2exe,据说很好用,但令人沮丧的是要license, 而且据说跨平台还有问题。 我没有试过,这里标记一下先。

PAR

安装pp和PAR

pp 模块用于perl程序源代码的编译和打包:https://metacpan.org/pod/pp PAR 模块用于perl程序源代码的编译和打包:https://metacpan.org/pod/PAR

cpanmL pp
cpanmL PAR
cpanmL PAR::Filter::Crypto

编译和加密

echo 'ppS=pp -f Crypto -F Crypto -M Filter::Crypto::Decrypt' >> ~/.bashrc
ppS -o hello hello.pl
								—— dulunar 后记于 2019.12