我想写一个硬盘锁的程序,希望各位帮助。

ltrap 2003-04-04 05:43:43
哪儿有用汇编锁硬盘的相关资料?
...全文
61 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
atm2001 2003-04-05
  • 打赏
  • 举报
回复
DB 00H,7CH,0F2H,0A5H,0EAH,1AH,06H,00H,00H,90H,0EBH,09H,50H,41H,53H,53H
DB 57H,4FH,52H,44H,00H,0B8H,00H,06H,0B7H,0F0H,0B9H,00H,00H,0BAH,4FH,18H
DB 0CDH,10H,0B2H,01AH,0BEH,1CH,06H,0B4H,02H,0B6H,10H,0B7H,00H,0CDH,10H,8AH
DB 04H,3CH,00H,74H,1BH,0B4H,09H,0B9H,01H,00H,0B7H,00H,0B3H,70H,0CDH,10H
DB 0FEH,0C2H,46H,0EBH,0E2H,0CDH,20H,4FH,3DH,33H,0CDH,20H,33H,33H,33H,33H
DB 0B9H,04H,00H,0B8H,00H,00H,8EH,0C0H,0BFH,01H,08H,0F3H,0ABH,0B9H,09H,00H
DB 0BFH,01H,08H,0B2H,23H,0B4H,00H,0CDH,16H,3CH,0DH,74H,79H,0B4H,02H,90H
DB 90H,0B6H,10H,0B7H,00H,0CDH,10H,3CH,08H,74H,37H,50H,0B4H,0EH,0B0H,2AH
DB 0B3H,07H,0CDH,10H,58H,04H,23H,88H,05H,47H,49H,83H,0F9H,00H,74H,0AH
DB 0FEH,0C2H,0EBH,0D1H,24H,67H,00H,77H,69H,6EH,0B6H,10H,0B4H,02H,0B2H,23H
DB 0B7H,00H,0CDH,10H,0B4H,09H,0B0H,00H,0B3H,07H,0B9H,09H,00H,0CDH,10H,0EBH
DB 9FH,51H,51H,0B4H,03H,0B7H,00H,0CDH,10H,80H,0FAH,23H,74H,0A7H,81H,0FFH
DB 00H,08H,74H,0A1H,0B4H,02H,0FEH,0CAH,0CDH,10H,0B4H,0EH,0B0H,00H,0B3H,07H
DB 0CDH,10H,0B8H,00H,00H,89H,05H,4FH,89H,05H,59H,0EBH,88H,07H,43H,04H
DB 0E8H,86H,0CDH,20H,44H,44H,0B8H,00H,00H,8EH,0C0H,8EH,0D8H,0BEH,0B0H,07H
DB 0BFH,01H,08H,0B9H,04H,00H,0F3H,0A7H,74H,04H,0EBH,3CH,55H,55H,0B8H,00H
DB 00H,8EH,0C0H,0B8H,01H,02H,0B9H,02H,00H,0BAH,80H,00H,0BBH,00H,0F0H,0CDH
DB 13H,0B8H,01H,03H,0B9H,01H,00H,0BAH,80H,00H,0CDH,13H,0B8H,00H,00H,8EH
DB 0C0H,0B8H,01H,02H,0B9H,03H,00H,0BAH,80H,00H,0BBH,00H,7CH,0CDH,13H,0EAH
DB 00H,7CH,00H,00H,00H,00H,00H,00H,0B8H,00H,00H,8EH,0C0H,0B8H,01H,02H
DB 0B9H,04H,00H,0BAH,80H,00H,0BBH,00H,0F0H,0CDH,13H,0B8H,01H,03H,0B9H,01H
DB 00H,0BAH,80H,00H,0CDH,13H,0CDH,19H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 64H,64H,64H,64H,64H,64H,64H,64H,00H,00H,00H,00H,00H,00H,00H,00H
DB 01H,00H,05H,0FEH,7FH,05H,3FH,00H,00H,00H,47H,39H,40H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,55H,0AAH
D7 DB 'You have been installed HDLOCK,do you remove?(y/n)',0dh,'$'
D8 DB 'PASSWORD ERROR$'
D9 DB 0dh,0ah
DB 0dh,0ah
DB ' # # # # # # # # # # # # #',0dh,0ah
DB ' # # # # # # # # # # # # #',0dh,0ah
DB ' # # # # # # # # # # # # #',0dh,0ah
DB ' # # # # # # # # # # # # #',0dh,0ah
DB ' # # # # # # # # # # # # # #',0dh,0ah
DB 0dh,0ah
DB ' ----------# HARD DISK LOCK #------------',0dh,0ah
DB ' BY:THE MAN LIKE WIND',0dh,0ah
DB ' E-mail:tyhhyf@hotmail.com',0dh,0ah
DB ' OICQ:86633320',0dh,0ah
D10 DB 'Enter anykey to enter the PASSWORD.$'
D11 DB 'Enter anykey to enter the PASSWORD again.$'
D12 DB 'Error:Two PASSWORD is not alike!$'
D13 DB 'The HDLOCK had been installed,please remember you PASSWORD!!!$'
D14 DB 'The HDLOCK had been removed.$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV DX,OFFSET D9
MOV AH,09H
INT 21H
MOV AH,00H
INT 16H
;判断是否安装过硬盘锁程序
NEXT:
MOV AX,0201H;读一扇区
MOV CX,0001H
MOV DX,0080H
MOV BX,0F000H
INT 13H
MOV AX,0201H
MOV CX,0001H
MOV DX,0080H
MOV BX,0E000H
INT 13H
MOV SI,0F1A0H
MOV DI,OFFSET D1
MOV CX,0003H
REPE CMPSW
JNZ INSTALL
JMP DEL
INSTALL:
MOV DX,OFFSET D2
MOV AH,09H
INT 21H
ENTER:
INT 16H
OR AL,20H
CMP AL,'y';是Y?
JE INSTALL1
CMP AL,'n'
JE EXIT
JMP ENTER
EXIT:
MOV AH,4CH
INT 21H
INSTALL1:
MOV AH,3DH
MOV DX,OFFSET D3
MOV AL,00H
INT 21H
JB AERROR
PUSH AX
MOV AH,3FH
MOV DX,0F000H
MOV CX,01BEH
POP BX
INT 21H
MOV AH,09H
MOV DX,OFFSET D10
INT 21H
MOV AH,00H
INT 16H
CALL NEAR PTR PWENTER
MOV SI,0F1B0H
MOV DI,0F3B0H
MOV CX,0004H
REPNZ MOVSW
MOV AH,06H
MOV AL,00H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
MOV DH,03H
MOV DL,00H
MOV BH,00H
MOV AH,02H
INT 10H
MOV AH,09H
MOV DX,OFFSET D11
INT 21H
MOV AH,00H
INT 16H
CALL NEAR PTR PWENTER
MOV SI,0F1B0H
MOV DI,0F3B0H
MOV CX,0008H
REPE CMPSB
JNZ EXIT4
JMP WRITE
AERROR:
MOV AH,09H
MOV DX,OFFSET D4
INT 21H
JMP EXIT
EXIT4:
MOV DH,03H
MOV DL,00H
MOV BH,00H
MOV AH,02H
INT 10H
MOV AH,06H
MOV AL,00H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
MOV AH,09H
MOV DX,OFFSET D12
INT 21H
MOV AH,4CH
INT 21H
WRITE:
MOV AX,0301H
MOV CX,0003H
MOV DX,0080H
MOV BX,0E000H
INT 13H
MOV BX,OFFSET D6
ADD BX,1B0H
MOV CX,4H
MOV SI,0F1B0H
MOV DI,BX
REPNZ MOVSW
MOV AX,0301H
MOV CX,0004H
MOV DX,0080H
MOV BX,OFFSET D6
INT 13H
MOV AX,0301H
MOV CX,0002H
MOV BX,0F000H
MOV DX,0080H
INT 13H
MOV AX,0301H
MOV CX,0001H
MOV BX,0F000H
MOV DX,0080H
INT 13H
MOV AH,06H
MOV AL,00H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
MOV DH,03H
MOV DL,00H
MOV BH,00H
MOV AH,02H
INT 10H
MOV AH,09H
MOV DX,OFFSET D13
INT 21H
JMP EXIT

