PHP代码加密面面观

访客5年前黑客文章600

年代在开展,在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]  黑客接单网

相关文章

聊天监控,找黑客办事是犯法律责任的吗,找黑客先盗号后给钱

ASP+Access的安全危险ASP+Access解决计划的首要安全危险来自Access数据库的安全性,其次在于ASP网页规划过程中的安全漏洞。 然后慢慢跑啊慢慢跑,半途还去洗了个澡..最终跑出来一切...

拿站接单黑客_花钱找sql黑客-找黑客攻击网站

「拿站接单黑客_花钱找sql黑客-找黑客攻击网站」BGP入门在搞清楚遥控的作业流程后,咱们知道是能够对其进行彻底的模仿(先假定射频序列已知),创造出一个以假乱真的遥控来。 但在加工二进制指令前,怎么完...

免费接单的黑客找QQ_黑客找qq的视频教程

ArrayBuffer自身便是一行一堆0和1组成的序列, ArrayBuffer不知道这个数组中第一个元素和第二个元素之间怎么切割。 这意味着假如要与其他线程同享一些数据,则有必要将其仿制。 这是经过...

华夏黑客同盟,找黑客改年龄,找黑客女友

/// 显现远程桌面端口 /// </summary>3)默许后台办理暗码:msmirmsmir 或 msmir应急呼应,估量最近几年听到这个词更多是由于各大甲方公司开端建...

勋章,找黑客查火车票信息,广东找黑客联系方式

1.Burp中Options->Upstream Proxy Servers,装备原Proxy(你本来上网的)。 root@e:/rootkit# python -m SimpleHTTPSer...

我儿子爱赌博请老师帮我挽回他

%DOMAIN_HOME%serversAdminServertmp_WL_internalroot@vultr:~# cat check 临时解决建议%DOMAIN_HOME%serversAdmi...