网上找了一圈,各种名字的zend反编译软件,核心就是 40,960 字节 的 php.exe。
当时我是从 mmscn.org 上下载到的。论坛上说,php.exe 原创就是 mmscn.org,后来被俄国人偷去了,改名换姓,说是俄国人首发的。作者说的:
原理其实比较简单,网上也有很多介绍。主要是在php源代码的基础上,在zend_execute_scripts函数中,zend_compile_file与zend_execute之间插入我们的函数,然后把EG(active_op_array)解密并且反编译成源代码。当然,这项工作是比较繁杂的。因为zend optimizer对这个指令数组处理过(主要是优化和加密),并且我们只能通过php源代码和测试案例推测它的处理规律。
php.exe 读入zend 过的 php 文件,经过处理,还原出了源码,但是如果 文件 在zend加密的时候选择了变量、函数、类名 混淆,那么php.exe得到的就是混淆后的名字,一般都是乱码(含有回车、换行等字符),php.exe 为了让还原后的代码可视化,统一把那些混淆的名字进行了base64_encode 处理,处理后的名字有三个字符:= + / 不符合php变量名规范,于是把 = 替换成 \xFF ,把 / 替换成 \x7F