DEL:
MOV DX,OFFSET D7
MOV AH,09H
INT 21H
ENTER2:
MOV AH,00H
INT 16H
OR AL,20H
CMP AL,'y'
JE UNLADE
CMP AL,'n'
JE EXIT1
JMP ENTER2
EXIT1:
MOV AH,4CH
INT 21H
UNLADE:
CALL NEAR PTR PWENTER
MOV SI,0F1B0H
MOV DI,0E1B0H
MOV CX,8H
REPE CMPSB
JNZ EXIT2
MOV AX,0201H
MOV CX,0003H
MOV BX,0F000H
MOV DX,0080H
INT 13H
MOV AX,0301H
MOV CX,0001H
MOV BX,0F000H
MOV DX,0080H
INT 13H
MOV DH,03H
MOV DL,00H
MOV BH,00H
MOV AH,02H
INT 10H
MOV AH,06H
MOV AL,00H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
MOV AH,09H
MOV DX,OFFSET D14
INT 21H
JMP EXIT
EXIT2:
MOV AH,09H
MOV DX,OFFSET D8
INT 21H
MOV AH,4CH
INT 21H
;子程序用于从键盘读密码
PWENTER PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AX,0600H
MOV BH,0F0H
MOV CX,0000H
MOV DX,184FH
INT 10H
MOV DL,1AH
MOV SI,OFFSET D5
DISPLAY:
MOV AH,02H
MOV DH,10H
MOV BH,00H
INT 10H
MOV AL,[SI]
CMP AL,00H
JE GETPW
MOV AH,09H
MOV CX,01H
MOV BH,00H
MOV BL,70H
INT 10H
INC DL
INC SI
JMP DISPLAY
GETPW:
MOV CX,0004H
MOV AH,0000H
MOV DI,0F1B0H
REPZ STOSW
MOV CX,0009H
MOV DI,0F1B0H
MOV DL,23H
READKEY:
MOV AH,00H
INT 16H
CMP AL,0DH
JE OK
CMP AL,20H
JE READKEY
CMP AL,00H
JE READKEY
CMP AL,09H
JE READKEY
CMP AL,1BH
JE AESC
PUSH CX
MOV AH,02H
MOV DH,10H
MOV BH,00H
INT 10H
POP CX
CMP AL,08H
JE BACKSPACE
PUSH AX
MOV AH,0EH
MOV AL,2AH
MOV BL,07H
INT 10H
POP AX
ADD AL,23H
MOV [DI],AL
INC DI
DEC CX
CMP CX,00H
JE OVERFLOW
INC DL
JMP READKEY
OK:
POP AX
POP BX
POP CX
POP DX
RET
AESC:
MOV AH,4CH
INT 21H
OVERFLOW:
MOV DH,10H
MOV AH,02H
MOV DL,23H
MOV BH,00H
INT 10H
MOV AH,09H
MOV AL,00H
MOV BL,07H
MOV CX,0009H
INT 10H
JMP GETPW
BACKSPACE:
PUSH CX
MOV AH,03H
MOV BH,00H
INT 10H
POP CX
CMP DL,23H
JE READKEY
CMP DI,0F1AFH;
JE READKEY
PUSH CX
MOV AH,02H
DEC DL
INT 10H
POP CX
PUSH CX
MOV AH,0EH
MOV AL,00H
MOV BL,07H
INT 10H
POP CX
MOV AX,0000H
MOV [DI],AX
DEC DI
MOV [DI],AX
CMP CX,09H
JE AJUMP
INC CX
JMP AJUMP
AJUMP:
JMP READKEY
PWENTER ENDP
CODE ENDS
END START

