Welcome

首页 / 软件开发 / C++ / 软件试用次数的限制

软件试用次数的限制2010-01-10软件试用次数的限制有很多种方法,其关键是把次数这个值存储在哪里。本文介绍一种方法,通过改变文件的时间来存储试用次数,从而限制软件的试用。

一、通过改变文件时间来限制软件的试用次数

在MS-DOS中,文件的时间是 通过一个16位的值来保存的,位 15~11用来保存小时数,位10~5用 来保存分钟数,位4~0用来保存秒钟数。这个16位的值正好可以被我们用来保存试用次数。例如,在下面的示例程序中,笔者就使用了保存分钟数的位来保存试用次数。运行一下示例程序,我们可以看到,只是文件时间的分钟数加了1,一般人很难察觉,这种方法有比较好的隐蔽性。

二、示例程序中所涉及的中断

1.中断21H的功能3DH

用途:打开文件用于读。写或补充。

调用寄存器:AH=3DH,AL=00H,DS:DX=文件名;

返回寄存器:CF 复位--成功,AX=文件把柄。

CF 置位--出错,AX=错误代码。

2.中断21H的功能3EH

用途:强迫清除所有缓冲区,更新目录,使文件把柄无效。

调用寄存器:AH=3EH,BX=文件把柄;

返回寄存器:CF 复位--成功,AX被破坏,

CF 置位--出错,AX=错误代码。

3.中断21H的功能57H、子功能00H

用途:读出文件被最后修改的日期和时间。

调用寄存器:AX=5700H,BX=文件把柄;

返回寄存器:CF 复位--成功,CX=文件时间, DX=文件日期,

CF 置位--出错,AX=错误代码。

4。中断21H的功能57H、子功能01H

用途:将文件最后被修改过的日期和时间信息变 成指定值。

调用寄存器:AX=5701H,BX=文件把柄,CX= 新时间,DX=新日期;

返回寄存器:CF 复位--成功,

CF 置位--出错,AX=错误代码。