Perl PAR::Packer是如何工作的?
我正在使用PAR::Packer,这个问题突然出现在我的脑海中。PAR::Packer在Perl中是如何工作的?它是否编译了Perl脚本到.exe,像g++一样编译C++源到.exe,或者它像python中的py2exe一样工作,将解释器和脚本打包成一个.exe?,使其完全清楚:Perl PAR::Packer是如何工作的?,perl,exe,executable,Perl,Exe,Executable,我正在使用PAR::Packer,这个问题突然出现在我的脑海中。PAR::Packer在Perl中是如何工作的?它是否编译了Perl脚本到.exe,像g++一样编译C++源到.exe,或者它像python中的py2exe一样工作,将解释器和脚本打包成一个.exe?,使其完全清楚: 像这样的工具不会“编译”Perl脚本。它们将perl解释器与源文件和任何必需的模块捆绑在一起,形成一个大而胖的可执行文件。当它运行时,原始源被提取并提供给附带的perl 这项工作相当不错,但不会产生速度提升(相反…)
- 像这样的工具不会“编译”Perl脚本。它们将perl解释器与源文件和任何必需的模块捆绑在一起,形成一个大而胖的可执行文件。当它运行时,原始源被提取并提供给附带的perl 这项工作相当不错,但不会产生速度提升(相反…)。唯一的优点是,您可以将程序作为单个(尽管相当大)文件分发,而无需依赖项
- 有一个非常实验性的工具叫做
,它能够将一些Perl程序翻译成C或Perl字节码序列化。正如它所说: 以这种方式生成的代码不能保证工作。整个codegen套件(包括perlcc)应该被认为是非常实验性的。强烈反对用于生产目的 这是因为Perl语言不支持静态编译。它需要能够在主执行阶段所在的同一会话中,在解析某些动态特性的过程中执行代码perlcc
作为SeNeMeL.EXE的例子,它看起来像Par包装器或PARL2EXE中所做的事情。 它将解释器打包到exe中
您可以在7-zip中打开sendemail.exe!那里有一些文件夹,但实际上看不到它的实际文件 我想这是某种形式的自解压可执行文件,但是,它执行代码 您可以使用process monitor监视它,您可以看到 或者使用process explorer,查看它是否使用它创建的临时目录中的任何dll 它创建一个临时目录,例如C:\Users\user\AppData\Local\Temp\pdk user
我见过一个perl EXE,它是以7-Zip格式打开的,所以可能是一种自解压Zip..或7z可以处理的自解压压缩格式。如果您在sysinternals的“进程监视器”中查看它,您会看到它生成写入临时目录的文件。如果打开temp目录C:\Users\user\AppData\Local\temp\pdk user
,就会看到它的子目录perl58.dll,这就是它运行的perl Interrpter。
178c2b604baa8a7f1ebc80539f378bff.dll
1823e8f62785746fd29cf0b06c636600.dll
465d2954d90fe6225ea61b3907c91da8.dll
6145f78a34d5ced8200800f1455d578a <-- the directory with the perl58. dll
9c50b5816b0e35f047e41f5899721d46.dll
f4e2e0db77ed1e6572c2f490479cd815.dll
f72f556d99dfb6b0c3bb37f123e2ee96.dll
6145f78a34d5ced8200800f1455d578a\perl58.dll
...the perl2exe tool is not a way to hide your source code.
Now it's even come to the attention of the security community (reported in bugtraq, for example).
For details, see the report from net-security's page.
Please stop supporting perl2exe. Please use PAR for a complete installation package, or perlcc to simply compile the top-level program.
-- Randal L. Schwartz, Perl hacker