1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mz-enphp_opensource

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 7.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 10:46 815f5eb

EnPHP

新版加密已上线,欢迎试用

ENPHP:http://enphp.djunny.com/

// 一个开源加密混淆 PHP 代码项目
// a Open Source PHP Code Confusion + Encryption Project

项目地址

GITHUB:https://github.com/djunny/enphp

GITEE:https://gitee.com/mz/enphp_opensource

背景

Автор проекта, будучи молодым разработчиком коммерческого программного обеспечения, столкнулся с проблемой взлома своих программ. В результате он потратил несколько месяцев на исследование и разработку EnPHP. Проект также предоставлялся многим людям, но, вероятно, существует множество взломанных версий в интернете. Основная ценность проекта заключается в предоставлении идеи шифрования и дешифрования кода.

Строго запрещено использовать для незаконных целей.

Эффект шифрования

Использование метода

include('./func_v2.php');
$options = array(
        // Метод шифрования имени функции: 1 = шифрование букв, 2 = шифрование случайных символов
        'ob_function'        => 2,
        // Максимальная длина переменной, созданной функцией шифрования
        'ob_function_length' => 3,
        // Вызов функции шифрования: 1 = зашифровать, 0 = не шифровать или массив ('eval', 'strpos') для указания метода шифрования
        'ob_call'            => 1,
        // Случайное добавление случайных символов
        'insert_mess'        => 0,
        // Режим вызова функции шифрования переменной: 1 = буквенное шифрование, 2 = случайное символьное шифрование
        'encode_call'        => 2,
        // Класс шифрования
        'ob_class'           => 0,
        // Шифрование переменных и параметров методов: 1 = буквенное шифрование, 2 = случайное символьное шифрование
        'encode_var'         => 2,
        // Максимальная длина зашифрованной переменной
        'encode_var_length'  => 5,
        // Зашифрованная строковая константа: 1 = буквенное шифрование, 2 = случайное символьное шифрование
        'encode_str'         => 2,
        // Максимальная длина зашифрованных строковых констант
        'encode_str_length'  => 3,
        // Шифрование HTML: 1 = зашифровано, 0 = не зашифровано
        'encode_html'        => 2,
        // Шифрование чисел: 1 = зашифрованное как 0x00a, 0 = незашифрованное
        'encode_number'      => 1,
        // Строка, которая будет сжата с помощью gzencode: 1 = сжато, 0 = несжато
        'encode_gz'          => 0,
        // Добавление новых строк (для улучшения читаемости)
        'new_line'           => 1,
        // Удаление комментариев: 1 = удалить, 0 = сохранить
        'remove_comment'     => 1,
        // Отладка
        'debug'              => 1,
        // Количество повторений шифрования, чем больше повторений, тем меньше вероятность обратного проектирования, но производительность значительно снижается
        'deep'               => 1,
        // Версия PHP
        'php'                => 7,
);
$file = 'code_test/1.php';
$target_file = 'encoded/2.php';
enphp_file($file, $target_file, $options);

Скрипт для тестирования восстановления

Вы можете поместить код, который вы хотите протестировать, в code_test, а затем запустить команду:

php code_test.php

Программа автоматически проведёт тестирование восстановления, и я также включил некоторые ранее протестированные скрипты.

P.S.

Изначально я также реализовал вариант goto + xor, но его совместимость и производительность были не очень хорошими, поэтому я отложил дальнейшее исследование до тех пор, пока у меня не появится достаточно времени и энергии.

Некоторые замечания

Как повысить уровень шифрования EnPHP?

  1. Постарайтесь преобразовать глобальную логику в методы класса, поскольку EnPHP обеспечивает более эффективное шифрование классов.
  2. Для инициализации переменных класса рекомендуется использовать метод __construct.
  3. Используйте числовые индексы вместо буквенных для многомерных массивов, где это возможно.
  4. Используйте комментарии для усиления шифрования.

При шифровании имён классов важно соблюдать порядок:

interface i {
    function init($a, $b);
}

class ii implements i {
    // В PHP имена параметров при наследовании могут отличаться
    function init($b, $c) {
        echo $b, $c;
    }
}
namespace a{
    class b{
    }
    # Правильно
    $b = new \a\b();
    # Неправильно
    #$b = new b():
}

Используйте синтаксис комментариев для шифрования строк (поддерживает строки + числа):

   // Формат: /*<encode>*/ данные для вторичного шифрования /*</encode>*/
   $a = /*<encode>*/"Данные открытого текста 1"/*</encode>*/;
   echo /*<encode>*/2/*</encode>*/;
   print(/*<encode>*/"Данные открытого текста 3"/*</encode>*/);

Используйте синтаксис комментариев, чтобы удалить код:

   echo 1;
   /*<hide>*/
   echo 2;
   /*</hide>*/
   echo 3;
   //Формат: /*<hide>*/ код для скрытия /*</hide>*/

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mz-enphp_opensource.git
git@api.gitlife.ru:oschina-mirror/mz-enphp_opensource.git
oschina-mirror
mz-enphp_opensource
mz-enphp_opensource
master