解密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