使用PHP_SCREW加密你的源代码

来源:互联网 发布:mac无法安装sass 编辑:程序博客网 时间:2024/05/20 11:27

使用PHP_SCREW加密你的源代码,附5.3.6 Windows编译VC6、VC9,线程安全二进制版本

          今天需要把我们的代码部署到别人的服务器上,在Linux上尝试使用php_screw这个扩展加密了一下源代码,相当不错。

          为了能在我的机器上把代码加密之后再部署到对方的Linux主机上去,晚上编译了一个Windows 二进制版本。总的来说,尝试过它的Windows版本之后,我对这个家伙的严谨性表示了严重的怀疑。他写这一坨代码的时候,完全没有考虑Windows的兼容性。

          例如:php_screw.c 文件第 57 行明显的语法错误,在这里作者的意图应该是申明一个名为 org_compile_file 的函数指针类型的变量,结果他偏偏在前面加了 ZEND_API (__declspec(dllexport)) 【这个变量没必要导出】。同样,下面的 59行:

         zend_op_array *pm9screw_compile_file(zend_file_handle *file_handle, int type TSRMLS_DC)
        这里也不应该加上 ZEND_API【函数实现】

        同样,第80 行、第 86 行,没有考虑多线程安全的问题,还要加上 TSRMLS_CC:

        return org_compile_file(file_handle, type TSRMLS_CC);

        当然,除此之外,其它的细节问题就没了,除了常见的 PHP5.3之后的兼容性问题。

        最可气的是,这个扩展居然在支持源代码换行格式为 Windows 时存在问题(换行为 \r\n),源代码的换行必须为 (\n) ,您的源代码千万不要是用记事本写的啊,如果是Editplus 写的,马上把文件格式改为 UNIX 吧(在测试这个时候花了最多的时间才试出来)。

        下面提供一下针对 PHP5.3.6 、线程安全、VC9 和 VC6 的扩展和加密工具(真实的编译器是 VC9,如果跑不起来,请安装 VC9的运行时)【加密、解密的key是默认的,请注意部署目标机器的key】:

The Binary Below Compiled With the default pm9screw_mycryptkey in file my_screw.h.

http://www.1000li.com/php_dll/php_screw_vc6.dll  Binary Release Of PHP_Screw For PHP5.3.6,TS,VC6

http://www.1000li.com/php_dll/php_screw_vc9.dll  Binary Release Of PHP_Screw For PHP5.3.6, TS, VC9

http://www.1000li.com/php_dll/screw.exe  Binary Relase Of Screw Encoding Tool

        使用 screw.exe    php源代码文件名  可以加密文件,加密的文件可以部署在有 php_screw.dll 扩展的服务器上。加密是透明的,无需任何处理(实际上,看 screw的源代码,其实就是非常朴素的处理了一下)

原创粉丝点击