Конвертировать PHP файл в двоичный файл - PullRequest
17 голосов
/ 04 декабря 2009

Можно ли преобразовать файл PHP в двоичный файл и развернуть его на веб-сервере?

Ответы [ 5 ]

20 голосов
/ 04 декабря 2009

Поскольку PHP является (относительно) переносимым языком, компиляция исходного кода PHP в байт-код вместо двоичного кода является более предпочтительной. Для этого существует экспериментальный проект под названием bcompiler .

11 голосов
/ 06 мая 2012

Несколько месяцев назад я искал его (защита 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 compiler) : бесплатный и хороший пример, но «Брендан Лонг» сказал правду, потому что phc имеет болезненный способ установки. Однако результат является волшебным и имеет известное имя, такое как ион

  • php locker : Я получил его и проверил. У него была ошибка с скомпилированным кодом, и он выпущен ниже php5. Абсолютно не бесплатно, и для тех, кто думает о ccr-ac * ks, найти его для php-локера невозможно.

  • Zend Guard : идеальный способ защиты, но он сложнее, чем phc или ion, потому что вам нужна среда выполнения Zend (ZRE) на вашем сервере, и Zend Guard абсолютно несвободен, однако, если вы Вы Zend Guy (Zend Framework + Zend IDE + Zend Guard). Вы должны знать, что Zend Guard совместим с Zend IDE, и процесс блокировки кода будет таким простым. Я не Zend парень, потому что любой из Zend Framework и Zend Guard снижают скорость выполнения, очевидно. Я люблю php speed runtime.

  • php -> C/C++ compiling (ДА ЭТО ВОЗМОЖНО) (ЛУЧШАЯ ЭФФЕКТИВНОСТЬ В МИРЕ): Это не так знаменито, поэтому нормально, если никто не говорил.

  • facebook hiphop : Этот инструмент использует facebook для компиляции php-файлов на c ++ / c для повышения производительности, однако в итоге у нас есть нечитаемые скомпилированные коды. Я не помню, но я думаю, что нужно хорошее знакомство с Linux или о механизме перекомпиляции php на Microsoft Visual C++. (Однако НЕ ДОВЕРЯЙТЕ моей слабой памяти и гуглите ее) (И ДЛЯ УЧЕНИЯ О РЕКОМЕНДУЕМОМ PHP СПОСОБ PLZ ОТНОСИТСЯ К последней версии php_manual.chm)

Наконец, я сделал свой простой обфускатор php, используя регулярные выражения, которые работали на php 5.3, и мои сложные сценарии, поэтому я перешел на OpenSSL и различные механизмы шифрования и получил обзор по разработке php secure.

Желаю вам успеха.

4 голосов
/ 25 августа 2017

Это уже давно, но следует делать то, что вы хотите.

Создайте свое собственное расширение с помощью движка zend при компиляции в c ++ dll. Добавьте эту dll в ваше местоположение ext в каталоге php. После этого вы можете вызывать свои собственные сценарии php как функции php. Помните, что php относится только к серверу, поэтому никто не сможет получить ваши скрипты, если они не скопированы с сервера и не розданы.

Загрузите исходную библиотеку php для вашей версии. [windows.php.net] Zend вещи, которые вам нужны, будут включены.

Шаг 1. Создайте новый проект и выберите «Общие» в Visual C ++ и опцию пустого проекта. Дайте ему имя и нажмите ОК. Мой Project1, так что я буду его использовать.

Шаг 2. Щелкните правой кнопкой мыши имя решения и выберите свойства. Выберите Динамическая библиотека (.dll) в разделе «Параметры проекта по умолчанию» / «Тип конфигурации» в разделе «Свойства конфигурации / Общие». Убедитесь, что вы изменяете конфигурацию Debug, так как Release не используется.

Шаг 3. В директивах VC ++ добавьте следующее в библиотеки включений: 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 \ главная C: \ PHP-7.1.8-Src Библиотеки: C: \ PHP-7.1.8 \ * 1011 разработчика *

Шаг 4. В препроцессоре C / C ++ добавьте ZEND_DEBUG = 0; ZTS = 1; ZEND_WIN32; PHP_WIN32 к определениям препроцессора

Шаг 5. Под вводом компоновщика добавьте php7ts.lib. Это должно соответствовать lib для вашей версии php

Нажмите кнопку ОК, чтобы сохранить настройки свойств для вашего решения.

Теперь давайте добавим файл кода для вашей функции (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);
}

Нажмите F7 для компиляции, и он должен создать Project1 \ Debug \ Project1.dll. Скопируйте Project1 в ваш каталог ext C: \ php-7.1.8 \ ext и добавьте расширение = Project1.dll в ваш php.ini, и все будет хорошо. Если это не работает, дважды проверьте ваши свойства, чтобы убедиться, что вы ничего не пропустили.

The script is quite simple:

<?php
echo ReturnString("The Returning String");
?>
1 голос
/ 04 декабря 2009

Если веб-сервер работает на базе Linux, вы можете создать пакет, например .deb или .rpm (в зависимости от дистрибутива Linux), и легко распространять / развертывать его.

BR, Dawid.

1 голос
/ 04 декабря 2009

Это зависит от того, что вы подразумеваете под «двоичным».

Если вы хотите скомпилировать (или просто обфусцировать) свой PHP-код, чтобы не дать кому-то еще изменять, используйте компилятор байт-кода. Одним из примеров являются инструменты из Zend , среди прочих. (Я предпочитаю инструменты Zend, потому что они являются основной компанией за PHP и полностью контролируют все свои инструменты на всех версиях PHP).

Если вы хотите скомпилировать свой код PHP и связать с ним среду выполнения PHP, а затем развернуть его (например, C \ C ++), то нет. Может быть, в теории это было бы возможно, но это было бы беспорядок. (Это не практично и не выполнимо, и не думайте, что кто-то собирает что-то вместе, и выходные данные также будут привязаны к конкретной архитектуре).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...