最近 ENPHP 上线了两种注释加密,

这也是我个人在代码加密混淆的实际应用场景里最常用的两种方法:

1、隐藏代码

示例:

/*<hide>*/
echo 1;
/*</hide>*/

能在加密混淆前,去掉

   echo 1;

这样,中间有部分逻辑就会去除。

语法说明:

/*<hide>*/
需要隐藏的代码
/*</hide>*/
/*<hide>*/和/*</hide>*/字符串固定,<和>之间不能有任何空格,hide只能小写

应用场景?我举个例子:

  • 你需要加密一部分代码给第三方,但是中间有些核心方法他们用不到。
  • 你的商业代码,但是在打包时,你只想隐藏一部分功能给用户。

2、字符串+数字加密

示例:

    $a = /*<encode>*/"明文数据1"/*</encode>*/;
    echo /*<encode>*/2/*</encode>*/;
    print(/*<encode>*/"明文数据3"/*</encode>*/);

加强字符串混淆强度,即使反编译后仍无法找到原字符串,使 hacker 们反编译后依旧无法正常阅读。

语法:

/*<encode>*/'字符串'/*</encode>*/
/*<encode>*/"字符串"/*</encode>*/
/*<encode>*/123/*</encode>*/

仅支持字符串变量和数字,如果中间是其它格式将不会转换。同理,encode 前后<和>都不能有空格

应用场景:

  • 假如你做的是一个商业软件,要限制域名。对域名加密判断过程可以这样写(仅供参考):
$domain = /*<encode>*/'djunny.com'/*</encode>*/;
$message = /*<encode>*/'Plz Register'/*</encode>*/;
if(strpos($_SERVER['HTTP_HOST'], $domain) !== false){
   exit($message);
}

当然,还有一个更加优化版本:

$a = 'd';
$b = 'j';
$k = '*';
$domain = str_replace($k, '', $a.$k.$b.$k)./*<encode>*/'unny.com'/*</encode>*/;
$message = /*<encode>*/'Plz Register'/*</encode>*/;
if(strpos($_SERVER['HTTP_HOST'], $domain) !== false){
   exit($message);
}

随意发挥~

好了,先说到这,有什么问题可以留言给我。