[13912] 2019-03-26_Windows内核扩展机制研究

文档创建者:s7ckTeam
浏览次数:4
最后更新:2025-01-18
2019-03-26_Windows内核扩展机制研究 W i n d o w s A l p h a _ h 4 c k   F r e e B u f   2 0 1 9 - 0 3 - 2 6 B u g   D r i v e r E n t r y j 0 0 r u W i n d o w s W i n d o w s B a m . s y s B a c k g r o u n d   A c t i v i t y   M o d e r a t o r -   W i n d o w s   1 0   v 1 7 0 9 R S 3 D r i v e r E n t r y B a m . s y s / B a m . s y s n t ! P s S e t C r e a t e P r o c e s s N o t i f y R o u t i n e ( E x ) n t ! P s p C r e a t e P r o c e s s N o t i f y R o u t i n e / n t ! P s p C a l l P r o c e s s N o t i f y R o u t i n e s W i n D b g ! w d b g a r k . w a _ s y s t e m c b   / t y p e p r o c e s s B a m . s y s 使
B a m . s y s 使 n t ! P s p C a l l P r o c e s s N o t i f y R o u t i n e s n t ! P s p B a m E x t e n s i o n H o s t 使 b a m ! B a m p C r e a t e P r o c e s s C a l l b a c k I D A B a m . s y s b a m ! B a m p C r e a t e P r o c e s s C a l l b a c k x r e f s b a m ! B a m p R e g i s t e r K e r n e l E x t e n s i o n
怀 B a m ! B a m p C r e a t e P r o c e s s C a l l b a c k B a m ! B a m p K e r n e l C a l l o u t T a b l e n t ! E x R e g i s t e r E x t e n s i o n n t o s i f s . h n t ! E x R e g i s t e r E x t e n s i o n _ E X _ E X T E N S I O N _ R E G I S T R A T I O N _ 1 n t ! E x R e g i s t e r E x t e n s i o n _ E X _ E X T E N S I O N _ R E G I S T R A T I O N _ 1 n t ! E x R e g i s t e r E x t e n s i o n B n t ! E x R e g i s t e r E x t e n s i o n R e g i s t r a t i o n I n f o N T O S n t ! E x R e g i s t e r H o s t A B a m . s y s 使 N T K E R N E L A P I N T S T A T U S   E x R e g i s t e r E x t e n s i o n   (         _ O u t p t r _   P E X _ E X T E N S I O N   * E x t e n s i o n ,         _ I n _   U L O N G   R e g i s t r a t i o n V e r s i o n ,         _ I n _   P V O I D   R e g i s t r a t i o n I n f o ) ;   t y p e d e f s t r u c t   _ E X _ E X T E N S I O N _ R E G I S T R A T I O N _ 1   {         U S H O R T   E x t e n s i o n I d ;         U S H O R T   E x t e n s i o n V e r s i o n ;         U S H O R T   F u n c t i o n C o u n t ;         V O I D   * F u n c t i o n T a b l e ;         P V O I D   * H o s t I n t e r f a c e ;         P V O I D   D r i v e r O b j e c t ; } E X _ E X T E N S I O N _ R E G I S T R A T I O N _ 1 ,   * P E X _ E X T E N S I O N _ R E G I S T R A T I O N _ 1 ;
n t ! E x R e g i s t e r H o s t t y p e _ H O S T _ L I S T _ E N T R Y 使 n t ! E x p H o s t L i s t _ H O S T _ L I S T _ E N T R Y 使 n t ! E x R e g i s t e r E x t e n s i o n R e g i s t r a t i o n I n f o F u n c t i o n T a b l e N T O S n t ! E x R e g i s t e r E x t e n s i o n R e g i s t r a t i o n I n f o - > H o s t I n t e r f a c e N T O S H o s t I n t e r f a c e H T O S H o s t I n t e r f a c e B a m . s y s H o s t I n t e r f a c e 使 使 B a m . s y s B a m . s y s 5 n t ! P s p B a m E x t e n s i o n H o s t - > F u n c t i o n T a b l e [ 4 ] s t r u c t _ H O S T _ L I S T _ E N T R Y {         _ L I S T _ E N T R Y   L i s t ;         D W O R D   R e f C o u n t ;         U S H O R T   E x t e n s i o n I d ;         U S H O R T   E x t e n s i o n V e r s i o n ;         U S H O R T   F u n c t i o n C o u n t ;   / /   n u m b e r   o f c a l l b a c k s   t h a t   t h e   e x t e n s i o n                                                       / /   c o n t a i n s         P O O L _ T Y P E   P o o l T y p e ;       / /   w h e r e   t h i s   h o s t   i s   a l l o c a t e d         P V O I D   H o s t I n t e r f a c e ;   / /   t a b l e   o f   u n e x p o r t e d n t   f u n c t i o n s ,                                                     / /   t o   b e   u s e d   b y   t h e d r i v e r   t o   w h i c h                                                     / /   t h i s   e x t e n s i o n b e l o n g s         P V O I D   F u n c t i o n A d d r e s s ;   / /   o p t i o n a l ,   r a r e l y u s e d .                                                         / /   T h i s   c a l l b a c k   i s c a l l e d   b e f o r e                                                         / /   a n d   a f t e r   a n e x t e n s i o n   f o r   t h i s                                                         / /   h o s t   i s r e g i s t e r e d   /   u n r e g i s t e r e d         P V O I D   A r g F o r F u n c t i o n ;   / /   w i l l   b e   s e n t   t o t h e   f u n c t i o n   s a v e d   h e r e         _ E X _ R U N D O W N _ R E F   R u n d o w n R e f ;         _ E X _ P U S H _ L O C K   L o c k ;         P V O I D   F u n c t i o n T a b l e ;   / /   a   t a b l e   o f   t h e c a l l b a c k s   t h a t   t h e                                                     / /   d r i v e r   r e g i s t e r s         D W O R D   F l a g s ;                   / /   O n l y   u s e s   o n e   b i t .                                                     / /   N o t   s u r e   a b o u t   i t s m e a n i n g . } H O S T _ L I S T _ E N T R Y ,   * P H O S T _ L I S T _ E N T R Y ; B a m p C r e a t e P r o c e s s C a l l b a c k B a m p S e t T h r o t t l e S t a t e C a l l b a c k B a m p G e t T h r o t t l e S t a t e C a l l b a c k B a m p S e t U s e r S e t t i n g s B a m p G e t U s e r S e t t i n g s H a n d l e
W i n d o w s N T O S 使 A - N T O S B - E x R e g i s t e r E x t e n s i o n . c E x R e g i s t e r H o s t . c E x p F i n d H o s t . c E x p D e r e f e r e n c e H o s t . c N T S T A T U S E x R e g i s t e r E x t e n s i o n ( _ O u t p t r _   P E X _ E X T E N S I O N   * E x t e n s i o n ,   _ I n _   U L O N G R e g i s t r a t i o n V e r s i o n ,   _ I n _   P R E G I S T R A T I O N _ I N F O   R e g i s t r a t i o n I n f o ) {               / /   V a l i d a t e   t h a t   v e r s i o n   i s   o k   a n d   t h a t F u n c t i o n T a b l e   i s   n o t   s e n t   w i t h o u t   F u n c t i o n C o u n t   o r   v i s e - v e r s a .               i f   (   ( R e g i s t r a t i o n V e r s i o n   & 0 x F F F F 0 0 0 0   ! =   0 x 1 0 0 0 0 )   | |   ( R e g i s t r a t i o n I n f o - > F u n c t i o n T a b l e   = =   n u l l p t r & &   R e g i s t r a t i o n I n f o - > F u n c t i o n C o u n t   ! =   0 )   )                 {                               r e t u r n   S T A T U S _ I N V A L I D _ P A R A M E T E R ;                 }                 / /   S k i p p i n g   o v e r   s o m e   l o c k - r e l a t e d   s t u f f ,                             / /   F i n d   t h e   h o s t   w i t h   t h e   m a t c h i n g v e r s i o n   a n d   i d .               P H O S T _ L I S T _ E N T R Y   p H o s t L i s t E n t r y ;               p H o s t L i s t E n t r y   = E x p F i n d H o s t ( R e g i s t r a t i o n I n f o - > E x t e n s i o n I d , R e g i s t r a t i o n I n f o - > E x t e n s i o n V e r s i o n ) ;                 / /   M o r e   l o c k - r e l a t e d   s t u f f .                             i f   ( ! p H o s t L i s t E n t r y )               {                             r e t u r n   S T A T U S _ N O T _ F O U N D ;               }                 / /   V e r i f y   t h a t   t h e   F u n c t i o n C o u n t   i n   t h e h o s t   d o e s n ' t   e x c e e d   t h e   F u n c t i o n C o u n t   s u p p l i e d   b y   t h e   c a l l e r .               i f   ( R e g i s t r a t i o n I n f o - > F u n c t i o n C o u n t <   p H o s t L i s t E n t r y - > F u n c t i o n C o u n t )               {                 E x p D e r e f e r e n c e H o s t ( p H o s t L i s t E n t r y ) ;                             r e t u r n   S T A T U S _ I N V A L I D _ P A R A M E T E R ;               }                 / /   C h e c k   t h a t   t h e   n u m b e r   o f   f u n c t i o n s   i n F u n c t i o n T a b l e   m a t c h e s   t h e   a m o u n t   i n   F u n c t i o n C o u n t .               P V O I D   F u n c t i o n T a b l e   = R e g i s t r a t i o n I n f o - > F u n c t i o n T a b l e ;               f o r   ( i n t   i   =   0 ;   i   < R e g i s t r a t i o n I n f o - > F u n c t i o n C o u n t ;   i + + )               {                                         i f   ( R e g i s t r a t i o n I n f o - > F u n c t i o n T a b l e [ i ]   = =   n u l l p t r   )                               {                                 E x p D e r e f e r e n c e H o s t ( p H o s t L i s t E n t r y ) ;                                           r e t u r n S T A T U S _ A C C E S S _ D E N I E D ;                               }               }                 / /   s k i p p i n g   o v e r   s o m e   m o r e   l o c k - r e l a t e d s t u f f                 / /   C h e c k   i f   t h e r e   i s   a l r e a d y   a n   e x t e n s i o n r e g i s t e r e d   f o r   t h i s   h o s t .               i f   ( p H o s t L i s t E n t r y - > F u n c t i o n T a b l e   ! = n u l l p t r   | |   F l a g O n ( p H o s t L i s t E n t r y - > F l a g s ,   1 )   )               {                             / /   T h e r e   i s   s o m e t h i n g   r e l a t e d   t o l o c k s   h e r e                 E x p D e r e f e r e n c e H o s t ( p H o s t L i s t E n t r y ) ;                             r e t u r n S T A T U S _ O B J E C T _ N A M E _ C O L L I S I O N ;               }                 / /   I f   t h e r e   i s   a   c a l l b a c k   f u n c t i o n   f o r t h i s   h o s t ,   c a l l   i t   b e f o r e   r e g i s t e r i n g   t h e   e x t e n s i o n ,   w i t h   0   a s   t h e   f i r s t p a r a m e t e r .               i f   ( p H o s t L i s t E n t r y - > F u n c t i o n A d d r e s s )                 {                   p H o s t L i s t E n t r y - > F u n c t i o n A d d r e s s ( 0 , p H o s t L i s t E n t r y - > A r g F o r F u n c t i o n ) ;                 }                 / /   S e t   t h e   F u n c t i o n T a b l e   i n   t h e   h o s t   t o t h e   t a b l e   s u p p l i e d   b y   t h e   c a l l e r ,   o r   t o   M m B a d P o i n t e r   i f   a   t a b l e   w a s n ' t s u p p l i e d .               i f   ( R e g i s t r a t i o n I n f o - > F u n c t i o n T a b l e   = = n u l l p t r )               {                             p H o s t L i s t E n t r y - > F u n c t i o n T a b l e =   n t ! M m B a d P o i n t e r ;               }               e l s e               {                             p H o s t L i s t E n t r y - > F u n c t i o n T a b l e =   R e g i s t r a t i o n I n f o - > F u n c t i o n T a b l e ;               }                 p H o s t L i s t E n t r y - > R u n d o w n R e f   =   0 ;                 / /   I f   t h e r e   i s   a   c a l l b a c k   f u n c t i o n   f o r t h i s   h o s t ,   c a l l   i t   a f t e r   r e g i s t e r i n g   t h e   e x t e n s i o n ,   w i t h   1   a s   t h e   f i r s t p a r a m e t e r .               i f   ( p H o s t L i s t E n t r y - > F u n c t i o n A d d r e s s )               {                 p H o s t L i s t E n t r y - > F u n c t i o n A d d r e s s ( 1 , p H o s t L i s t E n t r y - > A r g F o r F u n c t i o n ) ;               }                 / /   H e r e   t h e r e   i s   s o m e   m o r e   l o c k - r e l a t e d s t u f f                 / /   S e t   t h e   H o s t T a b l e   o f   t h e   c a l l i n g d r i v e r   t o   t h e   t a b l e   o f   f u n c t i o n s   l i s t e d   i n   t h e   h o s t .               i f   ( R e g i s t r a t i o n I n f o - > H o s t T a b l e   ! = n u l l p t r )               {                 * ( P V O I D ) R e g i s t r a t i o n I n f o - > H o s t T a b l e =   p H o s t L i s t E n t r y - > h o s t I n t e r f a c e ;               }                 / /   R e t u r n   t h e   i n i t i a l i z e d   h o s t   t o   t h e c a l l e r   i n   t h e   o u t p u t   E x t e n s i o n   p a r a m e t e r .               * E x t e n s i o n   =   p H o s t L i s t E n t r y ;               r e t u r n   S T A T U S _ S U C C E S S ; } N T S T A T U S E x R e g i s t e r H o s t ( _ O u t _   P H O S T _ L I S T _ E N T R Y   E x t e n s i o n H o s t ,   _ I n _   U L O N G   U n u s e d ,   _ I n _ P H O S T _ I N F O R M A T I O N   H o s t I n f o r m a t i o n ) {               N T S T A T U S   S t a t u s   =   S T A T U S _ S U C C E S S ;                 / /   A l l o c a t e   m e m o r y   f o r   a   n e w H O S T _ L I S T _ E N T R Y               P H O S T _ L I S T _ E N T R Y   p   = E x A l l o c a t e P o o l W i t h T a g ( H o s t I n f o r m a t i o n - > P o o l T y p e ,   0 x 6 0 ,   ' H E x E ' ) ;               i f   ( p   = =   n u l l p t r )               {                             r e t u r n S T A T U S _ I N S U F F I C I E N T _ R E S O U R C E S ;               }                 / /               / /   I n i t i a l i z e   a   n e w   H O S T _ L I S T _ E N T R Y                 / /               p - > F l a g s   & =   0 x F E ;               p - > R e f C o u n t   =   1 ;               p - > F u n c t i o n T a b l e   =   0 ;               p - > E x t e n s i o n I d   = H o s t I n f o r m a t i o n - > E x t e n s i o n I d ;               p - > E x t e n s i o n V e r s i o n   = H o s t I n f o r m a t i o n - > E x t e n s i o n V e r s i o n ;               p - > h o s t I n t e r f a c e   = H o s t I n f o r m a t i o n - > h o s t I n t e r f a c e ;               p - > F u n c t i o n A d d r e s s   = H o s t I n f o r m a t i o n - > F u n c t i o n A d d r e s s ;               p - > A r g F o r F u n c t i o n   = H o s t I n f o r m a t i o n - > A r g F o r F u n c t i o n ;                                                         p - > L o c k   =   0 ;                                                       p - > R u n d o w n R e f   =   0 ;                                             / /   S e a r c h   f o r   a n   e x i s t i n g   l i s t E n t r y   w i t h t h e   s a m e   v e r s i o n   a n d   i d .               P H O S T _ L I S T _ E N T R Y   l i s t E n t r y   =   E x p F i n d H o s t ( H o s t I n f o r m a t i o n - > E x t e n s i o n I d , H o s t I n f o r m a t i o n - > E x t e n s i o n V e r s i o n ) ;               i f   ( l i s t E n t r y )               {                             S t a t u s   = S T A T U S _ O B J E C T _ N A M E _ C O L L I S I O N ;                             E x p D e r e f e r e n c e H o s t ( p ) ;                             E x p D e r e f e r e n c e H o s t ( l i s t E n t r y ) ;               }               e l s e               {                             / /   I n s e r t   t h e   n e w   H O S T _ L I S T _ E N T R Y t o   t h e   e n d   o f   E x p H o s t L i s t .                             i f   (   * l a s t H o s t L i s t E n t r y   ! = & f i r s t H o s t L i s t E n t r y   )                             {                                         _ _ f a s t f a i l ( ) ;                             }                               f i r s t H o s t L i s t E n t r y - > P r e v   = & p ;                             p - > N e x t   =   f i r s t H o s t L i s t E n t r y ;                             l a s t H o s t L i s t E n t r y   =   p ;                               E x t e n s i o n H o s t   =   p ;               }                             r e t u r n   S t a t u s ; } P H O S T _ L I S T _ E N T R Y E x p F i n d H o s t ( U S H O R T   E x t e n s i o n I d ,   U S H O R T   E x t e n s i o n V e r s i o n ) {               P H O S T _ L I S T _ E N T R Y   e n t r y ;               f o r   ( e n t r y   = =   E x p H o s t L i s t ;   ;   e n t r y   = e n t r y - > N e x t )               {                             i f   ( e n t r y   = =   & E x p H o s t L i s t )                               {                                             r e t u r n   0 ;                               }                                                         i f   (   * ( e n t r y - > E x t e n s i o n I d )   = = E x t e n s i o n I d   & &   * ( e n t r y - > E x t e n s i o n V e r s i o n )   = =   E x t e n s i o n V e r s i o n   )                               {                                             b r e a k ;                               }               }   I n t e r l o c k e d I n c r e m e n t ( e n t r y - > R e f C o u n t ) ;               r e t u r n   e n t r y ; } v o i d E x p D e r e f e r e n c e H o s t ( P H O S T _ L I S T _ E N T R Y   H o s t ) {             i f   ( I n t e r l o c k e d E x c h a n g e A d d ( H o s t . R e f C o u n t ,   0 x F F F F F F F F )   = =   1   )               {                                     E x F r e e P o o l W i t h T a g ( H o s t ,   0 ) ;               } }
C - * m e d i u m F B A l p h a _ h 4 c k F r e e B u f . C O M s t r u c t _ H O S T _ I N F O R M A T I O N {         U S H O R T   E x t e n s i o n I d ;         U S H O R T   E x t e n s i o n V e r s i o n ;         D W O R D   F u n c t i o n C o u n t ;         P O O L _ T Y P E   P o o l T y p e ;         P V O I D   H o s t I n t e r f a c e ;         P V O I D   F u n c t i o n A d d r e s s ;         P V O I D   A r g F o r F u n c t i o n ;         P V O I D   u n k ; } H O S T _ I N F O R M A T I O N ,   * P H O S T _ I N F O R M A T I O N ;   s t r u c t _ H O S T _ L I S T _ E N T R Y {         _ L I S T _ E N T R Y   L i s t ;         D W O R D   R e f C o u n t ;         U S H O R T   E x t e n s i o n I d ;         U S H O R T   E x t e n s i o n V e r s i o n ;         U S H O R T   F u n c t i o n C o u n t ;   / /   n u m b e r   o f c a l l b a c k s   t h a t   t h e                                                       / /   e x t e n s i o n   c o n t a i n s         P O O L _ T Y P E   P o o l T y p e ;       / /   w h e r e   t h i s   h o s t   i s   a l l o c a t e d         P V O I D   H o s t I n t e r f a c e ;     / /   t a b l e   o f   u n e x p o r t e d   n t   f u n c t i o n s ,                                                       / /   t o   b e   u s e d   b y   t h e d r i v e r   t o   w h i c h                                                       / /   t h i s   e x t e n s i o n b e l o n g s         P V O I D   F u n c t i o n A d d r e s s ;   / /   o p t i o n a l ,   r a r e l y u s e d .                                                         / /   T h i s   c a l l b a c k   i s c a l l e d   b e f o r e   a n d                                                               / /   a f t e r   a n e x t e n s i o n   f o r   t h i s   h o s t                                                         / /   i s   r e g i s t e r e d   / u n r e g i s t e r e d         P V O I D   A r g F o r F u n c t i o n ;   / /   w i l l   b e   s e n t   t o t h e   f u n c t i o n   s a v e d   h e r e         _ E X _ R U N D O W N _ R E F   R u n d o w n R e f ;         _ E X _ P U S H _ L O C K   L o c k ;         P V O I D   F u n c t i o n T a b l e ;         / /   a   t a b l e   o f   t h e   c a l l b a c k s   t h a t                                                           / /   t h e   d r i v e r r e g i s t e r s D W O R D F l a g s ;                                 / /   O n l y   u s e s   o n e f l a g .                                                           / /   N o t   s u r e   a b o u t   i t s   m e a n i n g . } H O S T _ L I S T _ E N T R Y ,   * P H O S T _ L I S T _ E N T R Y ; ;   s t r u c t _ E X _ E X T E N S I O N _ R E G I S T R A T I O N _ 1 {         U S H O R T   E x t e n s i o n I d ;         U S H O R T   E x t e n s i o n V e r s i o n ;         U S H O R T   F u n c t i o n C o u n t ;         P V O I D   F u n c t i o n T a b l e ;         P V O I D   * H o s t T a b l e ;         P V O I D   D r i v e r O b j e c t ; } E X _ E X T E N S I O N _ R E G I S T R A T I O N _ 1 , * P E X _ E X T E N S I O N _ R E G I S T R A T I O N _ 1 ;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则