可能有些朋友没有这两个帮助文件(上一次讨论VBS时,建议朋友们下一个的,实际上在“脚本编辑器”中本文也有,但稍简单了点。),我把它复制在下面了,没有的朋友看一下——
微软帮助文件——Windows Script V5.6 文档
--------------------------------------
脚本 Encoder 语法
请参阅
脚本 Encoder 概述 | 使用脚本 Encoder | 脚本编码示例
对脚本源代码进行编码,以便使用户难以查看或修改源代码。
语法
SCRENC [/f] [/xl] [/l defLanguage ] [/e defExtension] 输入文件 输出文件
脚本 Encoder 语法有以下几个组成部分:
组成部分 说明
/s 可选。此开关用于指定脚本 Encoder 在无提示方式下工作,也就是说,不生成任何屏幕输出。如果省略该开关,则默认情况是提供详细的输出。
/f 可选。指定输入文件将要由输出文件覆盖。注意,该选项会破坏原来的输入源文件。如果省略该开关,将不会覆盖输入文件。
/xl 可选。指定不将 @language 指令添加到 .ASP 文件的顶端。如果省略该开关,就会将 @language 指令添加到所有的 .ASP 文件中。
/l defLanguage 可选。指定要在编码期间使用的默认脚本语言(JScript? 或 VBScript)。如果进行编码的文件内的脚本块不包含任何语言属性,则假定这些脚本块采用该指定语言。如果省略该开关,Jscript 就是 HTML 页和脚本小程序的默认语言,而 VBScript 是 Active Server Page 的默认语言。对于纯文本文件来说,默认脚本语言由文件扩展名(.js 或 .vbs)来确定。
/e defExtension 可选。使输入文件与特定的文件类型相关联。如果不能从输入文件的扩展名中明显知道文件类型(即输入文件的扩展名不是一个可识别的扩展名),但文件内容确实属于可识别的类型,则使用该开关。该选项没有默认设置。如果文件的扩展名不可识别,并且未指定该选项,脚本 Encoder 就会因该文件不可识别而失败。可识别的文件扩展名有:.asa、.asp、.cdx、.htm、.html、.js、.sct 和 .vbs。
inputfile 必需。要进行编码的输入文件名,包括任何与当前目录相关的必需路径信息。
outputfile 必需。要生成的输出文件名,包括任何与当前目录相关的必需路径信息。
说明
脚本 Encoder 可处理四种类型的文件,它们是:
ASP。这种格式由一个文本 Active Server Page 组成,该页包含有效的 HTML 以及 <SCRIPT> ... </SCRIPT> 标记或 <% ... %> 标记中的嵌入脚本块。使用这种格式的应用程序包括 Microsoft? Internet Information 服务 (IIS)。可识别的文件扩展名有 .asp、.asa 和 .cdx。
HTML。这种格式由一个文本文件组成,该文件包含有效的 HTML 和嵌入脚本块。使用这种脚本格式的应用程序包括 Microsoft FrontPage?、Microsoft? Visual InterDev? 和几乎所有的 Web 设计器和浏览器。可识别的文件扩展名有 .htm 和 .html。
纯文本。这种格式由一个文本文件组成,该文件只包含周围没有标记的脚本。使用这种脚本格式的应用程序包括 Windows? Scripting Host (WSH) 和 Microsoft? Outlook?。可识别的文件扩展名有 .js 和 .vbs,它们在编码后分别变为 .jse 和 .vbe。
脚本小程序。这种格式由一个文本文件组成,该文件内的 <SCRIPT> ... </SCRIPT> 标记中包含有效的脚本小程序代码。可识别的文件扩展名有 .sct 和 .wsh。
示例
下面的示例将介绍脚本 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
请参阅
脚本 Encoder 概述 | 使用脚本 Encoder | 脚本编码示例
=======================================
使用脚本 Encoder
请参阅
脚本 Encoder 概述 | 脚本 Encoder 语法 | 脚本编码示例
脚本 Encoder 只对脚本代码进行编码,而不对文件的任何其他内容作任何改动,仍显示为纯文本。若要使用脚本 Encoder,请以普通方法开发和调试您的脚本,然后使用该实用程序对最终脚本进行编码。脚本 Encoder 在源代码中使用标记来标识应从哪里开始编码。
对于 Visual Basic? Scripting Edition (VBScript),下面的示例说明如何使用编码标记来展示纯文本格式的版权信息:
<SCRIPT LANGUAGE="VBScript">
'Copyright? 1998. XYZ Productions. All rights reserved.
'**开始编码**
' 这里是您的代码。
</SCRIPT>
在 JScript? 中,编码标记如下所示:
<SCRIPT LANGUAGE="JScript">
file://Copyright? 1998. ZYX Productions. All rights reserved.
file://**开始编码**
// 这里是您的代码。
</SCRIPT>
当调用脚本 Encoder 时,脚本块中开始标记之前的全部内容都不会被编码,而脚本块中的其他内容都将被编码。因此,如果省略开始标记,整个脚本块都会被编码,但如果开始标记在脚本块的结尾处,就不会对任何内容进行编码。
进行编码后,应该知道 <SCRIPT> 标记中的语言指示项已发生了变化。对于 VBScript,新的指示项如下所示:
<SCRIPT LANGUAGE="VBScript.Encode">
对于 Jscript,新的指示项如下所示:
<SCRIPT LANGUAGE="JScript.Encode">
脚本 Encoder 的调用是在 MS-DOS 命令行上或“运行”对话框中进行的,如下所示:
SRCENC [开关] 输入文件 输出文件
请参阅
脚本 Encoder 概述 | 脚本 Encoder 语法 | 脚本编码示例
============================================
脚本编码示例
请参阅
脚本 Encoder 概述 | 使用脚本 Encoder | 脚本 Encoder 语法
下面是 Web 页的一个简短示例,包含一些需要保护的 JScript 代码:
<HTML>
<HEAD>
<TITLE>Script Encoder Sample Page</TITLE>
<SCRIPT LANGUAGE="JScript">
<!--//
file://Copyright? 1998 Microsoft Corporation.保留所有权利。
file://**开始编码**
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);
}
file://-->
</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">
<!--//
file://Copyright? 1998 Microsoft Corporation.保留所有权利。
file://**开始编码**#@~^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 @*^#~@
file://-->
</SCRIPT>
</HEAD>
<BODY onload="getAppropriatePage()">
</BODY>
</HTML>
注意 编码后,哪怕只在已编码的文本中更改一个字符,整个脚本都将丧失完整性,而且不再可用。
请参阅
脚本 Encoder 概述 | 使用脚本 Encoder | 脚本 Encoder 语法
=================================================================
另外,守柔再看一下:
本来以为我给出的两个例子文档中的宏,已能说明如何“加密”,但你的回贴中谈到我给出的两个试例文档中,有一个能够在VBS中看到原文,不知说的是哪一个?
我试的结果是:在不“启用宏”时,两个文档的“真正正文”在VBS中都是“不可见”的(这时看到的,应该都是“原始页面”上的内容,不应该看到我在VBA中设的变量。);
只有“启用宏”才既可在原文页面中看到,又可在VBA中看到,当然也就能在VBS中看到。
毕竟,没有启用宏时,我给出的例子,在VBS中应该是看不到的呀??我在Win98/office2000企业版中试了多次(包括这阵我看到你的回贴后又试了几次),都没有出现守柔兄说的没有启用宏就看得到(启用宏后看得到是很正常的。),你老兄说看得到的那个是“利用时间来删除”的那个,还是“利用退出事件来删除”的那个?
盼告我,我好再研究一下。
[此贴子已经被作者于2004-9-30 23:34:45编辑过] |