编程

当前位置:澳门新莆京娱乐官网 > 编程 > 修改Zend引擎实现PHP源码加密的原理及实践

修改Zend引擎实现PHP源码加密的原理及实践

来源:http://www.drgigabytes.com 作者:澳门新莆京娱乐官网 时间:2019-12-29 03:08

PHP文件的源码都是真心实意,那对于某个商业用项来讲,并不切合。 由此寻思动用加密的一手保险源码。 实在慢性等待zend出编写翻译器,并且编写翻译和加密真相上不是一遍事儿。自个儿动手、开首改善。后生可畏、基本原理 寻思截获PHP读取源文件的接口。生龙活虎开端,小编思谋从Apache和PHP 之间的接口四处理,参见apache的src/modules/php4/mod_php4.c (那一个是PHP用static情势编写翻译进apache,make install 后的文本卡塔尔国,在send_php(卡塔尔(قطر‎函数中缴获文件指针,选拔偶然文件的不二诀要,解密后替换文件指针。这种措施通过测试实施,证明是实用的。然则,必需接纳一回文件操作,作用低下,况兼对于DSO方式不可接纳。 双缘尊敬老人院 由此,重新寻思截获PHP读取文件并装载至缓存的经过,经过困难的查找,发现在Zend引擎中zend-scanner.c是做此管理的。开端对此文件校正。照明工程二、完毕情势示意接受libmcrypt作为加 密模块,以后使用的是DES方法ECB情势加密,下边是文件加密的源代码:/* ecb.c-------------------cut here-----------*//* encrypt for php source code version 0.99 betawe are using libmcrypt to encrypt codes, pleaseinstall it first.compile command line:gcc -O6 -lmcrypt -lm -o encryptphp ecb.cplease set LD_LIBRARY_修改Zend引擎实现PHP源码加密的原理及实践。PATH before use.GNU copyleft, designed by wangsu , miweicong */#define MCRYPT_BACKWARDS_COMPATIBLE 1#define PHP_CACHESIZE 8192#include mcrypt.h #include stdio.h #include stdlib.h #include math.h #include sys/types.h #include sys/stat.h #include fcntl.h main(int argc, char** argv){int td, i,j,inputfilesize,filelength;char filename[255];char password[12];FILE* ifp;int readfd;char *key;void *block_buffer;void *file_buffer;int keysize;int decode=0;int realbufsize=0;struct stat *filestat;if(argc == 3) {strcpy(password,argv[1]);strcpy(filename,argv[2]);} else if(argc == 4 !strcmp(argv[1],-d)){strcpy(password,argv[2]);strcpy(filename,argv[3]);decode=1;printf(Entering decode mode ... n);} else {printf(Usage: encryptphp [-d] password filenamen);exit(1);}keysize=mcrypt_get_key_size(DES);key=calloc(1, mcrypt_get_key_size(DES));gen_key_sha1( key, NULL, 0, keysize, password, strlen(password));td=init_mcrypt_ecb(DES, key, keysize);if((readfd=open(filename,O_RDONLY,S_IRUSR|S_IWUSR|S_IRGRP))==-1){printf(FATAL:

本文由澳门新莆京娱乐官网发布于编程,转载请注明出处:修改Zend引擎实现PHP源码加密的原理及实践

关键词: