当前位置:首页 » 编程语言 » zendphp

zendphp

发布时间: 2022-01-31 17:04:26

① 如何利用zend加密php文件

ASPCOOL PHP文件的源码都是明文,这对于某些商业用途来说,并不适合。 因此考虑使用加密的手段保护源码。 实在不耐烦等待zend出编译器,而且编译和加密本质上不是一回事儿。自己动手、开始修改。 一、基本原理 考虑截获PHP读取源文件的接口。一开始,我考虑从Apache和PHP之间的接口处 处理,参见apache的src/moles/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 beta we are using libmcrypt to encrypt codes, please install it first. compile command line: gcc -O6 -lmcrypt -lm -o encryptphp ecb.c please set LD_LIBRARY_PATH before use. GNU left, 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: Can't open file to read"); exit(3); } filestat=malloc(sizeof(stat)); fstat(readfd,filestat); inputfilesize=filestat- >st_size; printf("filesize is %d n",inputfilesize); filelength=inputfilesize; inputfilesize=((int)(floor(inputfilesize/PHP_CACHESIZE))+1)*PHP_CACHESIZE; if((file_buffer=malloc(inputfilesize))==NULL){ printf("FATAL: can't malloc file buffer.n"); exit(2); } if((block_buffer=malloc(PHP_CACHESIZE))==NULL){ printf("FATAL: can't malloc encrypt block buffer.n"); exit(2); } j=0; while(realbufsize=read (readfd,block_buffer, PHP_CACHESIZE)){ printf("."); if(!decode){ if(realbufsize< PHP_CACHESIZE){ for(i=realbufsize;i< PHP_CACHESIZE;i++){ ((char *)block_buffer)[i]=' '; } } mcrypt_ecb (td, block_buffer, PHP_CACHESIZE); } else { mdecrypt_ecb (td, block_buffer, realbufsize); } memcpy(file_buffer+j*PHP_CACHESIZE,block_buffer,PHP_CACHESIZE); j++; } close(readfd); if((ifp=fopen(filename,"wb"))==NULL){ printf("FATAL: file access error.n"); exit(3); } fwrite ( file_buffer, inputfilesize, 1, ifp); free(block_buffer); free(file_buffer); free(filestat); fclose(ifp); printf("n"); return 0; } /*--- end of ecb.c ------------------------------------*/ 因为ECB模式是块长度确定的块加密,这里填充了一 些空字符。 然后,修改php代码中 Zend/zend-scanner.c 如下: (我的php版本是4.01pl2, SUNsparc/solaris 2.7, gcc 2.95;) 文件前加入: #define MCRYPT_BACKWARDS_COMPATIBLE 1 #include < mcrypt.h > 然后,注释掉大约3510行前后的YY_INPUT的定义。 然后, 修改大约5150行前后的yy_get_next_buffer()函数: 函数头加上定义: void *tempbuf; char *key; char debugstr[255]; int td,keysize; int x,y; FILE *fp; 然后 ,注释掉 YY_INPUT( (&yy_current_buffer- >yy_ch_buf[number_to_move]), yy_n_chars, num_to_read ); 这一句。 改为: tempbuf=malloc(num_to_read); if((yy_n_chars=fread(tempbuf,1,num_to_read,yyin))!=0){ /*decode*/ #define password "PHPphp111222" #define debug 0 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); mdecrypt_ecb(td, tempbuf, yy_n_chars); memcpy((&yy_current_buffer- >yy_ch_buf[number_to_move]),tempbuf,yy_n_chars); if(debug){ fp=fopen("/tmp/logs","wb"); fwrite("nstartn",7,1,fp); fwrite(tempbuf,1,yy_n_chars,fp); fwrite("nenditn",7,1,fp); fclose(fp); } } free(tempbuf); 然后,编译php,按正常方法安装即可,因为我对于libtool不太熟悉,因此我选择static方式,并在 configure时加入了--with-mcrypt,这样我就不用自己手工修改Makefile 三、测试及结果 编译php,apache后,用ecb.c编译出来的encryptphp加密了几个文件,分别为< 1K,10K+,和40K+,在处理 40K大小文件时出错,别的文件均正常。 这是因为块的ECB加密方式决定了必须使用定长块,所以,请 诸位同好指点采用何种流加密方式可以兼顾到zend每次读取8192字节的缓存处理方式。(其他平台上 zend每次读取的块长度可能有所不同) 四、说明 我的机器是SUN Ultra1, solaris 2.7, gcc 2.95 , apache 1.3.12, php 4.01pl2, libmcrypt 2.2.4 我的C水平很差,请大家见谅。这里只是原理说明。 感谢老米飞刀等提供的协助。 源码遵从GNU,需要注意,libmcrypt提供的某些加密方式不是free的。

