2024年6月20日发(作者:)
计算机时代2010年第12期 ・ 7 ・
利用ActiveX DLL技术实现ASP源代码的保护
刘艳霞。郑羽
(山西大同大学工学院,山西大同037003)
摘要:ASP脚本语言本身是以文本方式存储的,没有任何保护措施。为此,利用基于VB语言的ActiveX DLL技术来
编写ASP核心源代码并进行P.code模式的封装,实现了ASP源代码的保护,有效地防止了ASP源代码被解密。
关键词:ActiveX DLL;ASP;VB;P code
Using ActiveX DLL Technology to Protect ASP Source Code
LIU Yan—xia.ZHENG Yu
(School of Engineering,Shanxi Datong University,Datong,Shanxi o37oo3,China1
Abstract:ASP scripting language itself is stored in text mode without any protective measures.For this we use ActiveX DLL
technology based on Visual Basic language to write the core source code of ASP and package it in P—code mode,which has
realized ASP source code protection,and effectively prevents ASP source code to be decrypted.
Key words:ActiveX DLL;ASP;VB;P—code
0引言
写的,VB脚本语言本身只是VB的一个子集,包括的对象、语
微软公司推出的ASP(Active Server Page)网络编程语言,
法、方法、事件等都远不能和VB本身相比。
由于其简单易学、功能较强大,所以多用于中小型网站建设
(3)提高代码利用率。利用ActiveX DLL组件技术封装
中。但ASP本身只是一种脚本解释语言,并不能进行编译,所
后,还可以方便地利用微软的其他工具进行二次开发,这样就
以源代码是以明文的方式放在服务器端执行,安全性能非常薄
节省了大量的代码重建工作,使得源代码利用率更高。
弱。即使采用专用的加密程序进行加密,这类加密程序也都是
2利用基于VB的ActiveX DLL技术封装ASP源代码
可逆的(否则服务器软件不会识别)。所以如何保护ASP源代
码就成了开发人员面临的一个重要问题。ASP采用的是VB语
2.1 ActiveX DLL技术的实现
(I)启动VB6.0,新建一个ActiveX DLL工程,命名为
法子集,所以本文利用基于VB的ActiveX DLL组件技术对
“
example.vbp”。
ASP源代码进行保护。
(2)为了将ASP内置的对象引入到VB中进行编程,需要将
1 ActiveX DLL组件技术及其优越性
ASP核心DLL文件加入到工程中来。从“工程”菜单中选择“引
ActiveX DLL技术是微软提出的广泛应用于Windows系
用”,然后从中选择“Microsoft Active Server Pages Object
列的一种代码封装技术,用以提高程序代码的可重用性,加快 Library”库文件。另外为了操作数据库,一般还需要选择
程序项目的开发速度,一般被称为“组件”技术。VB6.0中一般
“Microsoft ActiveX Data Objects 2.8 Library”库文件。
包含了ActiveX EXE、ActiveX控件(即ocx)和ActiveX DLL,
(3)新建一个类模块,命名为“test.cls”。
除了ActiveX DLL外都不能用于ASP。用ActiveX DLL组件
(4)在模块中首先进行全局变量定义,将ASP内部五大对
技术将ASP源代码封装起来,不仅可以对ASP源代码进行保
象进行声明。代码如下:
护,而且还拥有以下几个方面的优越性。
Private MyScriptingContext As Sc ptingCOntext
(1)执行速度更快。因为ASP源代码由解释执行变为编译
‘ASP脚本对象声明,将ASP内部对象进行引用,没有这句就不能引用’
执行,意味着文件在机器语言中运行,能达到它能够达到的速度。
Private MyApplication As Application
(2)开发环境更丰富。因为ASP一般是用VB脚本语言编
‘声明ASP内部Application对象’
应用,2009.45(24):133-135
【5】Shen J L,Hung J W,Lee L S.Robust entropy—based endpoint
2】Rabiner L R,Sambur M R An algorithm for determining the
detection for speech recognition in noisy environments[C]//
endpointsof isolated utterances[J].Bell System Technical Journal,
ICSLP’98,1998:232-235
1975.54(2):297-315
【6】严剑峰,付宇卓.一种新的基于信息熵的带噪话音端点检测方硅【J】.
31汤维维.基于MAT乙 B的谱相减语音增强算法的设计与实现【J】.中 计算机仿真,2005.22(11):117~119
国科技论文在线,2006:1-4
f7】董胡,钱盛友,刘洋,谭乔来.基于DCT增强和改迁谱熵曲语音端点检
4】赵力.语音信号处理(第2版)【M1.机械工业出版社,2009.
测方[J1.通信技术,2007.11(40):191~193潮
・
8 ・ Computer Era No.12 2010
Private MyRequest As Request‘声明ASP内部Request对象’
regsvr32 c:\inetpub\wwwroot\example.dll。
Private MyResponse As Res ̄nse‘声明ASP内部Response对象’
Private MyServer As Server‘声明ASP内部Server对象’
Private MySession As Session‘声明ASP内部Session对象’
(5)新建OnStartPage函数和OnEndPage函数。IIs调用任何
个ActiveX DLL组件者 首先自动运行OnStartPage函数,然
后在调用组件结束时再自动运行OnEndPage函数。我们可以在
一
这in t"函数中分别进行对象的初始化和对象的关闭。代码如下:
Public Sub OnStartPage(PassedScriptingContext As
Sc riptingContext)
Set MyScriptingContext=PassedScriptingContext
Set MyApplication=MyScriptingContext.Application
Set MyRequest=MyScriptingContext.Request
Set MyResponse=MyScriptingContext.Response
Set MyServer=MyScriptingContext.Server
Set MySession=MyScriptingContext.Session
End Sub
Public Sub OnEndPage()
Set MySc riptingCOntext=NOthing
Set MyApplicatiOn=NOthing
Set MyRequest=N0lhing
Set MyRespOnse=N0thing
Set MyServer=Nothing
Set MySessiOn=N0thing
End Sub
经过上面的初始化工作,就可以像编写标准的ASP源代码
一
样去编写代码了,而且当编写代码使用自定义的这些对象
时,同样能获得如同VB内部一样的代码自动提示功能的支
持。这一点是其他编程工具都无法比拟的,这大大方便了代码
编写工作。不过,到现在为止,这个组件是没有任何功能的。
(6)新建功能函数“Sayhello”,实现文本输出功能。代码如下:
Public Sub Sayhello()
MyResponse Write(..这是asp转化为组件的演示 &”<br>”
MyResponse.Write”组件修改演示!-.&”<br>”
MyResponse.Write”Pcode编译方式实现!”&”<br>”
从以上代码可以看出,通过使用MyResponse来代替
Response,我们能够使用所有Response的方法。这样就轻松实
现了ASP代码向VB代码的转化。
2.2用P—code方式编译组件
组件编写完成后,需要编译成Activex DLL文件。VB中
有两种编译方式:“本机代码”和“P代码”方式。“本机代码”方式
虽然可以对代码进行优化,执行效率可以提高,但是编译后的
文件可以被反编译工具显示出明文字符串,而且也容易被解密
者利用工具进行动态调试;而“P代码”方式编译后的文件则不
能看出任何可用信息,而且也很难进行动态调试。出于安全性
考虑,应将组件用“P代码”方式编译。对这两种编译方式用反
编译工具C32asm查看字符串,其结果如图l所示。
2.3 ActiveX DLL组件的注册和调用
生成ActiveX DLL组件后,必须注册后才能被系统识别并
使用。假设组件名为“example.dll”,存放的路径为“c:
Vmetpub\wwwroot”,在系统中注册时需要运行以下语句:
图l“P代码”与“本机代码”字符串比较
注册后,可以编写基于ASP源代码的网页,然后在网页中
调用编写好的ActiveX DLL组件文件“example.dll”。调用方法
和主要代码如下:
<%
rem创建对组件的引用
Set ObjReference=Server.CreateObject(”example test”)‘利用
Server ̄x件的CreatecObject函数来调用ActiveX DLL组件文
件“example.dll”中的类模块test.cls’
ObjReference.Sayhello ‘调用组件中的Sayhello函数方法’
Set ObjReference=nothing‘关闭组件对象’
%>
3 ActiveX DLL组件保护中的问题
ActiveX DLL组件在编泽时虽然选择了P—code方式以更
好地保护源代码,但是在使用资源类工具(例如eXeScope)时仍
然可以查看到类名及其对外提供的函数名称和函数所需的参
数。因此,还应将编译好的文件使用加密壳或压缩壳类程序加
以保护,防止被解密者查到相应的明文信息,增加保护的力度。
4结束语
通过将ASP源代码的核心代码转换成基于VB的ActiveX
DLL组件,并在编译时选择P—code代码方式进行封装保护,这
样可以在一定程度上加强ASP源代码的安全性,使得ASP源代
码在开发过程中变得更加安全、高效和快速。
参考文献:
【1】郑羽,杨春生,才江等.加密与解密实战入门【M】.电子工业出版社,
2006.
【2】许礼捷ActiveXDII技术在ASP源代码保护中的应用[J】沙洲职业工
学院学报,2008 11(2):1N4
[3】管水能.ASP加密技术分析【J】电脑知识与技术,2009.5(36):
10597-10598
【4】崔学荣,李娟.ASP程序 版权保护【J].沈阳工业大学学报,2007.29
(1):107~110
【5J陈文博,夏长虹以组件对象为中心的动态Web开霞方法【JJ.计算机
应用,2000.6:17-19
发布者:admin,转转请注明出处:http://www.yc00.com/news/1718868633a2753190.html
评论列表(0条)