首页
论坛
专栏
课程

[原创][11月26日更新]我写的磁盘坏道标记工具 MarkBadClusTool (有源)

2013-2-12 20:00 42890

[原创][11月26日更新]我写的磁盘坏道标记工具 MarkBadClusTool (有源)

2013-2-12 20:00
42890
我写的磁盘坏道标记工具 MarkBadClusTool

    半年前,我的硬盘惹上了坏道的麻烦。机器经常假死或者蓝屏,而且由于坏道导致的文件系统的损坏,使得不少数据丢失,让我心疼不已。苦于没钱更换新的硬盘,只有寻找死马当活马医的方法了。找了各种关于修复/屏蔽硬盘坏道的工具,它们的工作原理大致如下:1、通过低格的方式重新检测坏的扇区,并将这些扇区放入P表,类似硬盘刚出厂时检测缺陷时的处理方式。2、硬盘正常使用过程中检测出坏扇区并将其加入G表。MHDD一类的软件修复坏扇区就是这样的原理。3、通过多次读写坏扇区使其磁性恢复正常。这种方式很不稳定,过段时间多半仍然是坏扇区,无法真正修复。4、通过分区的方式隔离硬盘上不能正常使用的区域。这种方式对于坏道集中,有规律的情况下是有效的。对于范围大、分散不规律的情况下则力不从心。而且这种方式会牺牲硬盘的“大容量”以及用户体验。5、用文件系统本身的坏块机制屏蔽坏扇区。这是本文的重点,下边会着重讨论。还有一种修复方法就是用专业工具PC3000修复硬盘。这种方式很理想,然而对于我等农民而言是渴望而不可求的事情,只能作罢。

    上个暑假,天易奶牛针对NTFS文件系统的大放奶,掀起了一股NTFS热。再结合其它前辈的研究成果,使我受到了启发。过程中发现,一般的文件系统均有屏蔽坏扇区的机制。然而在系统正常工作的过程中对该机制的使用是很低效的。通常情况下,文件系统在执行完全的高级格式化或者系统在运行过程中遇到坏扇区时才会将坏扇区添加到文件系统的坏块机制中,而在磁盘有大量坏道的情况下,高级格式化往往由于检测扇区缓慢或者磁盘IO问题无法顺利完成,文件系统工作过程中遇到坏扇区再标记又不全面。而且,上边这两种方法都有一个共性,即对坏扇区的识别太精确,由于坏扇区有向周围蔓延的特点,所以这两种方法无法有效降低文件系统下次访问坏扇区的概率。因此,系统假死或者蓝屏,无故丢失数据的现象依旧会频繁出现。基于上边的分析,很自然的想到,如果能将大量的坏扇区信息一次性加入文件系统的坏块机制中,甚至将真正坏扇区周围的“正常”扇区也视为坏扇区一并加入,则可以很好的应对“坏道蔓延”,大范围不规律分布的情况。

    一边学习,一边敲代码调试,大约用了将近一个学期的零碎时间写成了这个小工具。如何使用请参看Readme以及演示视频。由于时间精力所限,目前仅实现了NTFS文件系统的处理,其它文件系统还没实现。

    本来想写点高质量的代码的,然而由于功力实在太差,没能达到预期的高质量。大家就将就着看吧:-) 这个代码对文件系统的操作几乎是最底层的了,算法都是自己写的,效率不高的情况在所难免。帖子最后提供了模块架构图,为要阅读代码的朋友提供导航支持。但愿这些代码对大家关于NTFS的学习有所帮助。如果对这个有兴趣,可以在论坛里联系我,大家一起学习进步。

    最后,我要特别感谢论坛里的朋友 天易奶牛、 雪yaojun、 邓韬、仙果,以及家人对我的支持。再加上以前那句话:好好学习,天天向上!




软件下载地址:http://pan.baidu.com/share/link?shareid=291307&uk=34547064

[推荐]看雪企服平台,提供安全分析、定制项目开发、APP等级保护、渗透测试等安全服务!

