php源代码被加密了,请问如何解密?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php源代码被加密了,请问如何解密?相关的知识,希望对你有一定的参考价值。

参考技术A php源码被使用zend加密,现阶段还没用解密方法。但是好像现在有这样的一个studio,他们成功地完成了zend和eac的decode
不过是收费的
参考技术B 代码内有三个函数,由于每次加密这三个函数的顺序都不一样,这个以传参方式区分这三个函数
fun1 = ($var1, $var2 = '') = 核心函数,将乱码转成正常字符串
fun2 = (&$var1, $var2) = 校验 IP、域名,防止被破解。最后一句是解密整个 php 文件
fun3 = ($var1) = 将需要用到的函数赋值给 N 个全局变量
先从 fun1 开始逆起,在编辑器中双击变量名,该变量高亮之后,可以看到它怎么变化,在哪里被使用。
一句句语句逆下去,发现有语法错误,其实是代码修复后的 bug,用 winhex 打开定位到这句代码,发现是三元运算符
$var2 = !$var2 ? ord('乱码') : $var2;

接下来是一句很奇怪很无用的代码,再下一句是 for 循环,我猜测是给 $i 赋值
for($i=0; $i<strlen($var1); $i++)

下个 for 循环里又是一个三元运算符,手动修复后,基本 fun1 的代码就出来。
接下来就是运行 fun1 函数,但是碰到个坑点,fun1 有很多处用到乱码做运算,而乱码不能直接拷到编辑器中。
用 winhex 将 16 进制的乱码字符复制出来,在运算的时候 pack("H*","乱码") 将它还原回乱码即可。

不会的可以去 微破译 看看

PHP 魔方加密二代 解密

0x00 前言

洪哥给我一个加密的PHP代码,问我有没有办法搞出来,没有接触过PHP混淆加密,百度了一下加密特征,使用的是魔方二代加密方法。

从52破解上找了一个魔方二代加密反编译代码对加密的PHP代码进行解密,记录一下过程

https://www.52pojie.cn/forum.php?mod=viewthread&tid=770762

汇编这块看不懂,直接拉到最下面,大佬给出了反编译代码

https://github.com/ganlvtech/php-mfenc-decompiler

0x01 常用的加密类型及特征

加密类型 加密特征
Zend/PHP5.3/5.4
Zend/PHP5.5/5.6
文件头部 PHP 5.3 2004072201 65540
PHP 5.4 2004072201 65541
PHP 5.5 2004072201 65542
PHP 5.6 2004072201 65543
微擎加密 主要使用goto语法打乱代码顺序
魔方一代加密 function 开头包含很多function
魔方二代加密 if(isset($乱码){array_push$乱码...开头
ionCube 文件头部
php-screw 文件头部 PM9SCREW等一般是定制版本, 文件特征各不相同
php-beast 文件头部 二进制数据 "\xe8\x16\xa4\x0c"一般是定制版本, 文件特征各不相同
ZoeeyGuard 调用函数 zoeey_run等一般是定制版本, 文件特征各不相同

0x02 解密

对比一下加密特征,符合魔方二代加密

下载PHP mfenc反编译器代码

 
   
   
 
  1. # git clone https://github.com/ganlvtech/php-mfenc-decompiler.git

删除composer.lock

使用composer安装依赖的库文件

 
   
   
 
  1. # composer install

注意PHP版本 > 7.0

通过rebuild对member.php进行解密

 
   
   
 
  1. # php bin/rebuild.php member.php

会在当前目录下生成member.rebuilt.php文件

解密结果

Centos7 安装PHP 7

我的PHP版本是PHP 5.4,在使用composer安装依赖报错提示需要 PHP > 7.0

通过yum安装报错,只能通过源码编译安装,速度比较慢

可以使用remi源

https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/

安装compoeser

 
   
   
 
  1. 下载安装脚本 composer-setup.php 到当前目录。

  2. # php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"


  3. 执行安装过程

  4. # php composer-setup.php


  5. 删除安装脚本

  6. # php -r "unlink('composer-setup.php');"


  7. 全局安装

  8. # mv composer.phar /usr/local/bin/composer


  9. 切换为国内镜像

  10. # composer config -g repo.packagist composer https://packagist.phpcomposer.com


  11. 更新 composer

  12. # composer selfupdate


  13. 安装依赖

  14. # composer install

更多请参考Composer 安装与使用https://www.runoob.com/w3cnote/composer-install-and-usage.html


以上是关于php源代码被加密了,请问如何解密?的主要内容,如果未能解决你的问题,请参考以下文章

php文件被处理了,好像是加密了,怎么解密呀,请教高手。代码如下:

如何加密解密php源代码

zend加密的php文件怎么解密啊???

有没有办法在 php 中隐藏加密密钥或算法?

PHP 魔方加密二代 解密

ras可以加密php代码吗