有意破坏文件系统

8

我需要明确测试应用程序在尝试访问NTFS文件系统的某些已损坏部分时会发生什么情况。我找了一些类似的问题,但那些问题都是关于破坏特定文件(即破坏xml文件的语法等)。

我需要创建一个场景,chkdsk会在特定位置的文件系统中报告错误。

有人有任何想法如何引发这种情况来测试我的应用程序吗?

以防万一你担心:我不会在我的生产系统上这样做,我已经设置了一个VM来处理这些事情。


1
参见Server Fault上类似问题的此答案。该问答涉及Linux,但似乎Windows也应该有(或者应该有)一种类似的能力,通过一个覆盖物理磁盘驱动程序的设备驱动程序来实现。 - RBerteig
3个回答

2
由于这里没有更好的解决方案,我采取了困难的方式:使用Sysinternals NTFSInfo找到主文件表的位置,启动Linux Live CD并编辑主文件表(MFT)的两个位置。花费了一些时间才找到正确的位置,但是我现在可以制造一个损坏的文件系统来测试我的应用程序的错误例程。
感谢那些提供想法的人,但我将自己的回答作为获奖者。如果今后有人遇到同样的问题,请随时与我联系。

2
你的问题很好,但这个答案不够好。对于像我这样试图在MFT中人为损坏文件条目的人来说,这个答案缺乏足够的细节。你能否详细说明一些花了一些时间找到正确的位置之外的细节? - AlainD
@AlainD 抱歉,这都是7年前的事了。当时我尝试在不同的地方进行调整,并将一堆字节设置为零,直到 chkdsk 崩溃。 - klaustopher

2
如果担心应用程序遇到损坏的文件会发生什么,那为什么要破坏包含文件的文件系统呢?为什么不直接破坏文件本身呢?
操作系统会尽很大努力确保文件系统的稳健性,我不确定故意在文件系统上涂鸦垃圾会产生除了模糊测试文件系统实现之外的任何效果。

1
我的工具可以帮助将文件从一个操作系统迁移到另一个操作系统,但是绝对无法实现对每种文件类型完整性的检查。我相信我的I/O错误检查是正确的,并且程序会以特定的错误代码退出。但是需要明确测试这种情况。 - klaustopher

0

我会尝试在磁盘(或磁盘分区)的某些随机位置写入一些随机字节。


那会在某个地方破坏磁盘...我需要特别指定给定文件夹中的错误,如C:\MyApp\Data。 - klaustopher
1
也许您可以使用Linux NTFS驱动程序,将其打补丁以在访问特定的MyApp/Data时写入垃圾,并从Linux中使用它?(我同意这需要超过一天的工作时间) - Basile Starynkevitch
是的,那是我的第一個想法,但我希望有更簡單的方法。因為我認為摧毀整個系統並最終無法啟動的機會相當高...所以如果有更好的解決方案,我感激任何建議。 - klaustopher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接