首页
社区
课程
招聘
[讨论]说说ntfs 磁盘解析/删除/创建
发表于: 2009-3-17 21:14 18851

[讨论]说说ntfs 磁盘解析/删除/创建

2009-3-17 21:14
18851
人家07年就把 NTFS解析/ 删除/ 增加/ 恢复 这些搞过了. 我现在才学习,吐血了. 菜就是菜,也只能跟在大牛们的后面学人家早就fuck过的东西了...

最近一直瞎忙,随便做做. 能解析/ 破坏/ 删除 NTFS下的文件. 不过文件创建/重命名这块儿还有些BUG,创建出来的文件(夹)是坏的. Ak922.sys 在DISK级做了过滤,那就发scsi passthrough吧. 哈哈,弄弄还是能发现它的.

文件解析 ---- 是最简单的了. 挂接相应的分区,校验NTFS的合法性,解析MBR & BPB ,校验$MFT的完整性, 分析系统的那几个元数据($Bitmap $UpCase $Volume $VOLUME_INFORMATION $AttrDef ),保存一些信息. 这些初始化工作完成后,就可以解析指定目录的文件了. 比如在此目录对应的MFT中90H属性(索引根), A0H属性. 分别出 流文件(80H属性中的name等) 和普通文件. 分析INDEX_BLOCK下的所有Index_entry, 而每个Index_entry对应一个文件/文件夹. 所以根据其MFT号. 得到对应的MFT,再跟进去,读其90H属性,判别偏移10H的地方是否为30(即判断是否为文件夹). 最后即可正确显示出当前目录的所有文件信息了... [可以做个递归遍历]

文件删除 ---- 和金山的文件粉碎机差不多. 清掉MFT本身的30H属性, 设置偏移16H的地方为0, 将$MFT:$bitmap中这个文件的MFT的标记为0, 然后有运行数据的话,得到其LCN,在$bitmap中找到对应的位置,清0. 最后在给80H属性或者AOH指向的run data进行覆盖式的填充垃圾数据. 但是金山粉碎机是删除后马上能在explorer中看到效果. 我做的必须重启后才会看到效果. 因为直接操作的是磁盘, 没有刷新cache, 逆了一下金山粉碎机, 看不出来它调用的哪个API来刷新系统缓存的. 有知道的还请指点一番~~

文件增加 ---- 是比较麻烦的一项工程,大体步骤是:(1) 在$MFT:$bitmap中找到一个空闲位.设置为1.并在这个所指向的空闲区域分配一个新的MFT; (2) 创建 & 写入标准属性(10H) / 文件名属性(30H) / 安全描述符属性(50H)/ . ( 若是创建文件,加入80H属性 若是创建文件夹,需要新增 INDEX_ROOT(90H)属性 ). 再将 FILE_NAME 属性加入其根目录的Index中. (3) 填充这个新MFT的2个必要的值: 硬连接数 && 目录标志(0x3). (4) 写$logfile (5) 其他....

文件恢复 要简单可以很简单,要做好也不容易,我是菜鸟就不多提了,可以参考codeproject上的源码,还有这个连接:【献丑】本人突破性进展,NTFS分区数据静态恢复

差不多就这些啦. fat格式太简单就不提及了. ntfs的组织结构还是很复杂的,可以结合nt4src + windbg进行学习. MJ, AZY, gz1x, 狙剑作者等诸位大牛N年前就搞过了, 想起来就汗颜, 所以虽是老技术但是不可不学,各位还没搞过的同学可以考虑空闲时间学习一下,相信会有所获.

附上一个检测ak922.sys的动画, 和其他大牛N年前就已经检测出来的连接:

ShitSword vs AK922 beta2
ShitSword VS unreal rootkit
AK922 VS系统安全软件


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (22)
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
2
难道有SF支持的机会》?
2009-3-17 21:18
0
雪    币: 615
活跃值: (1132)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
迎风而来..
2009-3-17 21:26
0
雪    币: 236
活跃值: (33)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
4
占个板凳吧,有时间再看~
2009-3-17 23:15
0
雪    币: 7115
活跃值: (639)
能力值: (RANK:1290 )
在线值:
发帖
回帖
粉丝
5
收藏。。。 学习。
2009-3-17 23:32
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
NTFS复杂
2009-3-17 23:33
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
7
FSD解析...老黄历了吧~
下发SCSI读取数据...更老了~
不过还是支持sudami同学多发点图,最好发发bin~~