该程序用来将HDLOCK.DAT文件写到MBR区,有兴趣的朋友可以试试。
该文作者:风般的男人
atm2001 2003-04-05
  • 打赏
  • 举报
回复
;正确引导系统代码
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扇,明白人一下就看出了,如
果电脑主人上次用正确密码进入了电脑,而电脑非法使用者一次都不试密码,就直接用软盘或光盘或
USB盘引导,那么就可以非法访问硬盘了,说实话,这个问题困扰了我许久,一直不得其解,不这样做,
就得在输入正确密码后就将正确的分区表读入0柱0道1扇,然后在操作系统启动后再做手脚把0柱0道1扇的
分区表加密,这样做有两个问题,(1)操作系统启动做的手脚一定是放在操作系统的自启动中(如DOS的
AUTOEXEC.BAT、WIN98的"启动"等),这样做显然不安全,(2)同时这样做显然不能做到"跨平台",所以我只
能在程序说明中告诉使用者,如果离开电脑,就故意输入一错误密码,那么江明锁就将硬盘锁死了,这样电脑
非法使用者用软盘或光盘或USB盘都不能引导了,(大家知道所谓江明锁,就是让扩展分区指向自己,从而使
启动程序陷入死循环,这个该死的东西也不知害死了多少硬盘,也该让他做做好事了),要是谁有更好的方法
解决这一问题,一定要告诉我.
再来介绍一下HDLCOK.EXE文件,以下是完整的程序源代码:

