获得进程映像文件(上)

2019-07-14 12:52发布

获得进程映像文件

kd> dt _EPROCESS 0x8204c9c0
   +0x000 Pcb              : _KPROCESS
   +0x078 ProcessLock      : _EX_PUSH_LOCK
   +0x080 CreateTime       : _LARGE_INTEGER 0x1c83cc8`95c2bd34
   +0x088 ExitTime         : _LARGE_INTEGER 0x0
   +0x090 RundownProtect   : _EX_RUNDOWN_REF
   +0x094 UniqueProcessId  : 0x00000720
   +0x098 ActiveProcessLinks : _LIST_ENTRY [ 0x8245f708 - 0x824059d0 ]
   +0x0a0 QuotaUsage       : [3] 0x8c0
   +0x0ac QuotaPeak        : [3] 0xa70
   +0x0b8 CommitCharge     : 0x150
   +0x0bc PeakVirtualSize  : 0x1f3e000
   +0x0c0 VirtualSize      : 0x1b95000
   +0x0c4 SessionProcessLinks : _LIST_ENTRY [ 0x8245f734 - 0x824059fc ]
   +0x0cc DebugPort        : (null)
   +0x0d0 ExceptionPort    : 0xe1263508
   +0x0d4 ObjectTable      : 0xe19c1330 _HANDLE_TABLE
   +0x0d8 Token            : _EX_FAST_REF
   +0x0dc WorkingSetPage   : 0x17b1f
   +0x0e0 AddressCreationLock : _KGUARDED_MUTEX
   +0x100 HyperSpaceLock   : 0
   +0x104 ForkInProgress   : (null)
   +0x108 HardwareTrigger  : 0
   +0x10c PhysicalVadRoot  : (null)
   +0x110 CloneRoot        : (null)
   +0x114 NumberOfPrivatePages : 0xb0
   +0x118 NumberOfLockedPages : 0
   +0x11c Win32Process     : 0xe1853c40
   +0x120 Job              : (null)
   +0x124 SectionObject    : 0xe176d618
   +0x128 SectionBaseAddress : 0x01000000
   +0x12c QuotaBlock       : 0x82433da8 _EPROCESS_QUOTA_BLOCK
   +0x130 WorkingSetWatch  : (null)
   +0x134 Win32WindowStation : 0x00000038
   +0x138 InheritedFromUniqueProcessId : 0x00000718
   +0x13c LdtInformation   : (null)
   +0x140 VadFreeHint      : (null)
   +0x144 VdmObjects       : (null)
   +0x148 DeviceMap        : 0xe1426fa8
   +0x14c Spare0           : [3] (null)
   +0x158 PageDirectoryPte : _HARDWARE_PTE
   +0x158 Filler           : 0
   +0x160 Session          : 0xf798d000
   +0x164 ImageFileName    : [16]  "notepad.exe"
   +0x174 JobLinks         : _LIST_ENTRY [ 0x0 - 0x0 ]
   +0x17c LockedPagesList  : (null)
   +0x180 ThreadListHead   : _LIST_ENTRY [ 0x82419c34 - 0x82419c34 ]
   +0x188 SecurityPort     : (null)
   +0x18c PaeTop           : 0xf7ab62c0
   +0x190 ActiveThreads    : 1
   +0x194 GrantedAccess    : 0x1f0fff
   +0x198 DefaultHardErrorProcessing : 1
   +0x19c LastThreadExitStatus : 0
   +0x1a0 Peb              : 0x7ffdd000 _PEB
   +0x1a4 PrefetchTrace    : _EX_FAST_REF
   +0x1a8 ReadOperationCount : _LARGE_INTEGER 0xb
   +0x1b0 WriteOperationCount : _LARGE_INTEGER 0xb
   +0x1b8 OtherOperationCount : _LARGE_INTEGER 0xeb
   +0x1c0 ReadTransferCount : _LARGE_INTEGER 0x3f4
   +0x1c8 WriteTransferCount : _LARGE_INTEGER 0x4fc
   +0x1d0 OtherTransferCount : _LARGE_INTEGER 0x128c
   +0x1d8 CommitChargeLimit : 0
   +0x1dc CommitChargePeak : 0x150
   +0x1e0 AweInfo          : (null)
   +0x1e4 SeAuditProcessCreationInfo : _SE_AUDIT_PROCESS_CREATION_INFO
   +0x1e8 Vm               : _MMSUPPORT
   +0x230 MmProcessLinks   : _LIST_ENTRY [ 0x8245f8a0 - 0x82405b68 ]
   +0x238 ModifiedPageCount : 0xa9
   +0x23c JobStatus        : 0
   +0x240 Flags            : 0x450801
   +0x240 CreateReported   : 0y1
   +0x240 NoDebugInherit   : 0y0
   +0x240 ProcessExiting   : 0y0
   +0x240 ProcessDelete    : 0y0
   +0x240 Wow64SplitPages  : 0y0
   +0x240 VmDeleted        : 0y0
   +0x240 OutswapEnabled   : 0y0
   +0x240 Outswapped       : 0y0
   +0x240 ForkFailed       : 0y0
   +0x240 Wow64VaSpace4Gb  : 0y0
   +0x240 AddressSpaceInitialized : 0y10
   +0x240 SetTimerResolution : 0y0
   +0x240 BreakOnTermination : 0y0
   +0x240 SessionCreationUnderway : 0y0
   +0x240 WriteWatch       : 0y0
   +0x240 ProcessInSession : 0y1
   +0x240 OverrideAddressSpace : 0y0
   +0x240 HasAddressSpace  : 0y1
   +0x240 LaunchPrefetched : 0y0
   +0x240 InjectInpageErrors : 0y0
   +0x240 VmTopDown        : 0y0
   +0x240 ImageNotifyDone  : 0y1
   +0x240 PdeUpdateNeeded  : 0y0
   +0x240 VdmAllowed       : 0y0
   +0x240 SmapAllowed      : 0y0
   +0x240 CreateFailed     : 0y0
   +0x240 DefaultIoPriority : 0y000
   +0x240 Spare1           : 0y0
   +0x240 Spare2           : 0y0
   +0x244 ExitStatus       : 259
   +0x248 NextPageColor    : 0xe449
   +0x24a SubSystemMinorVersion : 0 ''
   +0x24b SubSystemMajorVersion : 0x4 ''
   +0x24a SubSystemVersion : 0x400
   +0x24c PriorityClass    : 0x2 ''
   +0x250 VadRoot          : _MM_AVL_TABLE
   +0x270 Cookie           : 0x941060a3
kd> dt _SE_AUDIT_PROCESS_CREATION_INFO 0x8204c9c0+0x1e4
   +0x000 ImageFileName    : 0x8204b1f8 _OBJECT_NAME_INFORMATION
kd> dt _OBJECT_NAME_INFORMATION 0x8204b1f8
   +0x000 Name             : _UNICODE_STRING "/Device/HarddiskVolume1/WINDOWS/system32/notepad.exe"

注意:2k上不能用,vista上不知道     这个结构在没有调用过ZwQueryInformationProcess(ProcessImageFileInformation)前, 是空的
只有调用过一次该函数,系统才会获得镜象文件并放到这个成员中

以后再调用该函数就从该成员里取得

实现该功能的是内部函数SeLocateProcessImageName
过程是先从Process的SectionObject中取到 FileObjectPointer。