② PHP跟zend是什么关系

PHP 是一门开发语言, zend 是一个适用于 PHP 的开发环境

③ zend php5.6 解密工具有没有

兵车行(杜甫)

④ zend 相对php有什么作用。

你说的是Zend
FrameWork吧,
它是建立在PHP基础上的一个框架,可以让你方便快捷的搭建自己的网站骨架
他的作用就是把PHP抽象化,组件化和模块化,让你不用直接接触PHP底层的函数或者操作
如果把PHP比作砖头,那么Zend就好像是砖头浇筑成的预制件
下面从网上抄一段:
准确地讲
Zend
框架究竟是什么呢?Zend
框架具有以下特征:
•是基于
PHP
建立的。
•是面向对象的。
•使用
MVC
范例。
•具有开放源码贡献者。
•有贡献者负责保证他们的代码不是他人的知识产权。

⑤ PHP+MySQL+Zend 是什么意思

Zend 是"PHP官方机构",由她主持PHP的版本更新,她为 PHP 的发展做了很大的贡献,Eclipse 中的PHP项目中的PDT插件就是由她主导开发的。她还做了 Zend Debugger ,一个PHP的调试工具,从而实现了PHP的断点调试和错误跟踪.她还做了Zend Studio ,一个非常强大的PHP集成开发环境.她还做了 Zend Framework ,一个 7M大的PHP框架。她还做了Zend Guard,就是将.PHP文件进行加密,将其中的注释给抽出来,并将其中的代码结构打乱,导致其他人看不懂。

而在 PHP+MySQL+Zend 里面,Zend 可能是指 Zend Framework。这是一个php框架,分MVC三层架构,就和JSP中的Structs一样。框架为开源,免费,可以去Zend官方网站直接下载. Zend框架是一个比较难学的PHP框架,相比较而言,国人做的另一个PHP框架flea比较好用.

你说的 “简单看了一下Zend还是收费的”,可能是指 Zend Studio 这个开发工具,这个开发工具的确是要收费的,就像 Visual Studio 2005 一样,但国人早就把他破解了~~

⑥ PHP中的ZEND框架是做什么用的

首先Zend是目前为php提供技术和服务支持的公司,该公司专注于php项目的各种解决方案,其中之一是zend framework。

然后ZF(Zend Framework)的优势:
ZF使用MVC三层架构,完全面向对象编码。
组件非常丰富,且组件之间耦合很松散。简单说就是,各组件之间的依赖性非常低,基本上每个组件都可以单独拿出来使用。
ZF是Zend对php面向对象编码的最佳参考之一。非常灵活,非常强大,非常易于扩展,然而,也非常难入门难上手。

ZF的中文资料相对来说,并不充足,国内使用ZF做框架的网站也不是很多。
对于大型php项目,有一定规模的团队,有明确项目需求,有明确项目进度规划的,可以考虑使用ZF,另外,对于非常想学习php 面向对象思想的,ZF是相当推荐的。

相比之下ThinkPHP在国内更受欢迎,另外还有CI框架(CodeIgniter )等

