发现之旅(1):VB最简单的磁盘直读的代码

[复制链接]
查看11 | 回复0 | 2021-1-29 05:14:32 | 显示全部楼层 |阅读模式
发现之旅(1):VB最简单的磁盘直读的代码(2008-10-131:08:00)【收藏】【评论】【打印】【关闭】
精通API的朋友可能都知道CreateFile可以用来打开很多东西,比如说硬盘之类,而且在用它们的时候可能对一大堆函数和参数已经伤透了脑筋。猜想vb自带的语句Open也是由createfile编写的,但不知道有多少人想到用open来打开硬盘?!(经过网上查找,没有一句类似的代码)(以下代码在win2000、Fat16,32文件系统、VisualBasic6.0测试成功,window98肯定不行,其他系统没试过)因为本人一直都用windows98,最近刚装了个2000,就测试用open来实现逻辑盘直读(光盘和其他东西也可以,不过有时要出问题)。注:其实这里并不是直接访问硬盘(win2000等是不允许应用程序这样做的),还是通过了文件系统,只不过文件和我们通常见到的不同而已。其中一代码基本如下dimMyN(511)asbyteOpen\\.\c:forbinaryas#1open\\.\h:forbinaryas#2dowhilenoteof(1)'实际上这句在这里没什么用get#1,,MyNput#2,,MyNloopclose请在以上适当位置加上doevents和控制退出的代码其中MyN的长度必须是512的倍数,读取起始位置必须是512倍数+1(C语言中就是512倍数)以上代码实现将c盘的东西直接读出并写到h盘(本代码将把h盘原来数据清空,请小心测试,责任自负)对于系统可读取的盘(已经格式化过了的),用open几乎可以做任何操作,甚至在win2000下把系统盘(c:)写掉(请不要用此来搞破坏活动哈)。如果写入的数据都是0,那么该盘将成为“没格式化的盘”,有点象低格,在这种情况下只要close掉文件,用open将不能再打开,而改用createfile仍然可以操作用本语句已经实现恢复格式化前盘上的数据、格式化盘(因为只用open没法读取扇区和磁道数,只有自己设定值,而且前提是盘上已经有了FAT)、恢复已删除的文件、删除正在运行的程序文件、光盘直读,相信还可以做其他事,当然做个病毒也可以,呵呵。有兴趣的朋友可以测试一下看能不能打开其他设备。本来想用Open做个在win2000下的类似ghost的东西,却发现支持文件长度只有Long,晕,暂时还没想到办法(不过还是用c语言做安全,用这个系统可能要报废)目前在这方面的处理上我倾向于用open,毕竟用createfile太繁了,还要配合一堆函数和参数,实在没办法再考虑它吧!
本主题取名为“发现之旅”,故希望大家把自己发现特别的代码发表出来,互相学习!另外这些文章开头都是VB,只是因为这里人最多,初学者也最多,为了提高大家对编程的兴趣,所以在这里发。用其他语言也很容易实现。(盘、最简单、直读、Open、\\.\、CreateFile、DeviceIoControl、VB格式化盘)
copyrightguoyong_cy(2006)
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行