汇编源代码之硬盘保护锁
2009-01-28 09:37:08 来源:WEB开发网0F6D:017D B402 MOVAH,02
0F6D:017F 90 NOP
0F6D:0180 90 NOP
0F6D:0181 B610 MOVDH,10
0F6D:0183 B700 MOVBH,00
0F6D:0185 CD10 INT10 ;设置光标位置(当然是"PASSWARD"字符串后面了)
0F6D:0187 3C08 CMPAL,08
0F6D:0189 7437 JZ01C2 ;是退格键则跳至退格处理
0F6D:018B 50 PUSHAX
0F6D:018C B40E MOVAH,0E
0F6D:018E B02A MOVAL,2A
0F6D:0190 B307 MOVBL,07
0F6D:0192 CD10 INT10 ;显示一个"*"(没有回显的密码输入是不是很恐怖)
0F6D:0194 58 POPAX
0F6D:0195 0423 ADDAL,23 ;密码字符加23H(受空间限制,加上该程序在系统启
;动前执行,在此,我只是简单的将密字加上23H,
;如果谁有好而小巧的算法,别忘了告诉我)
0F6D:0197 8805 MOV[DI],AL
0F6D:0199 47 INCDI
0F6D:019A 49 DECCX
0F6D:019B 83F900 CMPCX,+00
0F6D:019E 740A JZ01AA ;是否读了第9次键盘,是跳转至输入溢出处
0F60:01A0 FEC2 INC DL
0F60:01A2 EBD1 JMP 0175
;本段用于处理键盘输入超过8次
0F6D:01AA B610 MOVDH,10
0F6D:01AC B402 MOVAH,02
0F6D:01AE B223 MOVDL,23
0F6D:01B0 B700 MOVBH,00
0F6D:01B2 CD10 INT10
0F6D:01B4 B409 MOVAH,09
0F6D:01B6 B000 MOVAL,00
0F6D:01B8 B307 MOVBL,07
0F6D:01BA B90900 MOVCX,0009
0F6D:01BD CD10 INT10
0F6D:01BF EB9F JMP0160 ;重新读取密码
;本段用于退格处理
0F6D:01C2 51 PUSHCX
0F6D:01C3 B403 MOVAH,03
0F6D:01C5 B700 MOVBH,00
0F6D:01C7 CD10 INT10 ;读光标位置
0F6D:01C9 80FA23 CMPDL,23
0F6D:01CC 74A7 JZ0175 ;光标是否已到头,是则去读下一密字
0F6D:01CE 81FF0008 CMPDI,0800
0F6D:01D2 74A1 JZ0175 ;密码缓冲是否已到头,是则去读下一密字
0F6D:01D4 B402 MOVAH,02
0F6D:01D6 FECA DECDL
0F6D:01D8 CD10 INT10
0F6D:01DA B40E MOVAH,0E
0F6D:01DC B000 MOVAL,00
0F6D:01DE B307 MOVBL,07
0F6D:01E0 CD10 INT10 ;光标前移一位,并删除一个"*"
0F6D:01E2 B80000 MOVAX,0000
0F6D:01E5 8905 MOV[DI],AX ;密码缓冲当前指针处清零
0F6D:01E7 4F DECDI ;密码缓冲指针减一
0F6D:01E8 8905 MOV[DI],AX ;密码缓冲当前指针处清零
0F6D:01EA 59 POPCX
INC CX ;///CX 应该加1
0F6D:01EB EB88 JMP0175 ;重新读键盘
;本段用于比较密字
0F6D:01F6 B80000 MOVAX,0000
0F6D:01F9 8EC0 MOVES,AX
0F6D:01FB 8ED8 MOVDS,AX
0F6D:01FD BEB007 MOVSI,07B0
0F6D:0200 BF0108 MOVDI,0801
0F6D:0203 B90400 MOVCX,0004
0F6D:0206 F3 REPZ
0F6D:0207 A7 CMPSW
0F6D:0208 7404 JZ020E ;字符串相同则跳转至正确引导系统代码
0F6D:020A EB3C JMP0248 ;字符串不相同则跳转至加密硬盘代码
;正确引导系统代码
0F6D:020E B80000 MOVAX,0000
0F6D:0211 8EC0 MOVES,AX
0F6D:0213 B80102 MOVAX,0201
0F6D:0216 B90200 MOVCX,0002
0F6D:0219 BA8000 MOVDX,0080
0F6D:021C BB00F0 MOVBX,F000
0F6D:021F CD13 INT13
0F6D:0221 B80103 MOVAX,0301
0F6D:0224 B90100 MOVCX,0001
0F6D:0227 BA8000 MOVDX,0080
0F6D:022A CD13 INT13 ;0柱0道2扇是HDBOOT.EXE写入的由硬盘锁代码
;(也就是大家现在看到的代码)+正确的硬盘分
;区表组成,将其写入0柱0道1扇后操作系统就可
;正常读取硬盘了
更多精彩
赞助商链接