免责声明:本文仅为博主安全研究学习记录,不提供明确步骤,强烈反对参考本文内容进行不正当用途,请后果自负。

本文算是水文吧,不暴露破解细节就没什么好讲的内容,此前也没有接触过PHP相关的逆向,权当记录下哪些前辈的文章对PHP解混淆有帮助。

以下无营养水文,可略过,有价值的内容上面的文章里都提到了

前段时间物色自建网盘程序的时候发现不少都是基于PHP开发的,测试到其中一款的时候发现其实商业版的功能已经存在,只是没有授权不开放 。随之手痒尝试突破限制。实际上并未选择使用此程序

从官网下载到程序后解压,在入口index.php中发现实例化了Application。转到定义发现是一个充斥着大量乱码的PHP文件,看看其他文件均未进行混淆,确定本文件即为关键点。格式化代码后入口函数如下:

image.png

结合其他函数可以发现代码本身未被加密,但是变量被混淆成乱码、控制流被打乱以及到处都用到某个数组。

Google一阵PHP反混淆后发现那些所谓的在线PHP解混淆网站都没啥用处。而此工具 simon816/PHPDeobfuscator可解流程控制、HEX字符串并格式化代码。

使用方法:php index.php -f foo.php > bar.php

还原流程控制后发现其开头定义了一个名称为乱码的全局数组:

$_SERVER[foo] = explode("bar",gzinflate("foobar"));

该数组在后续代码中大量被引用,猜测所有的字符串都存在此数组中了。

继续搜索发现这与常用混淆方案EnPHP十分类似,且已经有相当多的文章讲述如何解此类混淆并提供示例代码,照猫画虎后成功解决混淆。

其实这里才是重点,但此程序并未更新加密方式,本文不能提供具体步骤,请参考初探PHP-Parser和PHP代码混淆进行学习研究。

解掉混淆后踩坑发现本文件有好几处自身文件大小检验,如果大小不符则会无限循环在DATA_PATH下创建无限文件。而在本文件之外也有全局变量中存在文件大小与否的校验,如果不通过则直接退出程序。

最后修改:2022 年 01 月 10 日
如果觉得我的文章对你有用,请随意赞赏