硬盘保护锁
作者: 来源: 发布日期:2007-9-4 15:09:27 点击次数:
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扇后操作系统就可 ;正常读取硬盘了 0F6D:022C B80000 MOVAX,0000 0F6D:022F 8EC0 MOVES,AX 0F6D:0231 B80102 MOVAX,0201 0F6D:0234 B90300 MOVCX,0003 0F6D:0237 BA8000 MOVDX,0080 0F6D:023A BB007C MOVBX,7C00 0F6D:023D CD13 INT13 ;0柱0道3扇是HDBOOT.EXE写入的原MBR区的备份,将 ;其读入0000:7c00处 0F6D:023F EA007C0000 JMP0000:7C00 ;长跳转至原MBR代码处执行(以后怎么样引导就不 ;是我们现在讨论的了),从而正确引导系统 ;加密硬盘代码 0F6D:0248 B80000 MOVAX,0000 0F6D:024B 8EC0 MOVES,AX 0F6D:024D B80102 MOVAX,0201 0F6D:0250 B90400 MOVCX,0004 0F6D:0253 BA8000 MOVDX,0080 0F6D:0256 BB00F0 MOVBX,F000 0F6D:0259 CD13 INT13 0F6D:025B B80103 MOVAX,0301 0F6D:025E B90100 MOVCX,0001 0F6D:0261 BA8000 MOVDX,0080 0F6D:0264 CD13 INT13 ;0柱0道4扇是HDBOOT.EXE写入的由硬盘锁代码(也就是 ;大家现在看到的代码)加上江明原理的逻辑锁,将其写入 ;0柱0道1扇后操作系统就被完全锁死了(不能从其它盘引导) 0F6D:0266 CD19 INT19 ;不用多说吧,相当于热启动 大家看后一定看出了一些问题,为了能够让这个硬盘锁可以跨平台,我设置为输入正确密码后就将 正确的分区表读入0柱0道1扇,输入不正确密码后就将江明锁读入0柱0道1扇,明白人一下就看出了,如
|