
    XfN                         d dl Z d dlmZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZ  e j"                  e      Z G d
 de
j(                        Zy)    N)List)
exceptions
interfaces)	renderers)requirements)plugins)format_hints)mac)lsmodc                   d    e Zd ZdZdZedeej                  j                     fd       Z
d Zd Zy)Check_trap_tablez Check mach trap table for hooks.   r   r   returnc                     t        j                  ddddg      t        j                  dt        j                  d      t        j
                  d	t        j                  d
      gS )NkernelzKernel module for the OSIntel32Intel64)namedescriptionarchitecturesr   r   )r   pluginversionmacutils)   r   r   )r   	componentr   )r   ModuleRequirementPluginRequirementr   LsmodVersionRequirementr
   MacUtilities)clss    d/home/panchajanya/Development/work/volatility3/volatility3/framework/plugins/mac/check_trap_table.pyget_requirementsz!Check_trap_table.get_requirements   sb     **6()4
 **U[[) ++3+;+;Y
 	
    c              #      K   | j                   j                  | j                  d      }t        j                  j                  | j                   | j                  d         }t        j                  j                  | j                   |j                  ||      }|j                  d      }t        |      D ]  \  }}	 |j                  j                         j                  j                  }|r|dk(  r=t        j                  j%                  | j                   ||| j                  d         \  }}	dt'        j(                  |j                  j                        d|t'        j(                  |      ||	ff  y # t         j"                  $ r Y w xY ww)Nr   mach_trap_table)symbol_namer   	TrapTable)contextmodulesconfigr   r   list_modulesr
   r!   generate_kernel_handler_info
layer_nameobject_from_symbol	enumeratemach_trap_functiondereferencevoloffsetr   InvalidAddressExceptionlookup_module_addressr	   Hex)
selfr   modshandlerstableient	call_addrmodule_namer(   s
             r#   
_generatorzCheck_trap_table._generator(   s`    %%dkk(&;<{{''dkk(6KL##@@LL&++VT
 ))6G)H& 	FAs22>>@DDKK	 	Q'*'7'7'M'Mh	4;;x3H($K
  $$UYY%5%56 $$Y/
 
	 55 s+   B7F:.E5(BF5FF
FFc           	          t        j                  dt        j                  fdt        fdt
        fdt        j                  fdt        fdt        fg| j                               S )NzTable Addressz
Table NameIndexzHandler AddresszHandler ModulezHandler Symbol)r   TreeGridr	   r8   strintrA   )r9   s    r#   runzCheck_trap_table.runL   sa    !! ,"2"23s##"L$4$45!3'!3' OO

 
	
r%   N)__name__
__module____qualname____doc___required_framework_versionclassmethodr   r   configurationRequirementInterfacer$   rA   rG    r%   r#   r   r      s@    *"+
j&>&>&S&S!T 
 
"H
r%   r   )loggingtypingr   volatility3.frameworkr   r   r   #volatility3.framework.configurationr    volatility3.framework.interfacesr   volatility3.framework.renderersr	   volatility3.framework.symbolsr
   volatility3.plugins.macr   	getLoggerrH   vollogPluginInterfacer   rP   r%   r#   <module>r\      sH   
   8 + < 4 8 - )			8	$D
w.. D
r%   