1.å¦ä½äº¤åç¼è¯perl
2.perl是源码什么?
3.perlå®ç½ä¸binariesåsourceçåºå«
4.perl如何避免反编译
å¦ä½äº¤åç¼è¯perl
å ä¸è½½Perlæºç ï¼piler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)扩展资料:
Perl借用了C,sed,编译awk,源码shell脚本语言和许多其他编程语言的编译功能。它最重要的源码功能是其集成的正则表达式功能和庞大的第三方代码库CPAN。
简而言之,编译英雄联盟源码模板Perl像C一样强大,源码并且像脚本描述语言(如awk和sed)一样方便。编译 Perl语言爱好者将其称为“一种拥有各种语言功能的源码梦幻脚本语言”和“ Unix中的王牌工具”。
编译是编译从源代码(通常是高级语言)到目标代码(通常是低级语言或机器语言)的转换过程,可以由计算机或虚拟机直接执行。源码
但是编译,也存在从低级语言到高级语言的源码编译器。在这种类型的编译编译器中,用来从由高级语言生成的源码低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成高级语言的编译器,或生成需要进一步处理的gamejam源码中间代码的编译器(也称为级联)。
百度百科-perl
perlå®ç½ä¸binariesåsourceçåºå«
binariesâäºè¿å¶æ件âçææSourceâæºâçææå³ï¼binariesæ¯é¡¹ç®å¼åæ¶ä½¿ç¨æ件ï¼sourceæ¯æºç çææï¼ä¹å°±æ¯å¯ä»¥æ¥çå°æºæ件æºç ï¼æå©äºæ´å¥½çç解ãè³äºsourceä¹å°±æ¯ç»éªä¸°å¯çå èè½çæç½ï¼ä¸è¬æ们åªä½¿ç¨binariesæ件ã
perl如何避免反编译
为了保护Perl源代码,常用的有三种方法。
1.
使用Perl自带的perlcc工具。这个工具有一个最大的弱点:它只能作用于一个perl文件。假如你和我一样写了十几二十几个perl包,主程序里倒是空空如也,估计要郁闷死。用也是inflate源码可以用的,就是要把所有的源代码copy到一个文件,取消所有的package定义,把原来不同package下面同名的函数改名,不同的package里面的同名全局变量也要改名。然后
$perlcc -o hello hello.pl
得到可执行程序hello. Perlcc的原理是把perl程序转换成C程序,然后用GNU
C编译器编译。它在Windows上也可以用,但需要额外安装C编译器,connector源码比如Intel C或者MS Microsoft Visual
C。由于perlcc把代码先变C再变可执行程序,反编译出来的源码很难看懂,所以安全性很高。但是把所有的代码写一个文件,模块也不能用了,这简直是从地铁时代回到乌蓬船时代,我想不会有人觉得舒服。hdcp源码何况这样混杂后的代码该如何维护升级和做版本控制呢,头大。另外,perlcc有申明,不保证它编译出来的东西能用(参见$perldoc
perlcc)。我没遇到这个情况,而是遇到了perlcc直接就对我的程序编译不通过,没戏唱了。{ ..更新:找到perl不能编译我的程序的原因了:1.
只能用use 不能用require,模块文件名的后缀都改成.pm, use后跟不带后缀的文件名就可以。2.
所有的全局数组,必须用my, our,
或者local来定义,不可以用缺省作用范围。第二点其实应该是perlcc的一个bug了,因为关联数组和简单变量都没有这个问题。}
2. perl2exe,据说很好用,但令人沮丧的是要license, 而且据说跨平台还有问题。
3. PAR(Perl Archive Toolkit)。这个命名法则是类似于JAR(Java
Archive)。下载下来以后还要从CPAN上下载一些依赖性模块。CPAN模块果然好装,每个模块都是
$perl Makefile.PL
$make
$make install
就能装好。最后安装PAR。装好以后会在/usr/bin/下面添加一些工具。我不关心别的,就要用pp:
$pp -o hello hello.pl
这样生成的hello就是可执行文件,而且把用到的perl模块文件也全打包进来了。运行的时候它会在/tmp/par-username/下生成一个叫
cache-之类的临时文件夹,打开看看可以发现就是自己的源代码。这样不是没达到我想要的隐藏源代码的目的么?原来还需要启动过滤器:
$pp -f Bleach -o hello hello.pl
或者
$pp -f Bytecode -o hello hello.pl
前面的Bleach过滤器是PAR自己实现的,而Bytecode这种过滤方式是Perl的标准格式(需要Perl
5.8.1以上版本支持)。过滤之后,临时文件夹里面的文件就不是简单可读了。当然是有办法crack,
但这和恢复带初始变量名的源代码是两回事。