⑦ zend php解密

已解开!
<?php

function qqoq_yyyyy()
{
$a = get_option("qqoq_key");
$f = $_SERVER[PHP_SELF];
if ((qqoq_verify_domain($a) != "hehe") && !stristr($f, "themes.php")) {
add_action("admin_notices", "qqoq_notice");
wp_redirect(admin_url("themes.php?page=admin-s.php"));
}
}

function qqoq_notice()
{
$g .= "<div style='\r\n background-color: #F3383F;\r\n border-radius: 3px 3px 3px 3px;\r\n border-style: solid;\r\n border-width: 2px;\r\n color: #FFFFFF;\r\n margin: 35px 10px 15px;\r\n padding: 10px;\r\n -moz-box-shadow: 0px 0px 4px #bbb; /* FF3.5+ */\r\n -webkit-box-shadow: 0px 0px 4px #bbb; /* Saf3.0+, Chrome */\r\n box-shadow: 0px 0px 4px #bbb; /* Opera 10.5, IE9, Chrome 10+ */\r\n '>";
$g .= "系统检测到你尚未购买此主题。如若你已购买了本主题请在<a href=\"" . admin_url() . "themes.php?page=admin-s.php\">主题设置</a>->常规设置里输入你的注册码。抑或没有购买者请到这里购买<a href=\"http://www.qqoq.net\">购买地址</a>。谢谢理解,谢谢支持!";
$g .= "</div>";
echo $g;
}

⑧ 自学php 不参加培训 哪里可以获得Zend PHPChina PCTI 认证

兄弟,挺有毅力、不错。先找工作吧!如果感觉有必要考证书时再考。

⑨ Zend后的PHP是如何执行的

那个是已经加密、混杂变量名后的PHP的OpCode码执行过程就是解密,然后用Zend VM运行解密后的OpCode并不是像1L所说的是二进制代码。

针对最近Zend公司对加密模式调整补充一些东西:如果要让Zend加密的代码在PHP 5.3.x上运行,必须选择针对PHP 5.3加密,旧版本的加密文件不能在PHP 5.3上运行。同时,如果是Windows平台还必须选择PHP的NTS版本。对应的Zend解密插件是Zend Loader。需要全部手工安装。获取ZendLoader.dll之后修改PHP文件增加以下两行:zend_extension="(ZendLoader.dll的路径)"
zend_loader.enable=1

而如果要让Zend加密的代码在PHP 5.3之前的平台上运行,必须选择针对旧版PHP加密。针对PHP 5.3加密的代码是不能在PHP 5.3之前的平台上运行的。同时,如果是Windows平台还必须选择PHP的TS版本。对应的Zend解密插件是Zend Optimizer。有安装程序,需要自行安装。

⑩ php 怎么用zend加密

可以加密就可以解密。

解密ZEND加密后的PHP文件:

zend加密php文件解密工具Dezender可以做到。

1、下载Dezender.zip

2、解压到盘里面,最好不要有中文路径,比如解压到 I:Dezender 里面,修改I:DezenderPHP5PHP5php.ini文件,修改里面的文件路径。

热点内容
如何打开u盘文件夹 发布:2024-12-28 02:23:43 浏览:781
pascal有哪些编译器 发布:2024-12-28 02:16:45 浏览:97
云存储录像机 发布:2024-12-28 02:16:36 浏览:205
hp服务器如何装系统 发布:2024-12-28 02:12:14 浏览:155
python3utf8 发布:2024-12-28 02:12:07 浏览:642
安卓微信现在怎么扫码登录 发布:2024-12-28 02:07:15 浏览:942
中国系统安卓苹果还有什么 发布:2024-12-28 01:59:28 浏览:341
这里的秘密码是多少 发布:2024-12-28 01:58:07 浏览:481
rce访问 发布:2024-12-28 01:57:58 浏览:478
java工程师招生 发布:2024-12-28 01:49:23 浏览:603