几个重要的数据结构

来源:互联网 发布:机顶盒视频软件 编辑:程序博客网 时间:2024/05/01 19:44

用windbg看比较直观

0:000> dd fs:[0]
003b:00000000  0012fd0c 00130000 0012e000 00000000
003b:00000010  00001e00 00000000 7ffdf000 00000000
003b:00000020  00000240 00000524 00000000 00000000
003b:00000030  7ffd8000 00000000 00000000 00000000
003b:00000040  00000000 00000000 00000000 00000000
003b:00000050  00000000 00000000 00000000 00000000
003b:00000060  00000000 00000000 00000000 00000000
003b:00000070  00000000 00000000 00000000 00000000

TEB结构

 0:000> dt _TEB 0x7ffdf000
ntdll!_TEB
   +0x000 NtTib            : _NT_TIB
   +0x01c EnvironmentPointer : (null)
   +0x020 ClientId         : _CLIENT_ID
   +0x028 ActiveRpcHandle  : (null)
   +0x02c ThreadLocalStoragePointer : (null)
   +0x030 ProcessEnvironmentBlock : 0x7ffd8000 _PEB
   +0x034 LastErrorValue   : 0
   +0x038 CountOfOwnedCriticalSections : 0
   +0x03c CsrClientThread  : (null)
   +0x040 Win32ThreadInfo  : (null)
   +0x044 User32Reserved   : [26] 0
   +0x0ac UserReserved     : [5] 0
   +0x0c0 WOW32Reserved    : (null)
   +0x0c4 CurrentLocale    : 0x804
   +0x0c8 FpSoftwareStatusRegister : 0
   +0x0cc SystemReserved1  : [54] (null)
   +0x1a4 ExceptionCode    : 0
   +0x1a8 ActivationContextStack : _ACTIVATION_CONTEXT_STACK
   +0x1bc SpareBytes1      : [24]  ""
   +0x1d4 GdiTebBatch      : _GDI_TEB_BATCH
   +0x6b4 RealClientId     : _CLIENT_ID
   +0x6bc GdiCachedProcessHandle : (null)
   +0x6c0 GdiClientPID     : 0
   +0x6c4 GdiClientTID     : 0
   +0x6c8 GdiThreadLocalInfo : (null)
   +0x6cc Win32ClientInfo  : [62] 0
   +0x7c4 glDispatchTable  : [233] (null)
   +0xb68 glReserved1      : [29] 0
   +0xbdc glReserved2      : (null)
   +0xbe0 glSectionInfo    : (null)
   +0xbe4 glSection        : (null)
   +0xbe8 glTable          : (null)
   +0xbec glCurrentRC      : (null)
   +0xbf0 glContext        : (null)
   +0xbf4 LastStatusValue  : 0
   +0xbf8 StaticUnicodeString : _UNICODE_STRING "ole32.dll"
   +0xc00 StaticUnicodeBuffer : [261] 0x6f
   +0xe0c DeallocationStack : 0x00030000
   +0xe10 TlsSlots         : [64] (null)
   +0xf10 TlsLinks         : _LIST_ENTRY [ 0x0 - 0x0 ]
   +0xf18 Vdm              : (null)
   +0xf1c ReservedForNtRpc : (null)
   +0xf20 DbgSsReserved    : [2] (null)
   +0xf28 HardErrorsAreDisabled : 0
   +0xf2c Instrumentation  : [16] (null)
   +0xf6c WinSockData      : (null)
   +0xf70 GdiBatchCount    : 0
   +0xf74 InDbgPrint       : 0 ''
   +0xf75 FreeStackOnTermination : 0 ''
   +0xf76 HasFiberData     : 0 ''
   +0xf77 IdealProcessor   : 0 ''
   +0xf78 Spare3           : 0
   +0xf7c ReservedForPerf  : (null)
   +0xf80 ReservedForOle   : (null)
   +0xf84 WaitingOnLoaderLock : 0
   +0xf88 Wx86Thread       : _Wx86ThreadState
   +0xf94 TlsExpansionSlots : (null)
   +0xf98 ImpersonationLocale : 0
   +0xf9c IsImpersonating  : 0
   +0xfa0 NlsCache         : (null)
   +0xfa4 pShimData        : (null)
   +0xfa8 HeapVirtualAffinity : 0
   +0xfac CurrentTransactionHandle : (null)
   +0xfb0 ActiveFrame      : (null)
   +0xfb4 SafeThunkCall    : 0 ''
   +0xfb5 BooleanSpare     : [3]  ""

PEB结构

