@@ -12,11 +12,25 @@ def assert_struct_offset(struct, field, offset):
1212if windows .current_process .bitness == 32 :
1313 PEB32 = windows .generated_def .PEB
1414 PEB64 = rctypes .transform_type_to_remote64bits (windows .generated_def .PEB )
15+
16+ TEB32 = windows .generated_def .TEB
17+ TEB64 = rctypes .transform_type_to_remote64bits (windows .generated_def .TEB )
18+
19+ NT_TIB32 = windows .generated_def .NT_TIB
20+ NT_TIB64 = rctypes .transform_type_to_remote64bits (windows .generated_def .NT_TIB )
21+
1522 SYSTEM_PROCESS_INFORMATION32 = windows .generated_def .SYSTEM_PROCESS_INFORMATION
1623 SYSTEM_PROCESS_INFORMATION64 = rctypes .transform_type_to_remote64bits (windows .generated_def .SYSTEM_PROCESS_INFORMATION )
1724else :
1825 PEB32 = rctypes .transform_type_to_remote32bits (windows .generated_def .PEB )
1926 PEB64 = windows .generated_def .PEB
27+
28+ TEB32 = rctypes .transform_type_to_remote32bits (windows .generated_def .TEB )
29+ TEB64 = windows .generated_def .TEB
30+
31+ NT_TIB32 = rctypes .transform_type_to_remote32bits (windows .generated_def .NT_TIB )
32+ NT_TIB64 = windows .generated_def .NT_TIB
33+
2034 SYSTEM_PROCESS_INFORMATION32 = rctypes .transform_type_to_remote32bits (windows .generated_def .SYSTEM_PROCESS_INFORMATION )
2135 SYSTEM_PROCESS_INFORMATION64 = windows .generated_def .SYSTEM_PROCESS_INFORMATION
2236
@@ -53,6 +67,29 @@ def test_peb64_fields():
5367 assert_peb_offset ("CSDVersion" , 0x02E8 )
5468 assert_peb_offset ("MinimumStackCommit" , 0x0318 )
5569
70+ # Important to the the current TEB via Self
71+ def test_nt_tib32_fields ():
72+ assert_nt_tib_offset = lambda field , offset : assert_struct_offset (NT_TIB32 , field , offset )
73+ assert_nt_tib_offset ("ExceptionList" , 0 )
74+ assert_nt_tib_offset ("StackBase" , 4 )
75+ assert_nt_tib_offset ("StackLimit" , 8 )
76+ assert_nt_tib_offset ("SubSystemTib" , 0xc )
77+ assert_nt_tib_offset ("FiberData" , 0x10 )
78+ # assert_nt_tib_offset("Version", 0x14)
79+ assert_nt_tib_offset ("ArbitraryUserPointer" , 0x14 )
80+ assert_nt_tib_offset ("Self" , 0x18 ) # Important !
81+
82+ def test_nt_tib64_fields ():
83+ assert_nt_tib_offset = lambda field , offset : assert_struct_offset (NT_TIB64 , field , offset )
84+ assert_nt_tib_offset ("ExceptionList" , 0 )
85+ assert_nt_tib_offset ("StackBase" , 8 )
86+ assert_nt_tib_offset ("StackLimit" , 0x10 )
87+ assert_nt_tib_offset ("SubSystemTib" , 0x18 )
88+ assert_nt_tib_offset ("FiberData" , 0x20 )
89+ # assert_nt_tib_offset("Version", 0x28)
90+ assert_nt_tib_offset ("ArbitraryUserPointer" , 0x28 )
91+ assert_nt_tib_offset ("Self" , 0x30 ) # Important !
92+
5693def test_system_process_information32_fields ():
5794 assert_spi_offset = lambda field , offset : assert_struct_offset (SYSTEM_PROCESS_INFORMATION32 , field , offset )
5895 # Mainly based on https://www.geoffchappell.com/studies/windows/km/ntoskrnl/api/ex/sysinfo/process.htm
0 commit comments