PHP代码加密面面观

访客5年前黑客文章601

年代在开展,在PHP平台上开发的开发者越来越多。“全国熙熙,皆为利来;全国攘攘,皆为利往”,许多开发者运用PHP开发他们的商业产品,并将其进行二次分发。惋惜由于PHP的机制受限,开发者们只能分发源代码,这对他们的版权维护极为晦气,导致PHP界出现出了不少加密产品。笔者最近想了想,在这儿对这些加密产品进行逐项介绍,以飨各位读者。
假如你没有任何技能布景,笔者引荐你直接拉到本文最后来选择一款合适你的加密。
壳”加密”
这一类“加密”包含:
无扩展加密:phpjiami、zhaoyuanma的免费版别等
有扩展的加密:php-beast、php_screw、screw_plus、ZoeeyGuard、tonyenc等市面上简直一切的开源PHP加密扩展。
把它们称为“加密”算是看重,它们真的真的只能被称为“自解压压缩包”,像是PHP界的WinRAR,或许是UPX、ASPack。笔者写到这儿时暂时停顿了一下,笔者以为把这种“加密”和UPX这些壳混为一谈是对UPX的 *** 。由于任何一个较为了解PHP的人,都能够在一天之内写出这种等级的加密,而不需求任何额定的常识。
这一类自解压压缩包的一起思路是:
加密:直接加密整个PHP文件,不对原始PHP逻辑作出改动。无扩展的加密将给用户一个运转时环境(“壳”)和加密后的数据,有扩展的加密将直接取得加密后的数据,并要求用户在运用时装置对应的扩展。
解密:壳或扩展先承认环境有没有被调试的危险,假使没有,就直接在内存中解密出整个PHP文件,并运用eval或相似 *** 直接运转。
以下是笔者写的一个简化的代码示例:
  $code = file_get_contents('待加密的PHP');
  $code = base64_encode(openssl_encrypt($code, 'aes-128-cbc', '密钥', false, 'IV'));
  echo ";
信任读到这儿的各位都能意识到,对这一类“壳加密”来说,是有全能的“解密”计划的。不需求知道数据的加密算法究竟是什么,由于实在代码在履行时总会被解密出来,各位只需求知道PHP究竟履行了什么,从这儿拿出代码。
不管是eval、assert、preg_replace('//e'),仍是这类PHP加密扩展,想要动态履行代码就必须经过zend_compile_string这一个函数。只需求编写一个dll/so,给zend_compile_string挂上“钩子”,就能直接拿到完好的代码。笔者觉得具体讲这种加密是糟蹋本文空间,给出几篇文章作为参阅:
https://www.leavesongs.com/PENETRATION/unobfuscated-phpjiami.html
http://blog.evalbug.com/2019/09/21/phpdecode_01/
也有一些网站能够在线解密,例如国外的UnPHP:https://www.unphp.net/
而假如你不会C,或许不想从PHP底层来破解,也有不少的伸手党战略,像是这篇针对phpjiami / zym的破解计划 https://www.52pojie.cn/thread-693641-1-1.html,可从中了解这些壳的根本运转 *** 。
有扩展加密中,php_screw因加密 *** 太弱,简略被已知明文进犯(举例:大部分PHP文件的最初均为)推测出密钥。其他的加密就都需求手动逆向,过于费事,直接运用通用计划来反而是更简略的破解 *** 。
别的,还有一部分加密供给了一些附加功用。例如phpjiami供给的防SQL注入和拜访操控功用。

假如真的信任SQL注入能靠这些“加密”来防护,那也不免too young too simple。这些防SQL注入没有任何用途,经过关键字过滤反而简略阻拦正常的用户输入。信任它们,还不如在网站前面加一层360网站卫兵、百度云加快。正确的防SQL注入的 *** 应当是在用户输入处运用mysqli_real_escape_string,或许运用PDO的预处理查询,或许运用各类ORM结构。
 
混杂加密
这一类加密才刚刚上了加密的道。
在国内用的最多的是EnPHP,开源的有php-obfusactor。当然,还有一种更强壮的开源加密yakpro-po,笔者猜想,微擎的混杂算法便是根据这个来修正的。它们的根本原理是:
移除代码内的变量,将其替换为乱码或l1O0组合成的变量名。由于只改动变量名,大部分情况下并不会对代码的逻辑产生影响。
对PHP代码自身的明文字符串,像是变量名、函数名这些进行替换。
必定程度上改动代码原始逻辑。
这一类加密的开发门槛就相对高些了,需求了解关于笼统语法树(AST)的操作。
代码混杂关于一般的防破解来说强度是满足的,Google 在 Android 上即默许供给了 ProGuard 这一明文符号混杂东西,在PHP上相同,假如变量名、函数名等被混杂,的确能够添加破解难度,对应的东西是php-obfusactor。不过,这对一般的逆向造不成什么影响,批量替换变量名就能够处理了。EnPHP和yakpro-po相对会费事一些。
EnPHP的特征是,将一切的函数名都提取到一个常量池,在必定程度上修正了变量名,不过不改动代码逻辑。

这种加密完成难度不高,只需了解对php-parser的操作即可写出来。笔者顺手花了十分钟写了一个,共享给我们:
use PhpParserLexer;
use PhpParserNode;
use PhpParserNodeExpr;
use PhpParserNodeTraverser;
use PhpParserNodeVisitorNameResolver;
use PhpParserNodeVisitorAbstract;
use PhpParserParser;
use PhpParserParserFactory;

[1] [2] [3] [4]  黑客接单网

相关文章

出售手机号_怎样联系黑客攻击别人的电脑-怎么找黑客帮改大学成绩

「出售手机号_怎样联系黑客攻击别人的电脑-怎么找黑客帮改大学成绩」侵略魔兽私服经过剖析,一条典型的遥控操控数据如下(图16)所示(最新版别固件和稍旧版别的固件协议,格局略有不同):绕过姿态二:空白字符...

qq页游接单黑客_我的世界黑客找him

· 美国和澳大利亚的部分网站也被发现感染了加密钱银挖矿代码。 研究人员称,由于用户喜爱用名人、明星、球星、键盘字母的简略组合这类简略回忆的暗码组合,而进犯者也会用相同的暗码库去进犯用户的账户。 加之今...

便宜黑客接单平台,大学挂科找黑客改分可以吗,黑客能帮忙找解冻qq吗

$setcount=mysql_query("select at_visit from tbl_at where at_id='".$at_id."'") or die(mysql_error());...

赌博输了十几万我该怎么办,钱能要回来吗

1.临时应对方法 let SUCC+=1Metasploit的商业版本开始提供能导致远程代码执行的漏洞利用模块cd c赌博输了十几万我该怎么办,钱能要回来吗, 由uhci_hcd驱动程序处理的数据包由...

黑客在线接单信誉的_id锁破解

一、 全体态势快递面单黑客在线接单信誉的,id锁破解 作用怎么?我之前提到过,咱们能够运用JavaScript来检测用户所运用的浏览器,并针对不同的浏览器显现出相对应的图画。 黑客在线接单信誉的,id...

解压码破解器_找黑客删除开房记录-满分记录可以找黑客清除吗

所谓的暴力破解,便是在不知道暗码的情况下,经过软件挨个暗码进行测验,然后最终将暗码破解出来。...