Geoff Chappell - Software Analyst
SKETCH OF HOW RESEARCH MIGHT CONTINUE AND RESULTS BE PRESENTED
The RTL_USER_PROCESS_INFORMATION structure (formally _RTL_USER_PROCESS_INFORMATION) is known only as output from the RtlCreateUserProcess function.
The RTL_USER_PROCESS_INFORMATION structure is not documented. Neither is a C-language definition known to have been published by Microsoft in any development kit for Windows programming. That said, Microsoft’s name for the structure and even the types and names of its members were disclosed by Microsoft as long ago as the mid-1990s as type information that somehow survived in import libraries for GDISRVL.LIB and SHELL32.LIB which Microsoft included with the Device Driver Kit (DDK) for Windows NT 3.51 and 4.0, respectively. Offsets and names (but not types) are also known with very high confidence for Windows 2000 from the output of the !dso command of the USERKDX debugger extension for Windows 2000.
The RTL_USER_PROCESS_INFORMATION is 0x44 or 0x58 bytes in 32-bit and 64-bit Windows, respectively, in all known Windows versions.
Offset (x86) | Offset (x64) | Definition | Versions |
---|---|---|---|
0x00 | 0x00 |
ULONG Length; |
all |
0x04 | 0x08 |
HANDLE Process; |
all |
0x08 | 0x10 |
HANDLE Thread; |
all |
0x0C | 0x18 |
CLIENT_ID ClientId; |
all |
0x14 | 0x28 |
SECTION_IMAGE_INFORMATION ImageInformation; |
all |