上传的附件:
上一主题 下一主题
最新回复 (69)
LiXMX 2013-2-12 20:12
2
0
感谢楼主无私放出代码。。。下载学习
xouou 2013-2-12 20:19
3
0
潜力贴留名.Opera插图补丁.颜色补丁.字数补丁..
邓韬 9 2013-2-12 20:25
4
0
居然榜上有名,我是来下载源代码学习的,辛苦了,谢谢。
邓韬 9 2013-2-12 20:26
5
0
手机党路过。
雪yaojun 2013-2-12 20:33
6
0
感谢楼主奉献。。。
邋遢鬼 2013-2-12 21:46
7
0
潜力贴留名。
过个年楼主居然也这么辛苦。
yijun8354 12 2013-2-12 22:45
8
0
呵呵,好东西,收下了!
tedrick 2013-2-12 22:46
9
0
感谢楼主无私分享。
neineit 10 2013-2-12 23:06
10
0
好强大,支持哦。
qqlinhai 2013-2-12 23:07
11
0
射前一顶,蛇年幸福。
<<Lanneret 1 2013-2-13 00:25
12
0
感谢楼主无私分享.............
cvcvxk 10 2013-2-13 08:28
13
0
此物生猛海鲜啊~~
xiejienet 2013-2-13 11:43
14
0
强帖留名
KeyKernel 1 2013-2-13 17:31
15
0
强帖。感谢楼主技术分享。
Winker 8 2013-2-13 18:42
16
0
此物生猛海鲜啊~~
wodexinren 2013-2-13 21:29
17
0
强帖留名
darkplayer 2013-2-14 10:15
18
0
mark!!!
asdll 2013-2-14 16:52
19
0
谢谢楼主分享!
jajerry 2013-2-14 18:01
20
0
谢谢,学习一下
gyfhgyfh 2013-2-14 22:00
21
0
很好的思路,

[已解决] XPsp3出错求解决



上传的附件:
asrn 1 2013-2-14 22:27
22
0
谢谢LZ的无私分享精神。
safeboy 2013-2-14 22:46
23
0
牛人,学习一下
linhanshi 2013-2-14 22:51
24
0
Thanks for share.
hackerlzc 10 2013-2-15 00:15
25
0
[QUOTE=gyfhgyfh;1142892]很好的思路,XPsp3出错求解决



[/QUOTE]

你电脑上可能缺少必要的C库文件,现在不在家,一两天回去后修复。谢谢支持。
zzage 1 2013-2-15 01:06
26
0
这个不错....收藏。
wjuid 2013-2-15 09:53
27
0
感谢楼主分享,下来研读
hackerlzc 10 2013-2-15 15:57
28
0
才发现竟然置顶了:-)

编译那个转换工具的时候不小心用了msvcrt90d.dll共享库.现在已经用静态链接重新编译了,见附件。
gyfhgyfh 2013-2-15 17:52
29
0
XP sp3 测试运行正常。

搭配victoria4.46b满好用的。只是日志转换比较费功夫。

格式如下:
......
17:48:19 : 块起始于 152854272 = 78 ms
17:48:19 : 块起始于 152857344 = 94 ms
17:48:20 : 警告! 块起始与 152858880 = 750 ms
17:48:21 : 警告! 块起始与 152860928 = 735 ms
17:48:21 : 警告! 块起始与 152865024 = 390 ms
17:48:22 : 警告! 块起始与 152865280 = 235 ms
17:48:22 : 块起始于 152867328 = 62 ms
17:48:22 : 警告! 块起始与 152871936 = 281 ms
17:48:22 : 块起始于 152875264 = 93 ms
17:48:22 : 块起始于 152878336 = 63 ms
......

[已解决] 另测试中发现MarkBadClusTool.exe用十几二十行的日志几秒就处理完毕,

而用几十KB的大日志就卡住,CPU一直占用25%左右(I3,16G内存)。求解

NTFS格式下的坏扇区还可以用系统自带的CHKDSK X: /F /R 进行修复,修复不了会标记坏扇区。
hackerlzc 10 2013-2-15 19:23
30
0
对于“NTFS格式下的坏扇区还可以用系统自带的CHKDSK X: /F /R 进行修复,修复不了会标记坏扇区。 ”,我介绍里已经说过,它不能很好处理“坏道蔓延”的问题,即——不能把好扇区标记为坏道。