NTFS删除文件,金山操作的好复杂啊,其实没有那么复杂啦,只要根据文件名,找到文件index,然后处理+deviceIocontrol下发个命令就好了(真的是这样,你可以看看SPTI的东西)

重命名...这个比较猛,不知道你是改长度命名,还是不改长度...

新建这个需要操作$logfile...
2009-3-18 05:22
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
8
删除文件全部自己解析,直接操作,发啥IOCTL. 不发....

重命名其实是删除旧文件,再创建新文件,比较复杂, 和 创建新文件一样,重新命名后, 那个文件是坏的... 主要是写$logfile没弄好...

不是FSD解析,是磁盘解析撒....
2009-3-18 07:57
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
9
金山的复杂是为了保证不出问题,不蓝屏。

按BUG扣钱的

尤其是公司之间的合作,最近才理解为什么某人说网上的代码都是不能用的。

面对着每个BUG赔多少多少万的合同,即使是经过N个版本的开源项目也得复审过代码才能用
2009-3-18 11:51
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
10
你解析不是FS么~~为啥说是磁盘解析呢?

磁盘解析——这名词太可怕了,磁道深度探测...刻痕恢复...刻痕消除...
2009-3-18 17:06
0
雪    币: 354
活跃值: (10)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
11
文件解析 ---- 是最简单的了. 挂接相应的分区,校验NTFS的合法性,解析MBR & BPB


挂接相应的分区解析MBR?
MBR怎么跑到分区上去了?

楼主真以为自己在解析磁盘啊
2009-3-19 00:57
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
12
我拿 主分区 说事...
2009-3-19 07:44
0
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
13
其实说磁盘解析哪里有问题....特定文件系统,比如NTFS, FAT32的结构都存储在磁盘上..我们列举文件不通过FSD//...而是直接读磁盘获取相关信息,,再根据一定的格式弄成文件列表..这个过程涉及到读MBR,分析MBR也是可能的,毕竟要找出系统分区拉..当然也可以用API实现....所以说"磁盘解析"个人感觉没错...就是分析磁盘上的FS结构...
2009-3-19 07:56
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
14
to 10# & 11# :

人云亦云.
我就认为是磁盘解析,怎么啦? 管TMD是磁盘解析,还是解析FS? 看重点撒...
2009-3-19 08:54
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
,好恐怖啊
2009-3-19 13:29
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
看看``再说
2009-3-19 14:06
0
雪    币: 357
活跃值: (3133)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
17
NTFS解析比较贴切,磁盘存储的数据格式是很多种的
2009-3-19 14:07
0
雪    币: 359
活跃值: (430)
能力值: ( LV9,RANK:150 )
在线值:
发帖
回帖
粉丝
18
此帖必火啊,先顶上留名一个,
2009-3-19 14:09
0
雪    币: 225
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
19
记得在哪看过类似的代码
2009-3-19 14:28
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
20
准备做个讲解,说说磁道深度探测...刻痕恢复...刻痕消除...
2009-3-19 14:36
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
21
讲吧, 书上的东西,讲吧. 洗耳恭听
2009-3-19 15:55
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
22
我在解析超级大目录,比如windows \ system32 时是这样做的:

"当前目录的MFT的B0H属性,它指定了在$Bitmap中的位置,然后到这个位置处查看指定的长度, 对于每一个byte位,若为1,表明是In use,得到其地址, 就是这一块的index block, 遍历之.就这样对于大目录, 一般会遍历好多块 index block. 而每一个index block里面又有N多index_entry, 每个 Index_entry其实就是一个文件/文件夹 了"

但是速度不是很快. 不知有没有更快的方法,知道的回复哦~~:smile:
2009-3-27 08:55
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
希望能像programboy一样,附上源码,期待  创建,删除,重命名...源码
2009-8-24 17:42
0
游客
登录 | 注册 方可回帖
返回
//