现在的位置: 首页 > 综合 > 正文

关于文件的几个内核数据结构

2014年10月04日 ⁄ 综合 ⁄ 共 6459字 ⁄ 字号 评论关闭
文章目录

关于文件的几个内核数据结构

转自:http://dododododo.blog.sohu.com/

 

分类: Nt System 2006-06-22 16:51

1.

lkd> !process 0 0

显示

....

PROCESS 85e98020  SessionId: 0  Cid: 08c8    Peb: 7ffdf000  ParentCid: 01a4
    DirBase: 0a340500  ObjectTable: e3975318  HandleCount:  81.
    Image: editplus.exe

.....

2.

!handle 0 2 85e98020 // inclue information about object

显示

....

00d4: Object: e4199830  GrantedAccess: 00020019
Object: e4199830  Type: (85f9c870) Key
    ObjectHeader: e4199818

00d8: Object: 852827a8  GrantedAccess: 00120089
Object: 852827a8  Type: (85fd5040) File
    ObjectHeader: 85282790               //here

00dc: Object: 85982db8  GrantedAccess: 00100003
Object: 85982db8  Type: (85fa0980) Event
    ObjectHeader: 85982da0

.....

3.

dt nt!_file_object 852827a8
nt!_FILE_OBJECT
   +0x000 Type             : 5
   +0x002 Size             : 112
   +0x004 DeviceObject     : 0x85f6f5b8
   +0x008 Vpb              : 0x85f49b58
   +0x00c FsContext        : 0xe1320008
   +0x010 FsContext2       : 0xe2c3e1a8
   +0x014 SectionObjectPointer : 0x855c2a08
   +0x018 PrivateCacheMap  : 0x854960e0
   +0x01c FinalStatus      : 0
   +0x020 RelatedFileObject : (null)
   +0x024 LockOperation    : 0 ''
   +0x025 DeletePending    : 0 ''
   +0x026 ReadAccess       : 0x1 ''
   +0x027 WriteAccess      : 0 ''
   +0x028 DeleteAccess     : 0 ''
   +0x029 SharedRead       : 0x1 ''
   +0x02a SharedWrite      : 0 ''
   +0x02b SharedDelete     : 0x1 ''
   +0x02c Flags            : 0x1c0042
   +0x030 FileName         : _UNICODE_STRING "/my_project/symbols/ntkrnlpa.pdb/89C2A9EB56A74E2D8269AFD1D835BA331/ntkrnlpa.pdb"
   +0x038 CurrentByteOffset : _LARGE_INTEGER 0x185864

   +0x040 Waiters          : 0
   +0x044 Busy             : 0
   +0x048 LastLock         : (null)
   +0x04c Lock             : _KEVENT
   +0x05c Event            : _KEVENT
   +0x06c CompletionContext : (null)

lkd> dt nt!_section_object_pointers 855c2a08
nt!_SECTION_OBJECT_POINTERS
   +0x000 DataSectionObject : 0x8566fda8
   +0x004 SharedCacheMap   : 0x85496008
   +0x008 ImageSectionObject : (null)

lkd> dt nt!_control_area 8566fda8
nt!_CONTROL_AREA
   +0x000 Segment          : 0xe218c1a0
   +0x004 DereferenceList  : _LIST_ENTRY [ 0x0 - 0x0 ]
   +0x00c NumberOfSectionReferences : 2
   +0x010 NumberOfPfnReferences : 0x123
   +0x014 NumberOfMappedViews : 6
   +0x018 NumberOfSubsections : 2
   +0x01a FlushInProgressCount : 0
   +0x01c NumberOfUserReferences : 1
   +0x020 u                : __unnamed
   +0x024 FilePointer      : 0x8574d880
   +0x028 WaitingForDeletion : (null)
   +0x02c ModifiedWriteCount : 0
   +0x02e NumberOfSystemCacheViews : 6

lkd> dt nt!_file_object 8574d880
nt!_FILE_OBJECT
   +0x000 Type             : 5
   +0x002 Size             : 112
   +0x004 DeviceObject     : 0x85f6f5b8
   +0x008 Vpb              : 0x85f49b58
   +0x00c FsContext        : 0xe1320008
   +0x010 FsContext2       : 0xe14a5b38
   +0x014 SectionObjectPointer : 0x855c2a08
   +0x018 PrivateCacheMap  : (null)
   +0x01c FinalStatus      : 0
   +0x020 RelatedFileObject : (null)
   +0x024 LockOperation    : 0 ''
   +0x025 DeletePending    : 0 ''
   +0x026 ReadAccess       : 0x1 ''
   +0x027 WriteAccess      : 0 ''
   +0x028 DeleteAccess     : 0 ''
   +0x029 SharedRead       : 0x1 ''
   +0x02a SharedWrite      : 0x1 ''
   +0x02b SharedDelete     : 0x1 ''
   +0x02c Flags            : 0x44040
   +0x030 FileName         : _UNICODE_STRING "/MY_PROJECT/SYMBOLS/NTKRNLPA.PDB/89C2A9EB56A74E2D8269AFD1D835BA331/NTKRNLPA.PDB"
   +0x038 CurrentByteOffset : _LARGE_INTEGER 0x0
   +0x040 Waiters          : 0
   +0x044 Busy             : 0
   +0x048 LastLock         : (null)
   +0x04c Lock             : _KEVENT
   +0x05c Event            : _KEVENT
   +0x06c CompletionContext : (null)

两个fileobject指向同一个SectionObjectPointers(他们有相同的filename),这个SectionObjectPointers.ControlArea.FileObjce指向其中一个fileObject.

看看SectionObjectPointers的结构:

