QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2852|回复: 0
打印 上一主题 下一主题

软件试用次数的限制

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 01:31 |只看该作者 |倒序浏览
|招呼Ta 关注Ta

( x1 D; G ~ R# { h5 h3 K

0 P6 O3 N5 W! Y/ Q, f

软件试用次数的限制有很多种方法,其关键是把次数这个值存储在哪里。本文介绍一种方法,通过改变文件 的时间来存储试用次数,从而限制软 件的试用。 ; w/ e6 S/ q9 k3 V4 ^( f9 C一、通过改变文件时间来限制软件的试用次数 8 J4 h7 r" ]% r2 U2 M5 ^' _ 在MS-DOS中,文件的时间是 通过一个16位的值来保存的,位 15~11用来保存小时数,位10~5用 来保存分钟数,位4~0用来保存秒钟 数。这个16位的值正好可以被我们用来保存试用次数。例如,在下面的示例 程序中,笔者就使用了保存分钟数的 位来保存试用次数。运行一下示例程序,我们可以看到,只是文件时间的分 钟数加了1,一般人很难察觉,这种方 法有比较好的隐蔽性。 * z' }" C3 x6 W5 I# f3 P; Y二、示例程序中所涉及的中断 0 A" v; S9 g. d, ]# o, `1 M6 K; { 1.中断21H的功能3DH ! r7 \1 y: M( q* _7 o 用途:打开文件用于读。写或补 充。 ! h$ D9 F5 F8 Y& ^: { 调用寄存器:AH=3DH,AL=00H,DSX=文件名; i6 S% m$ O1 \ 返回寄存器:CF 复位--成功,AX=文件把柄。 7 {3 A: P. q ~2 k4 Q% S* r2 a CF 置位--出错,AX=错误代码。 + u- i8 F# x$ ~7 j 2.中断21H的功能3EH 6 a1 ^4 z8 {* u/ T5 f* [ 用途:强迫清除所有缓冲区,更新目录,使文件把 柄无效。 0 Y$ d q2 J0 R7 w7 m6 F7 C$ i 调用寄存器:AH=3EH,BX=文件把柄; & v2 k: j" i. {6 F 返回寄存器:CF 复位--成功,AX被破坏, 4 ^2 C; K; U- P( ^* ~" O0 y CF 置位--出错,AX=错误代码。 2 y7 K; u0 B3 z; }8 G3 h3 v* Q 3.中断21H的功能57H、子功能00H O' B2 P1 q- I: l' E" K4 x4 G 用途:读出文件被最后修改的日期和时间。 % H# i" J* E- g# ]3 u5 b4 l% i# R 调用寄存器:AX=5700H,BX=文件把柄; " G2 N9 y; S1 D) R" ?$ }5 y 返回寄存器:CF 复位--成功,CX=文件时间, DX=文件日期, 9 s' c1 @) o3 G5 k; { CF 置位--出错,AX=错误代码。 * a4 ]! |- k* `7 q( [ 4。中断21H的功能57H、子功能01H * k$ z0 |0 c$ @4 D' v' v7 P: n 用途:将文件最后被修改过的日期和时间信息变 成指定值。 6 |& d/ e, i' w7 ^ 调用寄存器:AX=5701H,BX=文件把柄,CX= 新时间,DX=新日期; # n' R0 `2 I0 z6 q6 v7 H# k6 S. n 返回寄存器:CF 复位--成功, + j& o/ s- n* z" I CF 置位--出错,AX=错误代码。 / [" Q" x5 V/ r/ P" Y 三、示例程序 4 a* i0 l: t! y9 y8 R# h6 C #include <sidio.h> * B/ P2 q) D( D: t# v/ v& n#include <dos.h> + `2 p* I; {3 h* M: _7 Q#include <conio.h> 7 l* G N+ E6 jint count( ) * {7 A3 T- W0 w{ + c$ U5 |4 i) B8 [" _! m3 w union REGS inregs,outregs; u% h! e5 Q# H4 S" H strut SREGS segs; 4 _- F! W) F3 w$ A$ K unsigned handle; 2 ? v$ S5 g& N unsigned times; 6 b. c% W. I# i1 V2 L6 _7 o / * 打开文件 * / 9 F6 U& X Y0 c inregs.h.ah =0x3d; - _! |* L0 ?: q* j2 W inregs.h.al =0; - J% }$ [# {) C0 h/ F scgread(& segs); : a& s9 `9 E3 p) K' g1 n. c# t inregs.x.dx ="test.exe"; ! e0 X! I% |; N$ X }3 O, Z intdosx(& inregs, & outregs, & segs); 8 O5 h0 s1 [2 r0 | if(outregs.x.cflag) return(0); - [/ Q, x! M$ B5 R7 Q else 2 R) f& r: ^8 w! |3 X! p- } { ! D0 Y3 h- X. V' n3 Y0 [; R* L / * 读取文件日期时间 * / ; X9 s7 W8 D2 Q4 B" B+ X. v; [ handle = Outregs.x.ax; 1 ^* L1 z( J4 ]: C0 }2 r inregs.x.ax = 0x5700; ( n: N' j- J% k, C- C+ g inregs.x.bx = handle; * G4 Y% L( h" I* L ^6 _8 e# m5 h intdosx(& inregs, & outregs, &segs); ( x& [; f; v& J0 i) S( H times = (outregs.x.cx &0x7e0)> > 5; - X7 J9 r6 _2 K+ J if(times <40)/ * 试用次数可以通过改变此处的'40'来实现 * / 5 t% y. \6 Q+ p* B1 c! L { " c2 l+ W }% G3 a; y inregs.x.ax = 0x5701; / L+ k2 @- k& n1 t* h) V8 R inregs.x.bx = handle; : c6 d3 A! j( l' G7 z inregs.x.cx = outregs.x.cx + 0x20; / * 试用次数计数 * / # S! K1 g3 _ d. V3 q inregs.x.dx = outregs.x.dx; , m% I- U% P( Y intdosx(& inregs, & outregs, & segs); / * 重置日期时间 * / 0 i, o1 M. Z3 @3 H3 w, {: b; D return(2); + _. n$ c; ?. Z, A% Q# F" z } / u3 f1 b' H/ Q- F! r else return(1); 1 f. e6 V; x5 ?" k+ i / * 关闭文件 * / : h* e; U! a& P$ ? inregs.h.ah = 0x3e; 3 P( L. x" f0 `' N1 \' O inregs.x.bx = handle; , _8 p) z- L% i$ i intdosx(& inregs, & outregs, & segs); 6 h2 U/ e: l% j2 ?' m- J } ) ?$ j) ~5 \$ {! I1 I$ |, X } + z- N8 V, R& P zmain() 3 J$ P* ^. t7 o# U. _{ % e6 b p- @0 `. h: v" w int flag; 4 C& ^" {$ G ~" M flag = count(); R" \8 n0 r. ?5 P& a7 {; C if(flag==0) printf("此软件为试用版,请勿任意修改!\ n"); : |$ q5 }' c' k1 S. X8 F if(flag==1) printf("此软件为试用版,您的试用次数已满!\n"); + f! [2 Z1 C5 Z4 V" m" `4 x7 @$ ], Q if(flag==2) printf("此软件为试用版,欢迎试用!\n"); 6 H, P& M+ I2 z+ j# d) a) l } ' j9 u5 l, p1 ~' P3 G/ E$ b

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-6-13 03:29 , Processed in 0.558197 second(s), 51 queries .

回顶部