做无奈的DC派~
PHP加密和JS加密
作者:vhorse 日期:2010-01-21
php的加密z
一、概述
PHP代码属于开源WEB代码,不需要编译,属于解释型语言。(即在WebServer中追加相应扩展名的解释程序即可完成对代码的分析处理)。
根据PHP语言解释型的特性,结合个项目需求,我们就可以使用php.exe(PHP解释程序)对PHP代码进行解释应用,使得PHP不仅适用于WEB环境也适用于本地处理,如:GTK等。
我手中有一项目采用Delphi通道(PIP)方式调用phpexe解释器,解释PHP代码完成WEB中的过程。
但是另一方面弊端又体现出来,由于PHP采用开源方式,不同用户很容易看到使用PHP语言所篇写的源程序,对源程序进行分析,很容易的得到数据连接,处理流程,甚至服务器名等重要信息,同样的也不利于软件开发商的版权保护。因此就必须对PHP源代码进行加密授权处理,即(Encode化与License授权)
当前市场上较流行的对PHP进行上述加密授权的软件主要有二种:
(1)Zend公司的ZendGuard。----当前最新版本5.0.1(2008/06/17)
(2)ionCube公司的ionCube PHP Encode。----当前最新版本6.5(2008/06/17)
对于这两各较常用的Encode软件其二者有着不同的功能与各自的优点。
二、Zend Guard
Zend Guard只能对带有PHP标记或源码的文件进行加密(如:.php,inc等),对于其他不带有PHP标记的文本方式保存的文件不能进行加密操作,支持期限,注册码。
支持PHP4.2.X~5.2.X版本的加密。
使用的ZendOptimizer(PHP引擎)可以提高源码20~50%以上的速度优化,结合ZendGuard可以提高至50%以上的性能速度优化,且ZendOptimizer可以安装于当前较多主流系统中。(在使用ZendGuard加密时可选择ZendOptimizer版本进行更多的优化处理),另外,ZendGuard只能用于配置了ZendOptimizer的环境中,不能独立运行。(必须在php.ini文件中进行配置)
*另外需要值得注意的是ZendGuard在PHP4下的错误,对于PHP4的绝对路径及相对路径在加密时会出现较大的差别。
在PHP4.4.1环境下,如有如下两个文件:
Test.php引用:
<?php
require_once("inc/test1.php");
?> inc/Test1.php引用:
<?php
echo realpath(dirname(__FILE__));
?> 不进行加密的前提下,显示的结果是: C:\LocalWeb\zendtest\inc
但是加密后却显示: C:\LocalWeb\zendtest-encode\zendtest
可以发现经过ZendGuard加密后inc目录被去掉了,显示的是被包含之前的文件的地址。(即__FILE__被当成临时常量显示了出来)。
*该问题经测试,在PHP5.2.6环境下没有发现该问题。
三、ionCube PHP Encode
ionCube PHP Encode,由ionCube开发,用于对PHP或非PHP文件进行加密工作。ionCube在功能方面经过测试可以优胜于Zend公司的ZendGuard,不仅支持期限,注册码,等加密方式,还支持对IP,MAC地址等复杂的加密方式。另外,对于ionCube来说不仅可以加密带有PHP标记或源码的php文件还可以对非php文件的以text方式保存的文件进行加密操作,如xml,js,css等。(但是读写时必须使用ionCube所提供的读入API进行读写操作。)
可加密的PHP版本从PHP4.0.6~5.2.X(比ZendGuard高2个级别)
ionCube与Zend一样,为了提高PHP性能优化也提供了相应的PHP引擎,可以为大多数操作系统提供PHP优化功能,但是可惜的是,至今未提供Windows版本的PHP引擎。
对于之前ZendGuard中所说的PHP4环境下路径问题,在ionCube中没有出现,可以看出ionCube相对稳定。
对于ionCube来说,对带有PHP标记或源码的文件采用压缩加密方式处理,对于非php的文本类文件则采用加密方式处理。在读入时必须使用“ioncube_read_file/ ioncube_write_file”读写文件。因此在使用ionCube加密前需要对相应的PHP代码进行改造后才能使用。
如何安装ioncube组件?
答:ioncube可以加密您的php源文件。您可以通过以下向导来安装该组件。您可以选择通过远程的Sheel或者ftp上传来达到目的。
从incube网站上下载相符的安装包,如Linux的,64位的
将该文件上传到根目录
使用tar -xvzf ioncube_loaders_lin_x86-64.tar.gz命令来解压这个文件,会创建一个/ioncube/的目录
编辑相应的php.ini文件,添加以下内容:
zend_extension = /home/username/ioncube/ioncube_loader_lin_4.4.so
如果您的脚本要求ioncube目录不应该在public_html里,请尝试将php.ini文件复制到脚本所在的目录。
下载网址是:http://www.ioncube.com/loaders.php
====================
JS的机密
脚本 Encoder 概述
脚本 Encoder 是一种简单的命令行工具,它使脚本设计者能够对自己的最终脚本进行编码,这样 Web 主机和 Web 客户机就不能查看或修改它们的源代码了。注意,这种编码只能防止他人偶然查看您的代码,但并不能防止执着的电脑黑客看到您的一举一动。
脚本 Encoder 只对脚本代码进行编码,而不对文件的任何其他内容作任何改动,仍显示为纯文本。若要使用脚本 Encoder,请以普通方法开发和调试您的脚本,然后使用该实用程序对最终脚本进行编码。脚本 Encoder 在源代码中使用标记来标识应从哪里开始编码。
对于 Visual Basic® Scripting Edition (VBScript),下面的示例说明如何使用编码标记来展示纯文本格式的版权信息:
<SCRIPT LANGUAGE="VBScript">
'Copyright© 1998. XYZ Productions. All rights reserved.
'**开始编码**
' 这里是您的代码。
</SCRIPT>
在 JScript® 中,编码标记如下所示:
<SCRIPT LANGUAGE="JScript">
//Copyright© 1998. ZYX Productions. All rights reserved.
//**开始编码**
// 这里是您的代码。
</SCRIPT>
当调用脚本 Encoder 时,脚本块中开始标记之前的全部内容都不会被编码,而脚本块中的其他内容都将被编码。因此,如果省略开始标记,整个脚本块都会被编码,但如果开始标记在脚本块的结尾处,就不会对任何内容进行编码。
进行编码后,应该知道 <SCRIPT> 标记中的语言指示项已发生了变化。对于 VBScript,新的指示项如下所示:
<SCRIPT LANGUAGE="VBScript.Encode">
对于 Jscript,新的指示项如下所示:
<SCRIPT LANGUAGE="JScript.Encode">
脚本 Encoder 的调用是在 MS-DOS 命令行上或“运行”对话框中进行的,如下所示:
SRCENC [开关] 输入文件 输出文件
下面的示例将介绍脚本 Encoder 的用法并简要说明生成的结果:
要对输入文件 test.html 进行编码,并生成输出文件 encode.html,请使用:
screnc test.html encode.html
要对输入文件 test.html 进行编码,并用已编码的输出文件覆盖输入文件,请使用:
screnc /f test.htm
要对当前目录中所有的 .ASP 文件进行编码,并将已编码的输出文件放在 c:\temp 中,请使用:
screnc *.asp c:\temp
要将当前目录中所有的文件都编码为 .ASP 文件,并放在 c:\temp 中,请使用:screnc /e asp *.* c:\temp
要对输入文件 test.htm 进行编码,并生成输出文件 encode.htm,以确保所有不具有指定的语言属性的脚本块都使用 VBScript,请使用:
screnc /l vbscript test.htm encode.htm
要对当前目录中的所有脚本小程序文件进行编码,并用已编码的文件覆盖它们而不显示任何消息,请使用:
screnc /s /f *.sct
下面是 Web 页的一个简短示例,包含一些需要保护的 JScript 代码:
<HTML>
<HEAD>
<TITLE>Script Encoder Sample Page</TITLE>
<SCRIPT LANGUAGE="JScript">
<!--//
//Copyright© 1998 Microsoft Corporation.保留所有权利。
//**开始编码**
function verifyCorrectBrowser(){
if(navigator.appName == "Microsoft Internet Explorer")
if (navigator.appVersion.indexOf ("5.") >= 0)
return(true);
else
return(false);
}
function getAppropriatePage(){
var str1 = "Had this been an actual Web site,a page compatible with ";
var str2 = "browsers other than ";
var str3 = "Microsoft Internet Explorer 5.0 ";
var str4 = "would have been loaded.";
if (verifyCorrectBrowser())
document.write(str1 + str3 + str4);
else
document.write(str1 + str2 + str3 + str4);
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="getAppropriatePage()">
</BODY>
</HTML>
Here's the same page as it appears after being run through the Script Encoder:
<HTML>
<HEAD>
<TITLE>Script Encoder Sample Page</TITLE>
<SCRIPT LANGUAGE="JScript.Encode">
<!--//
//Copyright© 1998 Microsoft Corporation.保留所有权利。
//**开始编码**#@~^QwIAAA==@#@&0;mDkWP7nDb0zZKD.n1YAMGhk+Dvb`@#@& P,kW`UC7kLlDGDcl22gl:n~{'~Jtr1DGkW6YP&xDnD+OPA62sKD+ME#@#@&P,~~k6PvxC\rLmYGDcCwa.n.kkWU bx[+X66Pcr*cJ#,@*{~!*P~P,P~.YEMU`DDEbIP,P,+s/n@#@&P~P,~PM+O;Mx`WC^/n#pN6EU1YbWx,oObaw.WaDrCD+nmL+v#@#@&~P7lMPdY.q,'~J_CN,Y4rkP4nnPCx,C1Y;mV,+(PkrY~~l,wCLPmKhwmYk(snPSkDt~JI@#@&P~\m.PkY.+,'PE8MWA/.kPGDtDPDtmUPri@#@&,P-CMP/D.&,'Pr\rmMWkWWY~(YnDnY,2a2^WDn.,* !,Ep@#@&,P7lD,/D.c,'~JSW;s9Ptm-+,4+U~VKl9+[REI,Pr0,c\DrWHZW..mOAMGS/nM`*#@#@&P,~P9W^Es+UOchDbO+v/YMq~_,/DDfPQ~kY.c*IP,+sd@#@&~~,P[W1;s+UDRSDkD+vdYMF~_,/O.yP_,dYM&P3~dYMc*iNz&R @*^#~@
//-->
</SCRIPT>
</HEAD>
<BODY onload="getAppropriatePage()">
</BODY>
</HTML>
注意 编码后,哪怕只在已编码的文本中更改一个字符,整个脚本都将丧失完整性,而且不再可用。
一、概述
PHP代码属于开源WEB代码,不需要编译,属于解释型语言。(即在WebServer中追加相应扩展名的解释程序即可完成对代码的分析处理)。
根据PHP语言解释型的特性,结合个项目需求,我们就可以使用php.exe(PHP解释程序)对PHP代码进行解释应用,使得PHP不仅适用于WEB环境也适用于本地处理,如:GTK等。
我手中有一项目采用Delphi通道(PIP)方式调用phpexe解释器,解释PHP代码完成WEB中的过程。
但是另一方面弊端又体现出来,由于PHP采用开源方式,不同用户很容易看到使用PHP语言所篇写的源程序,对源程序进行分析,很容易的得到数据连接,处理流程,甚至服务器名等重要信息,同样的也不利于软件开发商的版权保护。因此就必须对PHP源代码进行加密授权处理,即(Encode化与License授权)
当前市场上较流行的对PHP进行上述加密授权的软件主要有二种:
(1)Zend公司的ZendGuard。----当前最新版本5.0.1(2008/06/17)
(2)ionCube公司的ionCube PHP Encode。----当前最新版本6.5(2008/06/17)
对于这两各较常用的Encode软件其二者有着不同的功能与各自的优点。
二、Zend Guard
Zend Guard只能对带有PHP标记或源码的文件进行加密(如:.php,inc等),对于其他不带有PHP标记的文本方式保存的文件不能进行加密操作,支持期限,注册码。
支持PHP4.2.X~5.2.X版本的加密。
使用的ZendOptimizer(PHP引擎)可以提高源码20~50%以上的速度优化,结合ZendGuard可以提高至50%以上的性能速度优化,且ZendOptimizer可以安装于当前较多主流系统中。(在使用ZendGuard加密时可选择ZendOptimizer版本进行更多的优化处理),另外,ZendGuard只能用于配置了ZendOptimizer的环境中,不能独立运行。(必须在php.ini文件中进行配置)
*另外需要值得注意的是ZendGuard在PHP4下的错误,对于PHP4的绝对路径及相对路径在加密时会出现较大的差别。
在PHP4.4.1环境下,如有如下两个文件:
Test.php引用:
<?php
require_once("inc/test1.php");
?> inc/Test1.php引用:
<?php
echo realpath(dirname(__FILE__));
?> 不进行加密的前提下,显示的结果是: C:\LocalWeb\zendtest\inc
但是加密后却显示: C:\LocalWeb\zendtest-encode\zendtest
可以发现经过ZendGuard加密后inc目录被去掉了,显示的是被包含之前的文件的地址。(即__FILE__被当成临时常量显示了出来)。
*该问题经测试,在PHP5.2.6环境下没有发现该问题。
三、ionCube PHP Encode
ionCube PHP Encode,由ionCube开发,用于对PHP或非PHP文件进行加密工作。ionCube在功能方面经过测试可以优胜于Zend公司的ZendGuard,不仅支持期限,注册码,等加密方式,还支持对IP,MAC地址等复杂的加密方式。另外,对于ionCube来说不仅可以加密带有PHP标记或源码的php文件还可以对非php文件的以text方式保存的文件进行加密操作,如xml,js,css等。(但是读写时必须使用ionCube所提供的读入API进行读写操作。)
可加密的PHP版本从PHP4.0.6~5.2.X(比ZendGuard高2个级别)
ionCube与Zend一样,为了提高PHP性能优化也提供了相应的PHP引擎,可以为大多数操作系统提供PHP优化功能,但是可惜的是,至今未提供Windows版本的PHP引擎。
对于之前ZendGuard中所说的PHP4环境下路径问题,在ionCube中没有出现,可以看出ionCube相对稳定。
对于ionCube来说,对带有PHP标记或源码的文件采用压缩加密方式处理,对于非php的文本类文件则采用加密方式处理。在读入时必须使用“ioncube_read_file/ ioncube_write_file”读写文件。因此在使用ionCube加密前需要对相应的PHP代码进行改造后才能使用。
如何安装ioncube组件?
答:ioncube可以加密您的php源文件。您可以通过以下向导来安装该组件。您可以选择通过远程的Sheel或者ftp上传来达到目的。
从incube网站上下载相符的安装包,如Linux的,64位的
将该文件上传到根目录
使用tar -xvzf ioncube_loaders_lin_x86-64.tar.gz命令来解压这个文件,会创建一个/ioncube/的目录
编辑相应的php.ini文件,添加以下内容:
zend_extension = /home/username/ioncube/ioncube_loader_lin_4.4.so
如果您的脚本要求ioncube目录不应该在public_html里,请尝试将php.ini文件复制到脚本所在的目录。
下载网址是:http://www.ioncube.com/loaders.php
====================
JS的机密
脚本 Encoder 概述
脚本 Encoder 是一种简单的命令行工具,它使脚本设计者能够对自己的最终脚本进行编码,这样 Web 主机和 Web 客户机就不能查看或修改它们的源代码了。注意,这种编码只能防止他人偶然查看您的代码,但并不能防止执着的电脑黑客看到您的一举一动。
脚本 Encoder 只对脚本代码进行编码,而不对文件的任何其他内容作任何改动,仍显示为纯文本。若要使用脚本 Encoder,请以普通方法开发和调试您的脚本,然后使用该实用程序对最终脚本进行编码。脚本 Encoder 在源代码中使用标记来标识应从哪里开始编码。
对于 Visual Basic® Scripting Edition (VBScript),下面的示例说明如何使用编码标记来展示纯文本格式的版权信息:
<SCRIPT LANGUAGE="VBScript">
'Copyright© 1998. XYZ Productions. All rights reserved.
'**开始编码**
' 这里是您的代码。
</SCRIPT>
在 JScript® 中,编码标记如下所示:
<SCRIPT LANGUAGE="JScript">
//Copyright© 1998. ZYX Productions. All rights reserved.
//**开始编码**
// 这里是您的代码。
</SCRIPT>
当调用脚本 Encoder 时,脚本块中开始标记之前的全部内容都不会被编码,而脚本块中的其他内容都将被编码。因此,如果省略开始标记,整个脚本块都会被编码,但如果开始标记在脚本块的结尾处,就不会对任何内容进行编码。
进行编码后,应该知道 <SCRIPT> 标记中的语言指示项已发生了变化。对于 VBScript,新的指示项如下所示:
<SCRIPT LANGUAGE="VBScript.Encode">
对于 Jscript,新的指示项如下所示:
<SCRIPT LANGUAGE="JScript.Encode">
脚本 Encoder 的调用是在 MS-DOS 命令行上或“运行”对话框中进行的,如下所示:
SRCENC [开关] 输入文件 输出文件
下面的示例将介绍脚本 Encoder 的用法并简要说明生成的结果:
要对输入文件 test.html 进行编码,并生成输出文件 encode.html,请使用:
screnc test.html encode.html
要对输入文件 test.html 进行编码,并用已编码的输出文件覆盖输入文件,请使用:
screnc /f test.htm
要对当前目录中所有的 .ASP 文件进行编码,并将已编码的输出文件放在 c:\temp 中,请使用:
screnc *.asp c:\temp
要将当前目录中所有的文件都编码为 .ASP 文件,并放在 c:\temp 中,请使用:screnc /e asp *.* c:\temp
要对输入文件 test.htm 进行编码,并生成输出文件 encode.htm,以确保所有不具有指定的语言属性的脚本块都使用 VBScript,请使用:
screnc /l vbscript test.htm encode.htm
要对当前目录中的所有脚本小程序文件进行编码,并用已编码的文件覆盖它们而不显示任何消息,请使用:
screnc /s /f *.sct
下面是 Web 页的一个简短示例,包含一些需要保护的 JScript 代码:
<HTML>
<HEAD>
<TITLE>Script Encoder Sample Page</TITLE>
<SCRIPT LANGUAGE="JScript">
<!--//
//Copyright© 1998 Microsoft Corporation.保留所有权利。
//**开始编码**
function verifyCorrectBrowser(){
if(navigator.appName == "Microsoft Internet Explorer")
if (navigator.appVersion.indexOf ("5.") >= 0)
return(true);
else
return(false);
}
function getAppropriatePage(){
var str1 = "Had this been an actual Web site,a page compatible with ";
var str2 = "browsers other than ";
var str3 = "Microsoft Internet Explorer 5.0 ";
var str4 = "would have been loaded.";
if (verifyCorrectBrowser())
document.write(str1 + str3 + str4);
else
document.write(str1 + str2 + str3 + str4);
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="getAppropriatePage()">
</BODY>
</HTML>
Here's the same page as it appears after being run through the Script Encoder:
<HTML>
<HEAD>
<TITLE>Script Encoder Sample Page</TITLE>
<SCRIPT LANGUAGE="JScript.Encode">
<!--//
//Copyright© 1998 Microsoft Corporation.保留所有权利。
//**开始编码**#@~^QwIAAA==@#@&0;mDkWP7nDb0zZKD.n1YAMGhk+Dvb`@#@& P,kW`UC7kLlDGDcl22gl:n~{'~Jtr1DGkW6YP&xDnD+OPA62sKD+ME#@#@&P,~~k6PvxC\rLmYGDcCwa.n.kkWU bx[+X66Pcr*cJ#,@*{~!*P~P,P~.YEMU`DDEbIP,P,+s/n@#@&P~P,~PM+O;Mx`WC^/n#pN6EU1YbWx,oObaw.WaDrCD+nmL+v#@#@&~P7lMPdY.q,'~J_CN,Y4rkP4nnPCx,C1Y;mV,+(PkrY~~l,wCLPmKhwmYk(snPSkDt~JI@#@&P~\m.PkY.+,'PE8MWA/.kPGDtDPDtmUPri@#@&,P-CMP/D.&,'Pr\rmMWkWWY~(YnDnY,2a2^WDn.,* !,Ep@#@&,P7lD,/D.c,'~JSW;s9Ptm-+,4+U~VKl9+[REI,Pr0,c\DrWHZW..mOAMGS/nM`*#@#@&P,~P9W^Es+UOchDbO+v/YMq~_,/DDfPQ~kY.c*IP,+sd@#@&~~,P[W1;s+UDRSDkD+vdYMF~_,/O.yP_,dYM&P3~dYMc*iNz&R @*^#~@
//-->
</SCRIPT>
</HEAD>
<BODY onload="getAppropriatePage()">
</BODY>
</HTML>
注意 编码后,哪怕只在已编码的文本中更改一个字符,整个脚本都将丧失完整性,而且不再可用。
评论: 0 | 引用: 0 | 查看次数: 482
发表评论
你没有权限发表留言!
订阅
上一篇
下一篇
文章来自:
Tags: 


































