nt!_SECTION_OBJECT_POINTERS
   +0x000 DataSectionObject ;_control_area结构
   +0x004 SharedCacheMap    :_shared_cache_map结构,
means whether this file instance has been set up for caching
   +0x008 ImageSectionObject   ;means whether it is a executable image

4.来看看SharedCacheMap

lkd> dt nt!_shared_cache_map 85496008
nt!_SHARED_CACHE_MAP
   +0x000 NodeTypeCode     : 767
   +0x002 NodeByteSize     : 304
   +0x004 OpenCount        : 1
   +0x008 FileSize         : _LARGE_INTEGER 0x1a0c00
   +0x010 BcbList          : _LIST_ENTRY [ 0x85496018 - 0x85496018 ]
   +0x018 SectionSize      : _LARGE_INTEGER 0x1c0000
   +0x020 ValidDataLength  : _LARGE_INTEGER 0x1a0c00
   +0x028 ValidDataGoal    : _LARGE_INTEGER 0x1a0c00
   +0x030 InitialVacbs     : [4] (null)
   +0x040 Vacbs            : 0x856aaad8  -> 0x85f96e40
   +0x044 FileObject       : 0x852827a8
   +0x048 ActiveVacb       : 0x85f943b0    //here
   +0x04c NeedToZero       : (null)
   +0x050 ActivePage       : 0x180
   +0x054 NeedToZeroPage   : 0
   +0x058 ActiveVacbSpinLock : 0
   +0x05c VacbActiveCount  : 1
   +0x060 DirtyPages       : 0
   +0x064 SharedCacheMapLinks : _LIST_ENTRY [ 0x85a96674 - 0x85a1f06c ]
   +0x06c Flags            : 0x1000
   +0x070 Status           : 0
   +0x074 Mbcb             : (null)
   +0x078 Section          : 0xe3969b68
   +0x07c CreateEvent      : (null)
   +0x080 WaitOnActiveCount : (null)
   +0x084 PagesToWrite     : 0
   +0x088 BeyondLastFlush  : 0
   +0x090 Callbacks        : 0xf73f285c
   +0x094 LazyWriteContext : 0xe1320008
   +0x098 PrivateList      : _LIST_ENTRY [ 0x8549612c - 0x8549612c ]
   +0x0a0 LogHandle        : (null)
   +0x0a4 FlushToLsnRoutine : (null)
   +0x0a8 DirtyPageThreshold : 0
   +0x0ac LazyWritePassCount : 0
   +0x0b0 UninitializeEvent : (null)
   +0x0b4 NeedToZeroVacb   : (null)
   +0x0b8 BcbSpinLock      : 0
   +0x0bc Reserved         : (null)
   +0x0c0 Event            : _KEVENT
   +0x0d0 VacbPushLock     : _EX_PUSH_LOCK
   +0x0d8 PrivateCacheMap  : _PRIVATE_CACHE_MAP
 

lkd> dt nt!_vacb 85f943b0
nt!_VACB
   +0x000 BaseAddress      : 0xcd140000
   +0x004 SharedCacheMap   : 0x85496008
   +0x008 Overlay          : __unnamed
   +0x010 LruList          : _LIST_ENTRY [ 0x85f97378 - 0x85f966a0 ]

lkd> dd cd140000
cd140000  00000022 65520000 69736976 f1006e6f
cd140010  0003150d 00001375 6f500004 42726577
cd140020  6f747475 f1f2006e 0003150d 00001375
cd140030  6c530010 42706565 6f747475 f1f2006e
cd140040  0003150d 00001375 694c001c 6f6c4364
cd140050  f1006573 0003150d 00001226 694c0028
cd140060  65704f64 6b61576e f1f20065 0003150d
cd140070  00000022 6552002c 76726573 f1006465

......

最后的数据,和原文件的16进制数据是一样的:

00180000h: 22 00 00 00 00 00 52 65 76 69 73 69 6F 6E 00 F1 ; ".....Revision.?
00180010h: 0D 15 03 00 75 13 00 00 04 00 50 6F 77 65 72 42 ; ....u.....PowerB
00180020h: 75 74 74 6F 6E 00 F2 F1 0D 15 03 00 75 13 00 00 ; utton.蝰....u...
00180030h: 10 00 53 6C 65 65 70 42 75 74 74 6F 6E 00 F2 F1 ; ..SleepButton.蝰
00180040h: 0D 15 03 00 75 13 00 00 1C 00 4C 69 64 43 6C 6F ; ....u.....LidClo
00180050h: 73 65 00 F1 0D 15 03 00 26 12 00 00 28 00 4C 69 ; se.?...&...(.Li
00180060h: 64 4F 70 65 6E 57 61 6B 65 00 F2 F1 0D 15 03 00 ; dOpenWake.蝰....
00180070h: 22 00 00 00 2C 00 52 65 73 65 72 76 65 64 00 F1 ; "...,.Reserved.?
00180080h: 0D 15 03 00 75 13 00 00 30 00 49 64 6C 65 00 F1 ; ....u...0.Idle.?
00180090h: 0D 15 03 00 22 00 00 00 3C 00 49 64 6C 65 54 69 ; ...."...<.IdleTi
001800a0h: 6D 65 6F 75 74 00 F2 F1 0D 15 03 00 20 00 00 00 ; meout.蝰.... ...
001800b0h: 40 00 49 64 6C 65 53 65 6E 73 69 74 69 76 69 74 ; @.IdleSensitivit
001800c0h: 79 00 F2 F1 0D 15 03 00 20 00 00 00 41 00 44 79 ; y.蝰.... ...A.Dy

....................

抱歉!评论已关闭.