@@ -38,7 +38,7 @@ def get_requirements(cls) -> List[interfaces.configuration.RequirementInterface]
3838 name = "ssdt" , plugin = ssdt .SSDT , version = (2 , 0 , 0 )
3939 ),
4040 requirements .PluginRequirement (
41- name = "kpcrs" , plugin = kpcrs .KPCRs , version = (1 , 0 , 0 )
41+ name = "kpcrs" , plugin = kpcrs .KPCRs , version = (2 , 0 , 0 )
4242 ),
4343 ]
4444
@@ -47,54 +47,52 @@ def list_timers(
4747 cls ,
4848 context : interfaces .context .ContextInterface ,
4949 kernel_module_name : str ,
50- layer_name : str ,
51- symbol_table : str ,
5250 ) -> Iterable [extensions .KTIMER ]:
5351 """Lists all kernel timers.
5452
5553 Args:
5654 context: The context to retrieve required elements (layers, symbol tables) from
5755 kernel_module_name: The name of the kernel module on which to operate
58- layer_name: The name of the layer on which to operate
59- symbol_table: The name of the table containing the kernel symbols
6056
6157 Yields:
6258 A _KTIMER entry
6359 """
6460
6561 kernel = context .modules [kernel_module_name ]
6662 if versions .is_windows_7 (
67- context = context , symbol_table = symbol_table
68- ) or versions .is_windows_8_or_later (context = context , symbol_table = symbol_table ):
63+ context = context , symbol_table = kernel .symbol_table_name
64+ ) or versions .is_windows_8_or_later (
65+ context = context , symbol_table = kernel .symbol_table_name
66+ ):
6967 # Starting with Windows 7, there is no more KiTimerTableListHead. The list is
7068 # at _KPCR.PrcbData.TimerTable.TimerEntries
7169 # See http://pastebin.com/FiRsGW3f
72- for kpcr in kpcrs .KPCRs .list_kpcrs (
73- context , kernel_module_name , layer_name , symbol_table
74- ):
70+ for kpcr , _ in kpcrs .KPCRs .list_kpcrs (context , kernel_module_name ):
7571 if hasattr (kpcr .Prcb .TimerTable , "TableState" ):
7672 for timer_entries in kpcr .Prcb .TimerTable .TimerEntries :
7773 for timer_entry in timer_entries :
7874 for timer in timer_entry .Entry .to_list (
79- symbol_table + constants .BANG + "_KTIMER" ,
75+ kernel . symbol_table_name + constants .BANG + "_KTIMER" ,
8076 "TimerListEntry" ,
8177 ):
8278 yield timer
8379
8480 else :
8581 for timer_entries in kpcr .Prcb .TimerTable .TimerEntries :
8682 for timer in timer_entries .Entry .to_list (
87- symbol_table + constants .BANG + "_KTIMER" ,
83+ kernel . symbol_table_name + constants .BANG + "_KTIMER" ,
8884 "TimerListEntry" ,
8985 ):
9086 yield timer
9187
9288 elif versions .is_xp_or_2003 (
93- context = context , symbol_table = symbol_table
94- ) or versions .is_vista_or_later (context = context , symbol_table = symbol_table ):
95- is_64bit = symbols .symbol_table_is_64bit (context , symbol_table )
89+ context = context , symbol_table = kernel .symbol_table_name
90+ ) or versions .is_vista_or_later (
91+ context = context , symbol_table = kernel .symbol_table_name
92+ ):
93+ is_64bit = symbols .symbol_table_is_64bit (context , kernel .symbol_table_name )
9694 if is_64bit or versions .is_vista_or_later (
97- context = context , symbol_table = symbol_table
95+ context = context , symbol_table = kernel . symbol_table_name
9896 ):
9997 # On XP x64, Windows 2003 SP1-SP2, and Vista SP0-SP2, KiTimerTableListHead
10098 # is an array of 512 _KTIMER_TABLE_ENTRY structs.
@@ -112,7 +110,7 @@ def list_timers(
112110 )
113111 for table in timer_table_list_head :
114112 for timer in table .to_list (
115- symbol_table + constants .BANG + "_KTIMER" ,
113+ kernel . symbol_table_name + constants .BANG + "_KTIMER" ,
116114 "TimerListEntry" ,
117115 ):
118116 yield timer
@@ -121,8 +119,6 @@ def list_timers(
121119 raise NotImplementedError ("This version of Windows is not supported!" )
122120
123121 def _generator (self ) -> Iterator [Tuple ]:
124- kernel = self .context .modules [self .config ["kernel" ]]
125-
126122 collection = ssdt .SSDT .build_module_collection (
127123 context = self .context ,
128124 kernel_module_name = self .config ["kernel" ],
@@ -132,8 +128,6 @@ def _generator(self) -> Iterator[Tuple]:
132128 for timer in self .list_timers (
133129 self .context ,
134130 self .config ["kernel" ],
135- kernel .layer_name ,
136- kernel .symbol_table_name ,
137131 ):
138132 if not timer .valid_type ():
139133 continue
0 commit comments