将PHP文件转换为二进制文件

Hul*_*ulk 17 php binary

是否可以将PHP文件转换为二进制文件并将其部署在Web服务器上?

Emr*_*ici 20

由于PHP是一种(相对)可移植语言,因此更优选将PHP源代码编译为字节码而不是二进制代码.为此目的,有一个名为bcompiler的实验项目.


小智 12

几个月前我搜索它(PHP代码保护或脚本保护),我的结果是:

我提供了一些描述,但试着谷歌他们并原谅我.

请小心你的搜索,因为你可能会遇到php压缩器而压缩器只是GZIP和其他http传输压缩机制.

php脚本保护工具最重要的问题是:

  1. php运行时性能的速度会降低多少(下降)(速度下降多少)

  2. 我们需要一个额外的环境或php服务器上安装的工具吗?

  3. 易于处理

您将在以下网址找到有关完整描述和比较的信息:http://www.seocompany.ca/software/free-encryption-software.html

混淆器

您可以在网上找到很多混淆器,但无法保证您的代码能够正常工作.

即使我发现混淆的方式Visual C++MSVS混淆PHP,因为我也经验丰富,但asp.net我测试它但是没有用.

转换器和储物柜

  • 离子保护器(http://www.ioncube.com/):哦,不是免费的,但我听到很多关于他的名字

  • phc(php编译器):免费且是一个很好的案例,但"Brendan Long"说实话,因为phc有一个痛苦的安装方式.但是结果是神奇的,并且有离子等的名称

  • php locker:我得到了它并测试它.它有编译代码的错误,它的发布低于php5.绝对不是免费的,谁想到ccr-ac*ks找到它的php锁定是不可能的.

  • Zend Guard:一种完美的防范方式,但它比phc或ion更难,因为你的服务器需要Zend运行时环境(ZRE),Zend Guard绝对不是免费的,但如果你是Zend家伙(zend framework + zend IDE + zend) Guard)您应该知道Zend Guard与zend IDE兼容并且代码阻塞过程将非常简单.我不是Zend的人,因为zend框架和zend guard都明显地降低了运行时速度.我喜欢php speeded运行时.

  • php -> C/C++ compiling (是的,它是可能的)(通过世界的最佳表现):它不是那么有名,所以没有人谈论这是正常的.

  • facebook hiphop:这个工具用于facebook在c ++/c上编译php文件以获得更好的性能,但最后我们有不可读的编译代码.我不记得但我认为它需要熟悉linux或关于php重新编译机制Microsoft Visual C++.(但是不要相信我的弱记忆并谷歌)(和学习关于PHP重建方式PLZ请参阅最新版本的php_manual.chm)

最后,我使用正则表达式创建了我自己的简单php混淆器,该正则表达式适用于php 5.3和我的复杂脚本,因此我继续使用OpenSSL不同的加密机制并对php安全开发进行了审核.

祝你成功.


dev*_*r68 5

这是过期的方式,但应该做你想做的。

使用 zend 引擎制作您自己的自定义扩展,因为它们编译为 c++ dll。将该 dll 添加到 php 目录中的 ext 位置。之后,您可以将自己的 php 脚本作为 php 函数调用。请记住,php 只是服务器端,因此除非从服务器复制并分发脚本,否则没有人可以获取您的脚本。

下载您拥有的版本的 php 源库。[windows.php.net] 你需要的zend 东西都会被包括在内。

步骤 1. 创建一个新项目并选择 Visual C++ 下的“常规”和空项目选项。给它一个名字,然后单击确定。我的是 Project1,所以我将使用它。

步骤 2. 右键单击​​解决方案名称并选择属性。在 Configuration Properties/General 项中的 Project Defaults/Configuration Type 下选择 Dynamic Library (.dll)。确保您正在更改调试配置,因为未使用 Release。

步骤 3. 在 VC++ Directiories 下的 Include libraries 下添加以下内容: C:\php-7.1.8-src\Zend C:\php-7.1.8-src\win32 C:\php-7.1.8-src\TSRM C:\php-7.1.8-src\main C:\php-7.1.8-src 库:C:\php-7.1.8\dev

步骤 4. 在 C/C++ Preprocessor 下添加 ZEND_DEBUG=0;ZTS=1;ZEND_WIN32;PHP_WIN32 到 Preprocessor Definitions

步骤 5. 在链接器输入下添加 php7ts.lib。这需要与您的 php 版本的 lib 匹配

单击确定以保存解决方案的属性设置。

现在让我们为您的函数(Project1)添加一个代码文件

在源文件文件夹下右键单击并添加代码。我打电话给我的 Project1.cpp,这里是来源。您需要将 config.w32.h.in 重命名为 config.w32.h 并将其复制到需要它的目录中。Intellisense 应该会告诉您它在哪里,config.w32.h.in 位于 C:\php-7.1.8-src\win32 目录中。

// 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);
}
Run Code Online (Sandbox Code Playgroud)

按 F7 编译,它应该创建 Project1\Debug\Project1.dll。将 Project1 复制到您的 ext 目录 C:\php-7.1.8\ext 并将 extension=Project1.dll 添加到您的 php.ini 中,您应该很高兴。如果它不起作用,请仔细检查您的属性以确保您没有遗漏任何东西。

The script is quite simple:

<?php
echo ReturnString("The Returning String");
?>
Run Code Online (Sandbox Code Playgroud)