解密zoeeyguard扩展加密后的php代码

上周一写了一篇《还原php的zoeeyguard扩展源码编译前的配置内容》,周二的时候看了下扩展源码。在看源码之前,就在想,加密代码执行方法的内部结构应该是先把代码解密,再执行解密后的代码,看了看源码,果然是。然后将zoeey_run方法的源码修改下,并在服务器编译,果然可以。下面说一下具体修改步骤。

首先打开src目录下的php_zoeeyguard.h文件,在代码 “PHP_FUNCTION(zoeey_run);”下一行添加 “PHP_FUNCTION(zoeey_decode);”,保存。

然后打开src目录下的zoeeyguard.c文件,在代码“PHP_FE(zoeey_run, NULL)”下一行添加“PHP_FE(zoeey_decode, NULL)”,保存。

最后,复制zoeey_run方法代码,并进行修改,修改如下:
PHP_FUNCTION(zoeey_decode) {
char * enc = NULL; /* encoded code */
char * source = NULL;
int enc_len;
char * comp_name;
char * eval_str;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s"
, &enc, &enc_len) == FAILURE) {
return;
}

comp_name = zend_make_compiled_string_description("zoeeyguard" TSRMLS_CC);

source = decode(enc, PRIVATE_KEY, PRIVATE_KEY_LEN);

spprintf(&eval_str, 0, " ?>%s<?php ", source);
FILE *fp;
/* 将解密后的数据写入到decode.txt文件中。请在当前目录下创建decode.txt文件进行测试。 */
if((fp=fopen("decode.txt","w"))!=NULL)
{
fwrite(source,sizeof(char),strlen(source),fp);
fclose(fp);
}
RETURN_TRUE;
}

将修改好的代码传到服务器并编译安装,测试了下,果然可以获取到解密后的代码。

 

【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://www.cnblogs.com/facetwitter/p/6796794.html

posted @ 2017-05-02 16:36  saneim  阅读(1135)  评论(0编辑  收藏  举报