• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

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

发布: 2007-5-25 09:18 | 作者: guoyong_cy | 来源: programfan.com | 查看: 49次 | 进入软件测试论坛讨论

领测软件测试网 copy right guoyong_cy (2006)

精通API的朋友可能都知道CreateFile可以用来打开很多东西,比如说硬盘之类,而且在用它们的时候可能对一大堆函数和参数已经伤透了脑筋。猜想vb自带的语句"Open"也是由createfile编写的,但不知道有多少人想到用open 来打开硬盘?!(经过网上查找,没有一句类似的代码)
(以下代码在win2000、Fat16,32文件系统、VisualBasic6.0测试成功,window98肯定不行,其他系统没试过)
因为本人一直都用windows98,最近刚装了个2000,就测试用open来实现逻辑盘直读(光盘和其他东西也可以,不过有时要出问题)。注:其实这里并不是直接访问硬盘(win2000等是不允许应用程序这样做的),还是通过了文件系统,只不过文件和我们通常见到的不同而已。
其中一代码基本如下
dim MyN(511) as byte
Open "\\.\c:" for binary as #1
open "\\.\h:" for binary as #2
  do while not eof(1)'实际上这句在这里没什么用
    get #1,,MyN
    put #2,,MyN
  loop
close
请在以上适当位置加上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格式化盘)

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网