QQ登录

只需要一步,快速开始

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

软件试用次数的限制

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

) @' z, j2 P1 N% ? U) N# J }

0 O( y3 Y0 g) z7 c# T8 {

软件试用次数的限制有很多种方法,其关键是把次数这个值存储在哪里。本文介绍一种方法,通过改变文件 的时间来存储试用次数,从而限制软 件的试用。 * S+ y6 N. A. ]1 q一、通过改变文件时间来限制软件的试用次数 6 {' V5 K, s" A o9 r# S 在MS-DOS中,文件的时间是 通过一个16位的值来保存的,位 15~11用来保存小时数,位10~5用 来保存分钟数,位4~0用来保存秒钟 数。这个16位的值正好可以被我们用来保存试用次数。例如,在下面的示例 程序中,笔者就使用了保存分钟数的 位来保存试用次数。运行一下示例程序,我们可以看到,只是文件时间的分 钟数加了1,一般人很难察觉,这种方 法有比较好的隐蔽性。 . S! d+ x/ T7 Y' T4 f二、示例程序中所涉及的中断 $ x% L! S, @! Q* ]# a" O 1.中断21H的功能3DH 5 n( w- \5 j" l: u# G8 g 用途:打开文件用于读。写或补 充。 3 }' O$ G; S- W& x 调用寄存器:AH=3DH,AL=00H,DSX=文件名; + R4 }! d$ p5 ~# [ U" |7 s0 X+ b 返回寄存器:CF 复位--成功,AX=文件把柄。 % i {$ {* u% b: J% _ CF 置位--出错,AX=错误代码。 6 h* J. r9 T' N, r0 n/ j4 P 2.中断21H的功能3EH % Y. ^$ d* B' g) ?+ @+ S1 ? 用途:强迫清除所有缓冲区,更新目录,使文件把 柄无效。 ( [. c0 ^0 t7 N# l, u, j. f 调用寄存器:AH=3EH,BX=文件把柄; ! o. a; d. J1 }. }* e4 c 返回寄存器:CF 复位--成功,AX被破坏, : O' c5 C; y& H$ A8 _: R( T& K CF 置位--出错,AX=错误代码。 . P" g/ w0 v/ O( k! x 3.中断21H的功能57H、子功能00H * O+ c& W' Q# ~& a1 L& X; [ 用途:读出文件被最后修改的日期和时间。 / A" M; L$ j9 w2 Y8 }$ Q 调用寄存器:AX=5700H,BX=文件把柄; 7 f# U- Q3 ]' X3 n 返回寄存器:CF 复位--成功,CX=文件时间, DX=文件日期, $ {1 H4 @& E% M9 X( E) ]# Z- P CF 置位--出错,AX=错误代码。 # N' e# {3 [8 m 4。中断21H的功能57H、子功能01H $ i6 i1 K# F* i 用途:将文件最后被修改过的日期和时间信息变 成指定值。 + Z! k: }! h1 Q$ B2 B+ m 调用寄存器:AX=5701H,BX=文件把柄,CX= 新时间,DX=新日期; - e5 ?) T% @+ Q: \ 返回寄存器:CF 复位--成功, 2 A+ ^ y* J4 N; _: O/ L0 L' I' X CF 置位--出错,AX=错误代码。 # I W1 u2 Q t' M: \, p2 F 三、示例程序 * ?+ S2 ]8 v' _# z0 y+ D #include <sidio.h> , Y2 m' w' X* Q5 x#include <dos.h> , W$ e8 I7 a/ h4 }, S) U; X4 R7 q #include <conio.h> & J' l* z( J2 |; a Pint count( ) 1 ^5 k( Q5 ~" n) t" \5 e { 4 s+ F( ?# O, {' \ union REGS inregs,outregs; 8 }# i0 i: ~3 ~5 B6 p. g strut SREGS segs; * U( \" D& V ]7 ? unsigned handle; . U1 X5 J* ], C9 H K unsigned times; " F2 t6 r* m# _: g / * 打开文件 * / ( F, q. g" s% P4 m inregs.h.ah =0x3d; g8 y; W/ d: a4 U# w7 V1 b* h inregs.h.al =0; 9 W3 p% k/ M" ?" M scgread(& segs); ( J$ V7 R) w; ]9 L inregs.x.dx ="test.exe"; : \) G8 D+ V: ]. d3 S, k9 W intdosx(& inregs, & outregs, & segs); - }) d0 r' E3 W' |. G) L+ b$ K" u if(outregs.x.cflag) return(0); 9 i+ V g8 A7 R& H else y1 ~1 K$ @# ~* B* D% | { . M$ R* p- p; B( ~* r- } / * 读取文件日期时间 * / 1 O& W% A: c3 x# I1 `& t handle = Outregs.x.ax; 1 A. A4 r+ ~7 S1 L inregs.x.ax = 0x5700; 0 U9 o( R ^- b+ E9 q inregs.x.bx = handle; $ {9 p# W0 @9 S6 h# s intdosx(& inregs, & outregs, &segs); ( i+ n0 b) W/ {% m1 u times = (outregs.x.cx &0x7e0)> > 5; 2 h5 V8 ] R& e5 |: ~ if(times <40)/ * 试用次数可以通过改变此处的'40'来实现 * / 7 l' V2 ]. e3 j7 l { ' I, F$ ^ j' o9 l( _ inregs.x.ax = 0x5701; : w3 j$ E6 n1 I$ U inregs.x.bx = handle; # x; M& R; p3 ?) z' e$ E inregs.x.cx = outregs.x.cx + 0x20; / * 试用次数计数 * / 3 ^8 m d; n4 k u inregs.x.dx = outregs.x.dx; # m5 }# C! p) b F& J1 V% K intdosx(& inregs, & outregs, & segs); / * 重置日期时间 * / " ~4 a% y) J, y2 `) \" A: N return(2); % B; L/ R7 r0 T) W1 M1 o N9 }+ M; w" v } 7 E8 n( i/ R) \ \" b; }* q else return(1); * x3 d4 q' l/ z3 U: s* s / * 关闭文件 * / * R" ~9 \* c. W8 Q- \# N inregs.h.ah = 0x3e; 9 f6 |' I+ p( ]- `+ e inregs.x.bx = handle; % C/ r/ s& k. }- ~- q7 `8 l/ ? intdosx(& inregs, & outregs, & segs); 7 O" [" Z+ |& n4 d# Q. @7 b } 4 G! r; B- P3 j( j( d5 z} * `2 ~ E5 Q& J( M/ n; B& ~ main() , s: X7 Z6 s% {* h8 _ { ) ?! d! B9 Z6 Z$ _( R int flag; 2 J6 R* j8 E+ F- ` flag = count(); , `+ B j* y- O5 B9 Q if(flag==0) printf("此软件为试用版,请勿任意修改!\ n"); ; b. j6 x) e# w& E% c- _ if(flag==1) printf("此软件为试用版,您的试用次数已满!\n"); 4 N+ X1 M9 o- c* D* C if(flag==2) printf("此软件为试用版,欢迎试用!\n"); 7 q7 Z9 w+ a) x; D7 \ } 1 L+ Q, f. {- h0 N

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-14 03:50 , Processed in 0.425051 second(s), 52 queries .

回顶部