能否将PHP文件转换为二进制文件并部署到Web服务器上?
能否将PHP文件转换为二进制文件并部署到Web服务器上?
由于PHP是一种(相对)可移植的语言,将PHP源代码编译成字节码而不是二进制代码更可取。为此,有一个实验性项目称为bcompiler。
几个月前,我搜索了一下(php代码保护或脚本保护),我的结果是:
我提供一些描述,但建议你自己搜索并原谅我。
要小心搜索,因为你可能会遇到php压缩器,而压缩器只是关于gzip和其他http传输压缩机制。
php脚本保护工具最重要的问题有:
PHP运行时性能速度降低多少?
我们需要在php服务器上安装额外环境或工具吗?
易于操作
你可以在此处找到整个描述和比较:http://www.seocompany.ca/software/free-encryption-software.html
混淆器
你会在网上找到很多混淆器,但不能保证你的代码能够工作。
即使我找到了一个用Visual C++和MSVS混淆php代码的方法,因为我也有asp.net经验,我试过了,但没有成功。
转换器和锁定器
ion保护程序 (http://www.ioncube.com/):不免费,但我听说它很有名
phc (php编译器):免费的,曾经是一个不错的选择,但"Brendan Long"说了实话,因为phc的安装方式很痛苦。不过结果很神奇,而且有像ion这样的著名名称。
php locker:我试过并测试了一下。它在编译代码时出错,而且只适用于低于php5的版本。绝对不免费,而且如果你想破解它,那么对于考虑使用ccr-acks的人来说,几乎是不可能找到php锁定器的。
Zend Guard: Zend Guard是一种完美的保护工具,但比phc或ion更难使用,因为您需要在服务器上安装Zend运行时环境(ZRE),而Zend Guard绝对不免费。但如果您是Zend粉丝(zend框架+zend IDE+Zend Guard),您应该知道Zend Guard与zend IDE兼容,并且代码阻塞过程将变得非常容易。我不是Zend粉丝,因为zend框架和zend guard都会明显降低运行速度。我喜欢php快速的运行速度。
php -> C/C++编译
(是可能的)(最佳性能全球通用):这并不是很出名,因此如果没有人谈论它,那很正常。
Facebook Hiphop:这个工具由Facebook使用,用于将php文件编译为c ++ / c以获得更好的性能,但最终我们会得到无法阅读的编译代码。我记不清了,但我认为它需要对Linux或Microsoft Visual C ++中的PHP重新编译机制有很好的熟悉。(但请勿相信我的虚弱记忆,请谷歌一下)(学习有关PHP重新编译方式的内容,请参考php_manual.chm的最新版本)
最后,我使用正则表达式制作了一个简单的php混淆器,它适用于php 5.3和我的复杂脚本,因此我开始使用OpenSSL和不同的加密机制,并对php安全开发进行了审查。
祝您成功。
// this needs to match the compiler version that php was compiled with
#define _CRT_SECURE_NO_WARNINGS
#define PHP_COMPILER_ID "VC14"
#pragma once
/* You must include config.w32.h first */
#include "win32/config.w32.h"
#include "php.h"
ZEND_FUNCTION(ReturnString);
zend_function_entry Project1_functions[] =
{
ZEND_FE(ReturnString, NULL)
{
NULL, NULL, NULL
}
};
zend_module_entry Project1_module_entry =
{
STANDARD_MODULE_HEADER,
"Project1 Module",
Project1_functions,
NULL, NULL, NULL, NULL, NULL,
NO_VERSION_YET, STANDARD_MODULE_PROPERTIES
};
ZEND_GET_MODULE(Project1)
ZEND_FUNCTION(ReturnString)
{
zval* value;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &value) == FAILURE)
{
RETURN_FALSE;
}
convert_to_string(value);
RETURN_STRING(Z_STRVAL_P(value), true);
}
The script is quite simple:
<?php
echo ReturnString("The Returning String");
?>
这取决于你所说的“二进制”是什么意思。
如果你想编译(或者只是混淆)你的PHP代码以防止别人修改,那么可以使用字节码编译器。其中一个例子是Zend的工具,还有其他的工具。(我更喜欢Zend的工具,因为他们是PHP背后的主要公司,并且完全针对所有版本的PHP进行QA测试)。
如果你想将你的PHP代码编译并链接到PHP运行时中,然后部署它(就像C\C++一样),那么不行。也许从理论上讲这是可能的,但会很混乱。(不切实际或可行,而且我认为没有人尝试过组合任何东西,输出也将与特定架构绑定)。