0:000> dt _PEB 0x7ffd8000
ntdll!_PEB
   +0x000 InheritedAddressSpace : 0 ''
   +0x001 ReadImageFileExecOptions : 0 ''
   +0x002 BeingDebugged    : 0x1 ''
   +0x003 SpareBool        : 0 ''
   +0x004 Mutant           : 0xffffffff
   +0x008 ImageBaseAddress : 0x00400000
   +0x00c Ldr              : 0x00241ea0 _PEB_LDR_DATA
   +0x010 ProcessParameters : 0x00020000 _RTL_USER_PROCESS_PARAMETERS
   +0x014 SubSystemData    : (null)
   +0x018 ProcessHeap      : 0x00140000
   +0x01c FastPebLock      : 0x7c99e4c0 _RTL_CRITICAL_SECTION
   +0x020 FastPebLockRoutine : 0x7c921005
   +0x024 FastPebUnlockRoutine : 0x7c9210ed
   +0x028 EnvironmentUpdateCount : 1
   +0x02c KernelCallbackTable : (null)
   +0x030 SystemReserved   : [1] 0
   +0x034 AtlThunkSListPtr32 : 0
   +0x038 FreeList         : (null)
   +0x03c TlsExpansionCounter : 0
   +0x040 TlsBitmap        : 0x7c99e480
   +0x044 TlsBitmapBits    : [2] 1
   +0x04c ReadOnlySharedMemoryBase : 0x7f6f0000
   +0x050 ReadOnlySharedMemoryHeap : 0x7f6f0000
   +0x054 ReadOnlyStaticServerData : 0x7f6f0688  -> (null)
   +0x058 AnsiCodePageData : 0x7ffa0000
   +0x05c OemCodePageData  : 0x7ffa0000
   +0x060 UnicodeCaseTableData : 0x7ffd1000
   +0x064 NumberOfProcessors : 2
   +0x068 NtGlobalFlag     : 0x70
   +0x070 CriticalSectionTimeout : _LARGE_INTEGER 0xffffe86d`079b8000
   +0x078 HeapSegmentReserve : 0x100000
   +0x07c HeapSegmentCommit : 0x2000
   +0x080 HeapDeCommitTotalFreeThreshold : 0x10000
   +0x084 HeapDeCommitFreeBlockThreshold : 0x1000
   +0x088 NumberOfHeaps    : 3
   +0x08c MaximumNumberOfHeaps : 0x10
   +0x090 ProcessHeaps     : 0x7c99de80  -> 0x00140000
   +0x094 GdiSharedHandleTable : (null)
   +0x098 ProcessStarterHelper : (null)
   +0x09c GdiDCAttributeList : 0
   +0x0a0 LoaderLock       : 0x7c99c0d8
   +0x0a4 OSMajorVersion   : 5
   +0x0a8 OSMinorVersion   : 1
   +0x0ac OSBuildNumber    : 0xa28
   +0x0ae OSCSDVersion     : 0x200
   +0x0b0 OSPlatformId     : 2
   +0x0b4 ImageSubsystem   : 2
   +0x0b8 ImageSubsystemMajorVersion : 4
   +0x0bc ImageSubsystemMinorVersion : 0
   +0x0c0 ImageProcessAffinityMask : 0
   +0x0c4 GdiHandleBuffer  : [34] 0
   +0x14c PostProcessInitRoutine : (null)
   +0x150 TlsExpansionBitmap : 0x7c99e478
   +0x154 TlsExpansionBitmapBits : [32] 0
   +0x1d4 SessionId        : 0
   +0x1d8 AppCompatFlags   : _ULARGE_INTEGER 0x0
   +0x1e0 AppCompatFlagsUser : _ULARGE_INTEGER 0x0
   +0x1e8 pShimData        : (null)
   +0x1ec AppCompatInfo    : (null)
   +0x1f0 CSDVersion       : _UNICODE_STRING "Service Pack 2"
   +0x1f8 ActivationContextData : (null)
   +0x1fc ProcessAssemblyStorageMap : (null)
   +0x200 SystemDefaultActivationContextData : 0x00130000
   +0x204 SystemAssemblyStorageMap : (null)
   +0x208 MinimumStackCommit : 0

PEB_LDR_DATA结构
0:000> dt _PEB_LDR_DATA 0x241ea0
ntdll!_PEB_LDR_DATA
   +0x000 Length           : 0x28
   +0x004 Initialized      : 0x1 ''
   +0x008 SsHandle         : (null)
   +0x00c InLoadOrderModuleList : _LIST_ENTRY [ 0x241ee0 - 0x242b78 ]
   +0x014 InMemoryOrderModuleList : _LIST_ENTRY [ 0x241ee8 - 0x242b80 ]
   +0x01c InInitializationOrderModuleList : _LIST_ENTRY [ 0x241f58 - 0x242b88 ]
   +0x024 EntryInProgress  : (null)

0:000> dt _LIST_ENTRY 0X241Ea0+0xc
ntdll!_LIST_ENTRY
 [ 0x241ee0 - 0x242b78 ]
   +0x000 Flink            : 0x00241ee0 _LIST_ENTRY [ 0x241f48 - 0x241eac ]
   +0x004 Blink            : 0x00242b78 _LIST_ENTRY [ 0x241eac - 0x242ab0 ]

0:000> dd 0X241Ea0+0xc
00241eac  00241ee0 00242b78 00241ee8 00242b80
00241ebc  00241f58 00242b88 00000000 abababab
00241ecc  abababab 00000000 00000000 0008000d
00241edc  0018074d 00241f48 00241eac 00241f50
00241eec  00241eb4 00000000 00000000 00400000
00241efc  00448e6d 000a1e00 009c009a 00020724
00241f0c  002a0028 00020796 00005000 0000ffff
00241f1c  0024229c 7c99c1d0 4f925804 00000000

struct _LDR_MODULE结构
-typedef struct _LDR_MODULE
-{
-     LIST_ENTRY           InLoadOrderModuleList;    +0x00
- LIST_ENTRY InMemoryOrderModuleList; +0x08
-     LIST_ENTRY           InInitializationOrderModuleList; +0x10
-     void*                BaseAddress;   +0x18
-     void*                EntryPoint;    +0x1c
-     ULONG                SizeOfImage;
-     UNICODE_STRING       FullDllName;
-     UNICODE_STRING       BaseDllName;
-     ULONG                Flags;
-     SHORT                LoadCount;
-     SHORT                TlsIndex;
-     HANDLE               SectionHandle;
-     ULONG                CheckSum;
-     ULONG                TimeDateStamp;
-} LDR_MODULE, *PLDR_MODULE;

原创粉丝点击