首页
社区
课程
招聘
[原创]简单分析R3磁盘格式化的函数
发表于: 2013-7-7 23:51 8242

[原创]简单分析R3磁盘格式化的函数

2013-7-7 23:51
8242

老鸟请飘过~

 初识文件系统相关驱动的时候,卷的概念比较模糊,有分区了,为啥还得有个卷……当初认为一个分区就是一个卷,后来发现,这是不准确的。

    卷:卷是扇区的逻辑集合,这些扇区可能位于一个磁盘上,也可能来自多个磁盘。一个物理磁盘上的扇区可以划分成多个分区(partition),每个分区包含一组连续的扇区;而卷负责管理一个或多个分区中的扇区。在windows中,卷有两种,简单卷和多分区卷。

    文件系统;是卷内部的一种逻辑结构,允许用户以文件(数据流)方式来访问和组织数据。

    卷与文件系统:给卷分配一个驱动器字母并不等于该卷就有了对应的文件系统;卷上的数据是以扇区来管理的,而文件系统则为扇区中的数据定义了结构信息。为了能以文件和目录的方式来方访问一个卷上的数据,该卷必须被关联上一个文件系统,此过程称为卷识别。
    
    文件系统驱动程序识别一个卷的依据是,检查该卷的引导扇区,看是否符合该文件系统所要求的必要条件,包括一些标识字符串和关键结构信息。识别通过后,文件系统驱动程序会创建这个卷的文件系统实例(即:一个文件系统设备对象)并设置好设备对象的相关属性。

    从上述信息,我们可以粗略的认为,在一个空白卷上构造一个文件系统,就是在该卷的引导扇区中写入文件系统关联的各种数据。

    写引导扇区,可以调用系统接口来完成,也可以自行填充相关的数据(符合格式规定就行,Ramdisk例子中有FAT的引导扇区格式)。以前弄的那个文件保险箱,格式化的时候,是调用系统的外壳(shell32.dll)的函数SHFormatDrive,弹出一个对话框,再进行格式化操作。真正执行格式化的并非是这个外壳函数,真正执行格式化的操作函数应该在这个对话框的窗口过程中。用OD跟进去瞧瞧。(PS:有啥不对或者,不足,欢迎拍砖

push    esi             ; dwInitParam
push    offset sub_7D668179 ; lpDialogFunc
push    [ebp+hWndParent] ; hWndParent
push    7000h           ; lpTemplateName
push    hInstance       ; hInstance
call    sub_7D6103B1
push    edi             ; lpThreadId
push    edi             ; dwCreationFlags
push    esi             ; lpParameter
push    offset sub_7D667FA1 ; lpStartAddress
push    edi             ; dwStackSize
push    edi             ; lpThreadAttributes
call    ds:CreateThread
loc_7D668029:           ; "FAT32"
mov     [ebp+var_4], offset aFat32
jmp     short loc_7D668042

mov     [ebp+var_4], offset aExfat ; "exFAT"
jmp     short loc_7D668042

loc_7D668032:           ; "NTFS"
mov     [ebp+var_4], offset aNtfs
jmp     short loc_7D668042

loc_7D66803B:           ; "FAT"
mov     [ebp+var_4], offset aFat
第一个:
push    dword ptr [esi+60h]
lea     eax, [esi+64h]
push    [ebp+var_C]
push    eax
push    [ebp+var_4]
push    [ebp+var_10]
push    ebx
call    dword ptr [esi+14h]

第二个:
loc_7D668110:
lea     eax, [esi+48h]
push    eax
push    dword ptr [esi+4]
push    dword ptr [esi+28h]
call    dword ptr [esi+2Ch]

[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 5
支持
分享
最新回复 (7)
雪    币: 113
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
下载学习...
2013-7-8 02:56
0
雪    币: 154
活跃值: (91)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
fmifs啊,看导出表貌似好东西啊
2013-7-8 03:08
0
雪    币: 8831
活跃值: (2434)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
4
主要是那个chkdskEx很好用,其他还有一些好用的功能~~
2013-7-8 08:41
0
雪    币: 328
活跃值: (154)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
5
大神飘过,膜拜一下~
2013-7-8 09:31
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢共享

谢谢
2013-7-8 11:41
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
小手一抖,积分拿走
2013-7-8 14:47
0
雪    币: 12589
活跃值: (19420)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
来了解一下卷和分区的详细区别啊,多谢楼主分享经验
2013-7-8 23:13
0
游客
登录 | 注册 方可回帖
返回