;硬盘锁安装程序
DATA SEGMENT
D1 DB 0CDH,0BFH,0D1H,0E5H,0EAH,0CDH
D2 DB 'You had not install the HDLOCK,do you install?(y/n)',0dh,0ah,'$'
D3 DB 'HDLOCK.DAT',00H
D4 DB 'Can not find file (HDLOCK.DAT)',0dh,0ah,'$'
D5 DB 'PASSWORD',00H
D6 DB 1EH,06H,0B9H,00H,01H,0BFH,00H,06H,0B8H,00H,00H,8EH,0D8H,8EH,0C0H,0BEH;逻辑锁
atm2001 2003-04-05
  • 打赏
  • 举报
回复
to楼主
一些资料
该文作者:风般的男人

硬盘保护锁
[原创]硬盘保护锁
我在前一段时间写了一个硬盘锁,拿出来和大家交流交流,同时有个问题,希望大
家能帮我想想。
首先,大略介绍一下我的程序,我是用汇编写成,程序有2个文件:hdlock.exe
hdlock.dat ,其中hdlock.dat是我写的用于装入硬盘0柱0道1扇的硬盘锁,hdlock.exe实现
(1)把hdlock.dat装入硬盘0柱0道1扇并设置硬盘锁的密码,(2)修改密码,(3)卸载
硬盘锁
在此,先介绍一下 hdlock.dat,因为硬盘锁本身受空间限制,必须严格控制在1bdH
字节内,(知道为什么吗?)所以是不能用masm先写原程序,再编译,我基本上是用debug
的A命令一次性写出来的,我把这些反汇编了出来,加上一些注释,给大家看看,互相学习
吗。 
;这一段是将整个硬盘锁从0000:7c00移至0000:0600,以免被后来读入的代码覆盖
0F6D:0100 1E PUSHDS
0F6D:0101 06 PUSHES
0F6D:0102 B90001 MOVCX,0100
0F6D:0105 BF0006 MOVDI,0600
0F6D:0108 B80000 MOVAX,0000
0F6D:010B 8ED8 MOVDS,AX
0F6D:010D 8EC0 MOVES,AX
0F6D:010F BE007C MOVSI,7C00
0F6D:0112 F2 REPNZ
0F6D:0113 A5 MOVSW
0F6D:0114 EA1A060000 JMP0000:061A ;长跳转至移动后的代码,也就是从011a处开始执行
0F6D:0119 90 NOP
0F6D:011A EB09 JMP0125

;这一段是对屏幕进行初始化,显示字符串"PASSWORD"
0F6D:0125 B80006 MOVAX,0600
0F6D:0128 B7F0 MOVBH,F0
0F6D:012A B90000 MOVCX,0000
0F6D:012D BA4F18 MOVDX,184F
0F6D:0130 CD10 INT10 ;初始化屏幕(前景为黑色,背景为灰白,字符闪烁)
0F6D:0132 B21A MOVDL,1A
0F6D:0134 BE1C06 MOVSI,061C ;从061cH处显示字符(因为程序将被读入了0000:0600处,
;实际显示的也就是现在的11cH处开始的字符串)
0F6D:0137 B402 MOVAH,02
0F6D:0139 B610 MOVDH,10
0F6D:013B B700 MOVBH,00
0F6D:013D CD10 INT10 ;设光标位置(10H行1aH列)
0F6D:013F 8A04 MOVAL,[SI]
0F6D:0141 3C00 CMPAL,00
0F6D:0143 741B JZ0160 ;是否已显示完字符串,是则跳至从键盘读取密码处
0F6D:0145 B409 MOVAH,09
0F6D:0147 B90100 MOVCX,0001
0F6D:014A B700 MOVBH,00
0F6D:014C B370 MOVBL,70
0F6D:014E CD10 INT10 ;显示一个字符
0F6D:0150 FEC2 INCDL ;光标后移一位
0F6D:0152 46 INCSI ;字符指针后移一位
0F6D:0153 EBE2 JMP0137 ;继续显示下一字符

