• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >汇编语言 > 汇编源代码之硬盘保护锁

汇编源代码之硬盘保护锁

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2017-06-28

匿名通过本文主要向大家介绍了效率源硬盘修复软件,效率源硬盘修复工具,桃花源网络硬盘,效率源大容量硬盘,效率源硬盘修复器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
</div>

我在前一段时间写了一个硬盘锁,拿出来和大家交流交流,同时有个问题,希望大家能帮我想想。

首先,大略介绍一下我的程序,我是用汇编写成,程序有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 ;是回车则跳至密码比较处

 2 3 4 5 6  下一页</div> </div> </div> </div> </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 汇编源代码之硬盘保护锁

相关文章

  • 2017-06-28汇编源码系列之clock
  • 2017-06-17条件汇编
  • 2017-06-28利用驱动程序读取硬盘序列号的汇编程序
  • 2017-06-28汇编教程之超类化
  • 2017-06-28用汇编编写屏幕保护程序
  • 2017-06-28汇编语言的艺术-准备工作(一)
  • 2017-06-28Windows下反汇编程序例子
  • 2017-06-28给程序加个图标
  • 2017-06-28汇编与C语言的配合使用
  • 2017-06-1780386/80286处理的数据类型

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 汇编语言学习指南(四)
    • 汇编教程:汇编语言编程实例
    • 无条件转移指令
    • 汇编教程:Win32调试API(3)
    • Game Faster V1.0
    • 如何在弹出菜单的同时再次弹出菜单
    • 事件对象在多线程编程中的应用
    • 汇编中使用打开对话框
    • 打印I/O
    • Windows下的控制台输出

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有