PEB及PEB_LDR_DATA结构

PEB结构如下:(比MSDN上详细多了http://msdn.microsoft.com/en-us/library/windows/desktop/aa813706(v=vs.85).aspx)

这个进程环境块就不罗嗦了,直接贴代码。

[cpp]  view plain  copy
  1. typedef struct _PEB { // Size: 0x1D8  
  2. /*000*/ UCHAR InheritedAddressSpace;  
  3. /*001*/ UCHAR ReadImageFileExecOptions;  
  4. /*002*/ UCHAR BeingDebugged;  
  5. /*003*/ UCHAR SpareBool; // Allocation size  
  6. /*004*/ HANDLE Mutant;  
  7. /*008*/ HINSTANCE ImageBaseAddress; // Instance  
  8. /*00C*/ VOID *DllList;  
  9. /*010*/ PPROCESS_PARAMETERS *ProcessParameters;  
  10. /*014*/ ULONG SubSystemData;  
  11. /*018*/ HANDLE DefaultHeap;  
  12. /*01C*/ KSPIN_LOCK FastPebLock;  
  13. /*020*/ ULONG FastPebLockRoutine;  
  14. /*024*/ ULONG FastPebUnlockRoutine;  
  15. /*028*/ ULONG EnvironmentUpdateCount;  
  16. /*02C*/ ULONG KernelCallbackTable;  
  17. /*030*/ LARGE_INTEGER SystemReserved;  
  18. /*038*/ ULONG FreeList;  
  19. /*03C*/ ULONG TlsExpansionCounter;  
  20. /*040*/ ULONG TlsBitmap;  
  21. /*044*/ LARGE_INTEGER TlsBitmapBits;  
  22. /*04C*/ ULONG ReadOnlySharedMemoryBase;  
  23. /*050*/ ULONG ReadOnlySharedMemoryHeap;  
  24. /*054*/ ULONG ReadOnlyStaticServerData;  
  25. /*058*/ ULONG AnsiCodePageData;  
  26. /*05C*/ ULONG OemCodePageData;  
  27. /*060*/ ULONG UnicodeCaseTableData;  
  28. /*064*/ ULONG NumberOfProcessors;  
  29. /*068*/ LARGE_INTEGER NtGlobalFlag; // Address of a local copy  
  30. /*070*/ LARGE_INTEGER CriticalSectionTimeout;  
  31. /*078*/ ULONG HeapSegmentReserve;  
  32. /*07C*/ ULONG HeapSegmentCommit;  
  33. /*080*/ ULONG HeapDeCommitTotalFreeThreshold;  
  34. /*084*/ ULONG HeapDeCommitFreeBlockThreshold;  
  35. /*088*/ ULONG NumberOfHeaps;  
  36. /*08C*/ ULONG MaximumNumberOfHeaps;  
  37. /*090*/ ULONG ProcessHeaps;  
  38. /*094*/ ULONG GdiSharedHandleTable;  
  39. /*098*/ ULONG ProcessStarterHelper;  
  40. /*09C*/ ULONG GdiDCAttributeList;  
  41. /*0A0*/ KSPIN_LOCK LoaderLock;  
  42. /*0A4*/ ULONG OSMajorVersion;  
  43. /*0A8*/ ULONG OSMinorVersion;  
  44. /*0AC*/ USHORT OSBuildNumber;  
  45. /*0AE*/ USHORT OSCSDVersion;  
  46. /*0B0*/ ULONG OSPlatformId;  
  47. /*0B4*/ ULONG ImageSubsystem;  
  48. /*0B8*/ ULONG ImageSubsystemMajorVersion;  
  49. /*0BC*/ ULONG ImageSubsystemMinorVersion;  
  50. /*0C0*/ ULONG ImageProcessAffinityMask;  
  51. /*0C4*/ ULONG GdiHandleBuffer[0x22];  
  52. /*14C*/ ULONG PostProcessInitRoutine;  
  53. /*150*/ ULONG TlsExpansionBitmap;  
  54. /*154*/ UCHAR TlsExpansionBitmapBits[0x80];  
  55. /*1D4*/ ULONG SessionId;  
  56. } PEB, *PPEB;  


PEB_LDR_DATA结构:(MSDN再次保留了,http://msdn.microsoft.com/en-us/library/windows/desktop/aa813708(v=vs.85).aspx)

这个结构记录着进程加载的模块的信息,MSDN上指出该结构在未来的Windows版本可能更改。

[cpp]  view plain  copy
  1. typedef struct _PEB_LDR_DATA  
  2. {  
  3.  ULONG Length; // +0x00  
  4.  BOOLEAN Initialized; // +0x04  
  5.  PVOID SsHandle; // +0x08  
  6.  LIST_ENTRY InLoadOrderModuleList; // +0x0c  
  7.  LIST_ENTRY InMemoryOrderModuleList; // +0x14  
  8.  LIST_ENTRY InInitializationOrderModuleList;// +0x1c  
  9. } PEB_LDR_DATA,*PPEB_LDR_DATA; // +0x24  

你可能感兴趣的:(rx)