杨龙兴
The Implementation of Authorware′s Software-dog Encryption with Text Communication
Yang Longxing
Authorware是一套功能强大的制作多媒体软件的编著工具。其基于图标和流程线为结构的编辑环境,使不具有程序设计经验的生手,也能设计出多媒体产品,加上有丰富的函数及程序控制功能,使它成为多媒体教材或游戏软件的良好开发工具。本文介绍一种利用VB与Authorware之间的文本通讯,实现Authorware应用程序包的软件狗加密的新方法。
1 VB对并行I/O口操作的实现方法
VB本身并没有I/O端口输入输出函数,Windows API(应用程序接口)也没有提供端口输入输出的能力,因此大部分软件对插在打印机口的软件加密狗,仍采用DOS下的C语言或80x86汇编语言的方式进行通讯查询。但由于VB具有动态链接库DLL的调用功能,因此可以通过调用其他高级语言(如Visual C++5.0)建立的具有I/O操作功能的DLL,来实现VB对I/O口的操作。设用Visual C++5.0编程用于操作并行I/O口的动态链接库名称为OutIn.DLL。DLL中有三个用于VB调用的功能子函数,它们分别为对数据口(口地址为0378H)进行输入输出操作的子函数OutInDaTa()对状态口(口地址为0379H)进行输入操作的子函数Status ()以及对控制口(口地址为037AH)进行输出操作的子函数Control()。VB在使用这些函数之前,必需在全局模块(*.Bas)中进行声明后,才可以在VB的FORM窗口中调用。其声明和主窗口程序如下:
VB加密狗操作程序
’Module 1. bas 中对DLL定义函数的声明
Declare Function OutInData Lib “OutIn.DLL”(ByVal value As Integer) As Integer
Declare Function Status Lib “OutIn.DLL”() As Integer
Declare Function Control Lib “OutIn.DLL” (ByVal value1 As Integer) As Integer
’FORM 框中 INSPECT.EXE 主程序
Private Sub Form-Load()
j=Control (0)’ 给加密狗上电
j1=OutInData (16)’ 给加密狗输入数据
Stadata=Status ()’ 检测状态口上加密狗输出数据
Form1.Text1.Text=Str(Stadata)
Open “c:\CommuTxT” For Output As #1
Print #1 Form1.Text1.Text
Close #1
If Stadata=6868 Then
MSG=“启动成功,谢谢使用!”
Title=“ 检查框”
I=MsgBox(MSG 0 Title)
Else
MSG=“对不起,您是非法用户!”
title=“ 检查框”
I=MsgBox(MSG 16 Title)
End
End If
end Sub
以上程序打包成INSPECT.EXE,供Authorware加密时调用。
2 VB与Authorware之间的文本通讯及软件狗加密的实现
上述VB程序运行后,将得到一个名为CommuTXT的文本文件,文本文件中存有检测状态口得到的数据Statusdata。这个数据与软件狗中的一致,则为安装有软件狗的合法用户,可继续运行Authorware应用软件包;否则为非法用户,将退出Authorware应用软件,回到Windows状态。因此Authorware应用软件必须在其流程线的一开始加入调用外部文件INSPECT.EXE的计算图标EXT。在这个图标中不但实现了外部VB文件INSPECT.EXE的调用,还实现了从调用后得到的文本文件CommuTXT中,取出检测数据stadata并赋给Authorware新变量sta。为了判断检测数据与软件狗中数据的一致性,在流程线中要加入另一个计算图标TEST,若与软件狗中的数据Dogdata一致,可继续运行;否则退出应用软件。为了不使Dogdata在文本中被查出,最后在流程线上还需加入一个删除文件的计算图标DEL,用来删除VB运行后形成的CommuTXT文本文件。
Authorware流程图及计算图标的编程图如图1所示。