Подтвердить что ты не робот

Преобразование PHP файла в двоичный

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

4b9b3361

Ответ 1

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

Ответ 2

Несколько месяцев назад я искал его (защита php-кода или защита script), и мои результаты были:

Я предоставляю некоторое описание, но попробую Google и прошу прощения.

Будьте осторожны с поиском, потому что вместо этого вы можете столкнуться с компрессорами php, а компрессоры - всего GZIP и другие механизмы сжатия передачи http.

Наиболее важными проблемами с защитными средствами php script являются:

  • Сколько будет работать скорость работы в режиме php (вниз) (насколько скорость снижается)

  • Нужна ли нам дополнительная среда или установленные инструменты на сервере php?

  • Простота управления

Вы найдете полное описание и сравнение по: http://www.seocompany.ca/software/free-encryption-software.html

обфускаторы

Много обфускаторов, которые вы найдете в Интернете, но там нет гарантии, что ваши коды будут работать.

Даже я нашел смешанный путь с Visual C++ и MSVS для обфускации php, а также потому, что у меня тоже есть опыт работы с asp.net. Я тестировал его, однако не работал.

Преобразователи и блокировки

  • ионный протектор (http://www.ioncube.com/): О, не свободен, но я много слышал о его знаменитом имя

  • phc (php-компилятор): бесплатный и был хорошим примером, но "Брендан Лонг" сказал правду, потому что 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-фреймворков и zend-охранников, очевидно, снижают скорость выполнения. Мне нравится ускоренное время выполнения php.

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

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

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

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

Ответ 3

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

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

Загрузите исходную библиотеку php для версии, которая у вас есть. [windows.php.net] В комплект включены материалы zend.

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

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

Шаг 3. В разделе VС++ Directiories добавьте следующее в библиотеки Include: 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\DEV

Шаг 4. В препроцессоре 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");
?>

Ответ 4

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

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

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

Ответ 5

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

BR, Dawid.