鱼C论坛

 找回密码
 立即注册
查看: 11411|回复: 73

[技术交流] 一个完整的硬盘逻辑锁锁代码。

[复制链接]
最佳答案
2 
发表于 2014-2-23 15:12:55 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
经过上一次的改进,已经支持输入自定义密码了。
使用方法和原来一样
原帖:
硬盘逻辑锁 - 只有输入密码硬盘才会被解锁
http://bbs.fishc.com/thread-43343-1-1.html

自动加锁原理:http://bbs.pediy.com/showthread.php?p=1263142


org 0x7c00  ;原MBR内容位于 逻辑3扇区  密码4扇区
                        ;密码加密方式   所有字符ASCLL相加
start:
mov ax,cs
mov ds,ax
mov ss,ax
mov es,ax
mov sp,0x100
mov bx,0
main:
;读取原内容
mov ax,0x7e00
mov ds,ax
mov bx,0
mov dx,0x1f2
mov al,0x01
out dx,al
mov dx,0x1f3
mov al,0x3  ;3扇区
out dx,al
inc dx  ;8-15
mov al,0
out dx,al
inc dx ;16-23
out dx,al
inc dx ;24-27
mov al,0xe0
out dx,al
mov dx,0x1f7 ;读命令
mov al,0x20
out dx,al
mov dx,0x1f7
.waits:
        in al,dx
        and al,0x88
        cmp al,0x08
        jnz .waits
        mov cx,256
        mov dx,0x1f0
        .read:
        in ax,dx
        mov [bx],ax
        add bx,2
        loop .read       
        ;显示字符串
mov bp,msg1
mov cx,msg2-msg1
mov ax,0x1301
mov bx,0x0c
mov dl,0
int 0x10
;检测按键
GetKey:
mov bx,0
mov si,0
GetKey_:
mov ax,0xb800
mov ds,ax
mov ax,0
int 0x16
cmp al,0x1b ;Esc键
je Esc_
cmp al,0x8  ;退格键
je BackSpace
cmp al,0x0d ;回车键
jne GetKey_q
        next:
        ;判断密码
        mov cx,si
        mov bx,0
        mov dx,0
        mov si,0
        key_js:
        mov al,[ds:si]
        mov ah,0
        add dx,ax
        add si,2
        loop key_js
        mov ax,[cs:y_key]
        cmp ax,dx
        je Ks
        jne Esc_
       
        Esc_:
        mov ch,0
        mov  cl,0x4e
        mov  al,0x00
        mov ah,0x07
        mov bx,0
         _esc:
         mov [bx],ax
         add bx,2
        loop _esc
        mov bx,0
        mov si,0
        mov [bx],al
        mov [bx+1],ah
        jmp GetKey
       
;解除硬盘逻辑锁       
Ks:
mov ax,0x7e00
mov ds,ax
mov bx,0

mov dx,0x1f2
mov al,0x01
out dx,al

mov dx,0x1f3
mov al,0x0  ;0扇区
out dx,al

inc dx  ;8-15
mov al,0
out dx,al

inc dx ;16-23
out dx,al

inc dx ;24-27
mov al,0xe0
out dx,al

mov dx,0x1f7 ;写命令
mov al,0x30
out dx,al

mov dx,0x1f7
.waits_wr:
        in al,dx
        and al,0x88
        cmp al,0x08
        jnz .waits_wr
        mov cx,256
        mov dx,0x1f0
        .write:
        mov ax,[bx]
        out dx,ax
        add bx,2
        loop .write       
       
;重启计算机
.REST:
mov ax,0xb800
mov ds,ax
mov bx,0
mov byte [bx],'a'


mov ax,0xffff
push ax
mov ax,0
push ax
retf

GetKey_q:
mov byte [bx],al
add bx,2
inc si
jmp GetKey_
BackSpace:
mov byte [bx],0
sub si,1
sub bx,2
jmp GetKey_

msg1 db 'Please Input Password'
msg2 db '.'
msg3 db '*'
msg4 db 'KeyTag'
y_key dw 0x019E       ;密码的ASCLL和 需要替换。
times 510-($-$$)  db 0
dw 0xAA55
游客,如果您要查看本帖隐藏内容请回复



评分

参与人数 2荣誉 +6 鱼币 +6 贡献 +5 收起 理由
n0noper + 5 + 5 + 5 感谢楼主无私奉献!
zjk + 1 + 1 顶无名

查看全部评分

最佳答案
2 
 楼主| 发表于 2014-2-23 18:52:58 | 显示全部楼层
没人吗???:sad:sad:sad
最佳答案
0 
发表于 2016-2-26 10:43:21 | 显示全部楼层
好文章
最佳答案
1 
发表于 2016-2-26 18:34:13 | 显示全部楼层
无名人贴竟然没人顶?!顶下!!!
最佳答案
0 
发表于 2016-4-27 17:33:20 | 显示全部楼层
好厉害。·········倒是不会玩
最佳答案
0 
发表于 2016-5-1 10:29:06 | 显示全部楼层
好厉害啊
最佳答案
0 
发表于 2016-5-8 10:04:05 | 显示全部楼层
赞一个
最佳答案
0 
发表于 2016-5-8 23:50:17 | 显示全部楼层
汇编  表示要慢慢看
最佳答案
0 
发表于 2016-5-10 16:10:45 | 显示全部楼层
好厉害的高手
最佳答案
0 
发表于 2016-5-20 12:44:20 | 显示全部楼层
谢谢,支持一下
最佳答案
0 
发表于 2016-5-21 12:02:34 | 显示全部楼层
阿萨德撒打算
最佳答案
0 
发表于 2016-5-21 22:23:50 | 显示全部楼层
感谢分享
最佳答案
0 
发表于 2016-5-26 13:05:54 | 显示全部楼层
kankna
最佳答案
0 
发表于 2016-6-6 18:22:10 | 显示全部楼层
我就看看
最佳答案
0 
发表于 2016-6-6 21:59:55 | 显示全部楼层
看看学习
最佳答案
0 
发表于 2016-6-10 09:41:11 | 显示全部楼层
这个是源码还是模块
最佳答案
0 
发表于 2016-6-11 22:21:12 | 显示全部楼层
感谢,下载研究!
最佳答案
0 
发表于 2016-6-12 17:34:50 | 显示全部楼层
最佳答案
0 
发表于 2016-6-14 13:46:07 From FishC Mobile | 显示全部楼层
好棒
最佳答案
0 
发表于 2016-6-16 14:31:15 | 显示全部楼层
下载来研究一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2018-8-19 06:22

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表