0f6d:011c db 'PASSWARD'00 ;用于显示的字符串

; 从键盘读取密码
0F6D:0160 B90400 MOVCX,0004
0F6D:0163 B80000 MOVAX,0000
0F6D:0166 8EC0 MOVES,AX
0F6D:0168 BF0108 MOVDI,0801
0F6D:016B F3 REPZ
0F6D:016C AB STOSW ;在0000:0801开始处开一片长度为8个字节的缓冲区
;(用00H来标记),用于存放从键盘读入的密码,(密码
;最多为8个字符,最少为0个字符)
0F6D:016D B90900 MOVCX,0009 ;最多读9次键盘(当然第9次是重头读过)
0F6D:0170 BF0108 MOVDI,0801 ;从801H处开始写密码
0F6D:0173 B223 MOVDL,23

0F6D:0175 B400 MOVAH,00
0F6D:0177 CD16 INT16 ;读键盘
0F6D:0179 3C0D CMPAL,0D
0F6D:017B 7479 JZ01F6 ;是回车则跳至密码比较处
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 ;字符串不相同则跳转至加密硬盘代码




little_sheep 2003-04-05
  • 打赏
  • 举报
回复
资料在超星上有,高云庆的硬盘保护技术XX。
little_sheep 2003-04-05
  • 打赏
  • 举报
