首页
社区
课程
招聘
[原创]Microsoft make things complicated
发表于: 2012-10-14 21:20 3652

[原创]Microsoft make things complicated

2012-10-14 21:20
3652
转一篇自己写的文章刷一下存在感

最近研究写NTFS驱动下的读写压缩/稀疏文件功能的时候被微软雷到了。

真不愧“微软让事情变得复杂 (Microsoft make things complicated)”的传闻。

压缩/占位流描述组居然可以分别存放到两个属性中.......彻底囧掉了......为了省几个字节的空间,代码复杂度起码提高一个数量级,犯得上么.......

然后又发现一个更囧的情况:NTFS属性中的流可以被任意拆开描述,一个10个簇长的流可以被写成10个1个簇的流!

比如:

11 08 10

LCN 10,LENGTH 08

完成可以被改成:

11 01 10 11 01 01 11 01 01 11 01 01 11 01 01 11 01 01 11 01 01 11 01 01

-_-b

也就是说,16个簇的压缩单元可能被写成16个流的描述,而不受压缩单元尺寸限制的稀疏文件,则存在无限可能......

而且还都能通过CHKDSK的检查并能被WINDOWS正常访问。

更可悲的是:这些流可能被拆开存放于多个属性中......虽然WINDOWS自身并不会这样做,但只要这是合法的,那别的程序就只能无条件的支持......

综上。非常简单的压缩/稀疏文件操作逻辑,理论上有演变成无聊,复杂,效率低下的多属性下流描述的修改操作的可能,而且事实上,程序必须处理此种状况。代码复杂度因为这个小小的设计巨增。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
嗯,本来挺简单的一件事情,干嘛搞那么复杂啊?

BTW:不要被表象所迷惑哦~~~
2012-10-15 15:36
0
游客
登录 | 注册 方可回帖
返回
//