日志长就卡死的情况:可能有BUG,请把软件生成的MakeBadClusTool.log 和你用的日志文件E-mail给我,我检查一下原因。

最后,谢谢LS帮忙。
Crakme 2013-2-15 19:40
31
0
源码值得学习,谢谢了
gyfhgyfh 2013-2-15 20:27
32
0
[已解决]NEW error :


出错日志>> MarkBadClusTool.log.txt

MarkBadClusTool.log2.txt

测试用的扫描日志>> badlist.txt

NEW error>> errors.rar

PS:之前导致卡死的原因经过反复检查后已找到,是转换后的日志存在一个错误,去掉后可以正常运行了。
上传的附件:
wdx 2013-2-15 22:19
33
0
强啊,谢谢楼主的分享
softpo 2013-2-16 11:07
34
0
感谢发布源码,学习了!~
ppanger 4 2013-2-16 11:41
35
0
很好很强大 支持! ^_^
天易love 18 2013-2-16 12:29
36
0
需要有人给论坛做点贡献,推动论坛发展。
zhingma 2013-2-16 13:56
37
0
加入g表更稳定,加入p表完完。
hackerlzc 10 2013-2-16 20:24
38
0
32 楼的 new error 正在解决ing..........
by木瓜 2013-2-16 21:46
39
0
不错,学习了  谢谢楼主分享
viphack 4 2013-2-16 23:04
40
0
颜色补丁.字数补丁..
hackerlzc 10 2013-2-17 14:07
41
0
主程序更新了下(见附件),解决了一些BUG。欢迎大家继续帮忙测试。
gyfhgyfh 2013-2-17 17:01
42
0
pass-test!  Congratulations!!!   



CHKDSK /f  之后 OK


[已解决] 多分区时卡住,无错误日志生成>> 发现两个问题.rar


分区表>>
上传的附件:
萝卜 1 2013-2-17 17:03
43
0
强大,学不过来咯
yangxingyu 2013-2-18 22:21
44
0
感谢楼主技术分享
hackerlzc 10 2013-2-19 23:12
45
0
[QUOTE=gyfhgyfh;1143620]pass-test!  Congratulations!!!   

76618

CHKDSK /f  之后 OK
76619

[已解决] 多分区时卡住,无错误日志生成>>76629
76620

分区表>>76637...[/QUOTE]

多些帮忙测试。
李华彬 2013-2-21 12:25
46
0
感谢无私奉献,
minidxer 2013-2-21 17:11
47
0
Thanks a lot for the share.

另外请教一个问题:

MHDD 貌似不支持AHCI模式  我在台式兼容机上可以正常使用MHDD,在笔记本上就不行,检测不到硬盘,笔记本是AHCI模式的 ,像一般的惠普之类的品牌机不支持在BIOS里更改硬盘的接口模式。 如何让MHDD支持AHCI模式呢?
或者有没有什么工具能与MHDD媲美并支持AHCI模式。
hackerlzc 10 2013-2-22 10:02
48
0
可以用win7 的PE 启动系统(用来识别AHCI模式的硬盘,XP的PE系统不好使),然后用Windows环境下的坏道检测工具,比如 victoria,DiskGenius,HDTune等。这些工具生成的日志转换工作需要你自己想办法了,用一些文体编辑工具可以完成转换的工作。

当然,在Windows环境下检测可能出现一些不稳定情况,比如硬盘掉线,软件无响应的问题。在DOS下处理个人感觉还是比较稳定的。但目前没发现比MHDD还强的(PC-3000例外)。

我也遇到过你这情况,我是把硬盘拆下来安装到别的机器上处理的。
面包RS 2013-2-25 01:04
49
0
先下载,后学习,谢谢!贡献!!!
面包RS 2013-2-25 01:04
50
0
先下载,后学习,谢谢!贡献!!!
游客
登录 | 注册 方可回帖
返回