前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >enphp一个开源加密混淆PHP代码项目

enphp一个开源加密混淆PHP代码项目

作者头像
Inkedus
发布2020-04-16 15:26:52
1.6K0
发布2020-04-16 15:26:52
举报
文章被收录于专栏:InkedusInkedus
请输入图片描述
请输入图片描述

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

项目地址

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

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

背景

曾经,作者也是商业软件开发者中小将一名,软件总是被人破解,于是花了几个月研究了 EnPHP。这套项目也有偿提供过给很多人,不过,应该网上存在不少破解了。项目主要贵在为大家提供一个加密混淆和还原的思路。// 严禁用于非法用途。

加密效果

请输入图片描述
请输入图片描述

使用方法

代码语言:javascript
复制
include './func_v2.php';
$options = array(
        //混淆方法名 1=字母混淆 2=乱码混淆
        'ob_function'        => 2,
        //混淆函数产生变量最大长度
        'ob_function_length' => 3,
        //混淆函数调用 1=混淆 0=不混淆 或者 array('eval', 'strpos') 为混淆指定方法
        'ob_call'            => 1,
        //随机插入乱码
        'insert_mess'        => 0,
        //混淆函数调用变量产生模式  1=字母混淆 2=乱码混淆
        'encode_call'        => 2,
        //混淆class
        '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
        '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 中,运行命令:

代码语言:javascript
复制
php code_test.php

程序会自动进行回归测试,我也放了一些之前要测试的脚本在里边 P.S.

本来,还实现了 goto + xor 变种,不过兼容性和性能有点差,等有时间精力的时候再研究罢...

一些注意事项

在混淆类名时,代码一定要有先后顺序:

代码语言:javascript
复制
interface i {
    function init($a, $b);
}

class ii implements i {
    // PHP 中继承的参数名可以不一样
    function init($b, $c) {
        echo $b, $c;
    }
}
代码语言:javascript
复制
namespace a{
    class b{
    }
    # 正确
    $b = new \a\b();
    # 错误 
    #$b = new b():
}

使用注释语法加密字符串(支持字符串+数字):

代码语言:javascript
复制
 //格式:/**/要二次混淆的内容/**/
   $a = /**/"明文数据1"/**/;
   echo /**/2/**/;
   print(/**/"明文数据3"/**/);

使用注释语法去除代码:

代码语言:javascript
复制
echo 1;
   /**/
   echo 2;
   /**/
   echo 3;
   //格式:/**/要隐藏的代码/**/

下载地址

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019 年 10 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目地址
  • 背景
  • 加密效果
  • 使用方法
  • 回归测试脚本:
  • 一些注意事项
  • 在混淆类名时,代码一定要有先后顺序:
  • 使用注释语法加密字符串(支持字符串+数字):
  • 下载地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档