回复
最好用ISA子程序的方式写入BIOS中,写入MBR中一般有办法去除的,大不了读出MBR分析就行了。
注: 软件不断更新中,有什么意见大家多多提,偶看可以的就采纳.....gh0st的成长,离不开大家的帮助. 2008/1/27 11:16 : 优化了屏幕传输算法,CPU利用率更低 2008/1/27 16:06 : 驱动以资源方式入安装文件跟DLL文件中,优化屏幕传输 2008/1/27 17:26 : 修正驱动安装时的一个Bug 2008/1/28 05:28 : 服务端安装强化,加入服务检测,守护线程强化,加入禁用监视,顺便做了下免杀 2008/1/29 12:47 : 改变服务端安装启动方式,隐藏服务,去掉驱动程序和守护线程,感谢Lzx无私的帮助... 2008/1/29 16:12 : 修正键盘记录重复问题,优化服务端上线方式 2008/1/30 04:11 : 修正服务端网络内核的一个导致异常的Bug,优化服务端大小到100K 2008/1/31 01:28 : 重服务端网络内核,加入数据包验证,及重发功能,更加稳定 2008/1/31 11:36 : 修正服务端网络内核一个导致数据包混乱的问题,加入帧速限制,传输不稳定的情况从此消失... 2008/2/01 10:54 : 主动防御功能加强,过卡巴全监控,瑞星,Kis6,Kis7,Norton,ZoneAlarm,江民2008等杀毒软件.下个版本准备过所有杀软的主动...期待吧. 2008/2/01 14:18 : 加入服务端异常处理,更新稳定,请各位帮助测试.. 2008/2/01 15:39 : 修正服务端删除后不能安装的致命错误 2008/2/01 23:35 : 改了下服务端一些函数,增加稳定性,春季过后重服务端吧,简洁下程序. 2008/2/02 19:51 : 修正服务端视频监控功能的一些BUG 2008/2/03 00:40 : 屏幕监控加入显示远程鼠标功能 2008/2/05 16:46 : 重屏幕传输算法,屏幕传输更快,控制更稳定.. 2008/2/05 23:45 : 还是网络内核跟屏幕传输方面,只求更快,不求最快,前版本屏幕传输有问题,旧版本不能上线,请用最新版本... 2008/2/06 17:32 : 服务端做了些优化,加入跟踪远程光标的功能,旧版本不能上线,请用最新版本 2008/2/07 00:57 : 改了些服务端,没事优化优化,准备过完年,大整一下,新年快乐... 2008/2/07 16:02 : 没事加了个托盘功能,做了些代码优化,一个人过年,有点郁闷... 2008/2/07 20:42 : 修正服务端一个句柄泄漏的问题.. 2008/2/08 22:08 : 全面优化了下服务端,新加了备注功能. 2008/2/09 22:58 : 修正一些大家提到的问题,Gh0st RAT Beta 2.1 发布 2008/2/11 00:18 : 修正服务端安装的一个BUG,静心研究ACE中,暂停更新................... 2008/2/17 16:14 : 保存配置文件,服务端支持socks5代理上线,加入下载更新功能,屏幕控制加入,黑屏,定等功能 2008/2/20 10:49 : 应大家要求,看了看江民2008的垃圾主动,连注册表都没,随便改了下服务端,过江民2008主动.其它有啥主动过不了的,抓图,我抽空解决 Gh0st问答: 2008/2/20 09:26 : 改了下服务端一些网络方面的东西,看对2003掉线情况是否有效,望大家测试,多谢了. 2008/2/21 15:43 : 服务端掉线问题,重启后不上线问题,测试版本,请大家测试 2008/2/22 19:47 : 解决重启后服务端不上线问题,加强对抗主动防御的功能 2008/2/23 17:11 : 全面优化了下服务端,加强稳定性,请大家测试 2008/2/23 19:03 : 修正视频监视的一个小BUG 2008/2/24 01:55 : 文件管理中加入本地和远程运行功能,优他了部分代码,旧版本不会上线,请用新版本 2008/2/24 12:56 : 修正文件管理中一个低级错误,下载更新的一个错误 2008/2/26 00:00 : 完美解决重复安装,重复上线问题,发布gh0st2.5,准备第二阶段的开发,重点在稳定,实用上.... 声明下软件的安装方式: 如果安装时发现有相同配置的服务端已经安装过,就不安装也不删除,跟鸽子一个原理,我是靠字串区别的 2008/3/2 06:35 : 本着我gh0st的初衷,一个共享,免费,的软件,到今天为止,算是对大家一个交代,新版本开发中,此版本开源..装上VC6,打造属于你们自己的gh0st吧.. 本人不保留版权,任何信息,自由修改,多谢一直以来大家的支持,我会继续努力的 在此声明:此软件无作者,无版权,由此软件造成的任何不良后果与红狼无关,多谢!!!! 1:为什么服务端下线后,控制端没反应 答:控制端检测心跳包间隔为1分钟,过一分钟后,自然就下线了 2:下线后多长时间才能再上线 答:服务端断线重连间隔为1分钟 3:怎么找不到在哪控制屏幕,跟键盘的离线记录 答:在标题栏点右键,也就是系统菜单,就能看到 4:为什么有时会出现重复上线的问题 答:服务端发生异常,就会重新连接创建第二个连接,但是第一个连接已经断开了,控制端在其心跳超时的情况下,会删除 心跳超时为1分钟,也就是说,重复上线情况会持续一分钟,自然就没有了 5:有些大家提到的有些功能,为什么没有加上去 答:gh0st作者有自己的法,自己的宗旨 6:提出建议或问题后多长时间能解决 答:偶以最快的速度,把gh0st做的专业,强大,稳定. 7: 如果做免杀??? 答:服务端用ResourceHacker或者别的资源提取工具打开,会看到两个资源,分别是DLL文件和恢复SSDT的驱动,开始动手吧.... 8:能不能加入系统服务管理的功能呢? 答:系统服务管理,注册表管理等这些,我感觉没必要加才不加的,服务管理sc就能搞定,注册表reg就搞定,服务端加这些函数,对免杀也有影响 9:希望能够加入服务端安装判断的功能,要不然连续运行两次,就上线两次。 答:现在服务端安装是共享模式,可以安装多个,上线多个,实际上不是重复上线,版本稳定后,服务端三种安装模式:独占模式,单一模式,共享模式,顾名思义的理解吧 10: ...虚位以待...
第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 求整数之积 004 比较实数大小 005 字符的输出 006 显示变量所占字节数 007 自增/自减运算 008 数列求和 009 乘法口诀表 010 猜数字游戏 011 模拟ATM(自动柜员机)界面 012 用一维数组统计学生成绩 013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符替换 028 从键盘读入实数 029 字符行排版 030 字符排列 031 判断字符串是否回文 032 通讯录的输入输出 033 扑克牌的结构表示 034 用“结构”统计学生成绩 035 报数游戏 036 模拟社会关系 037 统计文件的字符数 038 同时显示两个文件的内容 039 简单的文本编辑器 040 文件的字数统计程序 041 学生成绩管理程序 第二部分 数据结构篇 042 插入排序 043 希尔排序 044 冒泡排序 045 快速排序 046 选择排序 047 堆排序 048 归并排序 049 基数排序 050 二叉搜索树操作 051 二项式系数递归 052 背包问题 053 顺序表插入和删除 054 链表操作(1) 055 链表操作(2) 056 单链表就地逆置 057 运动会分数统计 058 双链表 059 约瑟夫环 060 记录个人资料 061 二叉树遍利 062 浮点数转换为字符串 063 汉诺塔问题 064 哈夫曼编码 065 图的深度优先遍利 066 图的广度优先遍利 067 求解最优交通路径 068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的尾数 077 打鱼还是晒网 078 怎样存钱以获取最大利息 079 阿姆斯特朗数 080 亲密数 081 自守数 082 具有abcd=(ab+cd)2性质的数 083 验证歌德巴赫猜 084 素数幻方 085 百钱百鸡问题 086 爱因斯坦的数学题 087 三色球问题 088 马克思手稿中的数学题 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松的分酒趣题 094 求π的近似值 095 奇数平方的有趣性质 096 角谷猜 097 四方定理 098 卡布列克常数 099 尼科彻斯定理 100 扑克牌自动发牌 101 常胜将军 102 搬山游戏 103 兔子产子(菲波那契数列) 104 数字移动 105 多项式乘法 106 产生随机数 107 堆栈四则运算 108 递归整数四则运算 109 复平面作图 110 绘制彩色抛物线 111 绘制正态分布曲线 112 求解非线性方程 113 实矩阵乘法运算 114 求解线性方程 115 n阶方阵求逆 116 复矩阵乘法 117 求定积分 118 求满足特异条件的数列 119 超长正整数的加法 第四部分 图形篇 120 绘制直线 121 绘制圆 122 绘制圆弧 123 绘制椭圆 124 设置背景色和前景色 125 设置线条类型 126 设置填充类型和填充颜色 127 图形文本的输出 128 金刚石图案 129 飘带图案 130 圆环图案 131 肾形图案 132 心脏形图案 133 渔网图案 134 沙丘图案 135 设置图形方式下的文本类型 136 绘制正多边形 137 正六边形螺旋图案 138 正方形螺旋拼块图案 139 图形法绘制圆 140 递归法绘制三角形图案 141 图形法绘制椭圆 142 抛物样条曲线 143 Mandelbrot分形图案 144 绘制布朗运动曲线 145 艺术清屏 146 矩形区域的颜色填充 147 VGA256色模式编程 148 绘制蓝天图案 149 屏幕检测程序 150 运动的小车动画 151 动态显示位图 152 利用图形页实现动画 153 图形时钟 154 音乐动画 第五部分 系统篇 155 读取DOS系统中的国家信息 156 修改环境变量 157 显示系统文件表 158 显示目录内容 159 读取磁盘文件 160 删除目录树 161 定义文本模式 162 设计立体窗口 163 彩色弹出菜单 164 读取CMOS信息 165 获取BIOS设备列表 166 硬盘 167 备份/恢复硬盘分区表 168 设计口令程序 169 程序自我保护 第六部分 常见试题解答篇 170 水果拼盘 171 小孩吃梨 172 删除字符串中的特定字符 173 求解符号方程 174 计算标准差 175 求取符合特定要求的素数 176 统计符合特定条件的数 177 字符串倒置 178 部分排序 179 产品销售记录处理 180 特定要求的字符编码 181 求解三角方程 182 新完全平方数 183 三重回文数 184 奇数方差 185 统计选票 186 同时整除 187 字符左右排序 188 符号算式求解 189 数字移位 190 统计最高成绩 191 比较字符串长度 192 合并整数 193 矩阵逆置 194 删除指定的字符 195 括号匹配 196 字符串逆置 197 SIX/NINE问题 198 单词个数统计 199 方差运算 200 级数运算 201 输出素数 202 素数题 203 序列排序 204 整数各位数字排序 205 字符串字母移位 206 Fibonacc数列 第七部分 游戏篇 207 商人过河游戏 208 吃数游戏 209 解救人质游戏 210 打字训练游戏 211 双人竞走游戏 212 迷宫探险游戏 213 迷你撞球游戏 214 模拟扫雷游戏 215 推箱子游戏 216 五子棋游戏 第八部分 综合实例篇 217 综合CAD系统 218 功能强大的文本编辑器 219 图书管理系统 220 进销存管理系统

21,496

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