找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3|回复: 0

[18559] 2021-05-07_红队IATHook技术实现

[复制链接]

6万

主题

-6万

回帖

-58

积分

管理员

积分
-58
发表于 5 天前 | 显示全部楼层 |阅读模式
2021-05-07_红队IATHook技术实现   |   I A T   H o o k   B u f f e r   H A C K   2 0 2 1 - 0 5 - 0 7 H O O K 1 . 2 . , , I A T , F i r s t T h u n k . A P I , L o a d L i b r a r y d l l , A P I I A T , I A T " " , , A P I , ,   M e s s a g e B o x I A T   H O O K S e t H o o k   D W O R D   S e t I A T H o o k ( D W O R D   O l d A d d r , D W O R D   N e w A d d r )     / / o l d A d d r , N e w A d d r   {           D W O R D   d w I m a g e B a s e   =   0 ;           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 _ N T _ H E A D E R S   p N T H e a d e r   =   N U L L ;           P I M A G E _ F I L E _ H E A D E R   p P E H e a d e r   =   N U L L ;           P I M A G E _ O P T I O N A L _ H E A D E R 3 2   p O p t i o n H e a d e r   =   N U L L ;           P I M A G E _ S E C T I O N _ H E A D E R   p S e c t i o n H e a d e r   =   N U L L ;           P I M A G E _ I M P O R T _ D E S C R I P T O R   p I m p o r t   =   N U L L ;           P D W O R D   p I A T T h u n k   =   N U L L ;           D W O R D   o l d P r o t e c t e d   =   0 ;           b o o l   F l a g   =   F A L S E ;           d w I m a g e B a s e   =   ( D W O R D ) : : G e t M o d u l e H a n d l e ( N U L L ) ;       / /           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 ) d w I m a g e B a s e ;           p N T H e a d e r   =   ( P I M A G E _ N T _ H E A D E R S ) ( ( D W O R D ) 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 P E H e a d e r   =   ( P I M A G E _ F I L E _ H E A D E R ) ( ( D W O R D ) p N T H e a d e r   +   4 ) ;           p O p t i o n H e a d e r   =   ( P I M A G E _ O P T I O N A L _ H E A D E R 3 2 ) ( ( D W O R D ) p P E H e a d e r   +   I M A G E _ S I Z E O F _ F I L E _ H E A D E R ) ;           p I m p o r t   =   ( P I M A G E _ I M P O R T _ D E S C R I P T O R ) ( p O p t i o n H e a d e r - > D a t a D i r e c t o r y [ 1 ] . V i r t u a l A d d r e s s   +   d w I m a g e B a s e ) ;     / / 0               / / I A T           w h i l e   ( p I m p o r t - > F i r s t T h u n k   ! =   0   & &   F l a g   = =   F A L S E )           {                   p I A T T h u n k   =   ( P D W O R D ) ( p I m p o r t - > F i r s t T h u n k   +   d w I m a g e B a s e ) ;                   p r i n t f ( " % s n " ,   d w I m a g e B a s e   +   p I m p o r t - > N a m e ) ;                   w h i l e   ( * p I A T T h u n k )                   {
, , I A T , A P I , A P I , 3 0 , 3 1 ( 0 x c 0 0 0 0 0 0 5 ) , V i r t u a l P r o t e c t , N U L L , O l d A d d r U n S e t H o o k                   {                           i f   ( * p I A T T h u n k   = =   O l d A d d r )                           {                                   V i r t u a l P r o t e c t ( p I A T T h u n k ,   0 x 1 0 0 0 ,   P A G E _ E X E C U T E _ R E A D W R I T E ,   & o l d P r o t e c t e d ) ;                                   * p I A T T h u n k   =   N e w A d d r ;                                   F l a g   =   T R U E ;                                   p r i n t f ( " H o o k ! n " ) ;                                       b r e a k ;                           }                           p r i n t f ( " % x n " ,   p I A T T h u n k ) ;                           p I A T T h u n k + + ;                   }                   p I m p o r t + + ;           }           r e t u r n   F l a g ;   } D W O R D   O l d F u n c   =   ( D W O R D ) : : G e t P r o c A d d r e s s ( L o a d L i b r a r y ( L " U S E R 3 2 . d l l " ) ,   " M e s s a g e B o x W " ) ;   D W O R D   U n S e t I A T H o o k ( D W O R D   O l d A d d r ,   D W O R D   N e w A d d r )   {           D W O R D   d w I m a g e B a s e   =   0 ;           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 _ N T _ H E A D E R S   p N T H e a d e r   =   N U L L ;           P I M A G E _ F I L E _ H E A D E R   p P E H e a d e r   =   N U L L ;           P I M A G E _ O P T I O N A L _ H E A D E R 3 2   p O p t i o n H e a d e r   =   N U L L ;           P I M A G E _ S E C T I O N _ H E A D E R   p S e c t i o n H e a d e r   =   N U L L ;           P I M A G E _ I M P O R T _ D E S C R I P T O R   p I m p o r t   =   N U L L ;           P D W O R D   p I A T T h u n k   =   N U L L ;           b o o l   F l a g   =   F A L S E ;           d w I m a g e B a s e   =   ( D W O R D ) : : G e t M o d u l e H a n d l e ( N U L L ) ;       / /           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 ) d w I m a g e B a s e ;           p N T H e a d e r   =   ( P I M A G E _ N T _ H E A D E R S ) ( ( D W O R D ) 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 P E H e a d e r   =   ( P I M A G E _ F I L E _ H E A D E R ) ( ( D W O R D ) p N T H e a d e r   +   4 ) ;           p O p t i o n H e a d e r   =   ( P I M A G E _ O P T I O N A L _ H E A D E R 3 2 ) ( ( D W O R D ) p P E H e a d e r   +   I M A G E _ S I Z E O F _ F I L E _ H E A D E R ) ;           p I m p o r t   =   ( P I M A G E _ I M P O R T _ D E S C R I P T O R ) ( p O p t i o n H e a d e r - > D a t a D i r e c t o r y [ 1 ] . V i r t u a l A d d r e s s   +   d w I m a g e B a s e ) ;     / /           w h i l e   ( p I m p o r t - > F i r s t T h u n k   ! =   0   & &   F l a g   = =   F A L S E )           {                   p I A T T h u n k   =   ( P D W O R D ) ( p I m p o r t - > F i r s t T h u n k   +   d w I m a g e B a s e ) ;                   w h i l e   ( * p I A T T h u n k )                   {                           i f   ( * p I A T T h u n k   = =   N e w A d d r )                           {                                   * p I A T T h u n k   =   O l d A d d r ;                                     F l a g   =   T R U E ;                                   b r e a k ;                           }                           p I A T T h u n k + + ;                   }                   p I m p o r t + + ;           }
, , , , M e s s a g e B o x , 使 A P I   M e s s a g e B o x ( ) , , , " O l d A d d r " M e s s a g e B o x           r e t u r n   F l a g ;   }   i n t   W I N A P I   M y M e s s a g e B o x W ( H W N D   h W n d ,   L P C W S T R   l p T e x t ,   L P C W S T R   l p C a p t i o n ,   U I N T   u T y p e )   {           p r i n t f ( " % x     % s         % w s       % x n " ,   h W n d ,   l p T e x t ,   l p C a p t i o n ,   u T y p e ) ;           t y p e d e f   i n t   ( W I N A P I *   p M e s s a g e B o x ) ( H W N D ,   L P C W S T R ,   L P C W S T R ,   U I N T ) ;           / / i n t   r e t   =   M e s s a g e B o x ( h W n d ,   l p T e x t ,   l p C a p t i o n ,   u T y p e ) ;           i n t   r e t   =   ( ( p M e s s a g e B o x ) O l d F u n c ) ( h W n d ,   l p T e x t ,   l p C a p t i o n ,   u T y p e ) ;           p r i n t f ( " % x " ,   r e t ) ;           r e t u r n   r e t ;   } i n t   T e s t I A T H O O K ( ) { S e t I A T H o o k ( O l d F u n c ,   ( D W O R D ) M y M e s s a g e B o x W ) ; M e s s a g e B o x ( N U L L ,   L " H E L L O " ,   L " H A C K E R " ,   M B _ O K ) ; U n S e t I A T H o o k ( O l d F u n c ,   ( D W O R D ) M y M e s s a g e B o x W ) ; r e t u r n   1 ; }
    / /   I A T H O O K . c p p   :     " m a i n "   # i n c l u d e   < i o s t r e a m > # i n c l u d e   < w i n d o w s . h > D W O R D   O l d F u n c   =   ( D W O R D ) : : G e t P r o c A d d r e s s ( L o a d L i b r a r y ( L " U S E R 3 2 . d l l " ) ,   " M e s s a g e B o x W " ) ; D W O R D   S e t I A T H o o k ( D W O R D   O l d A d d r , D W O R D   N e w A d d r ) { D W O R D   d w I m a g e B a s e   =   0 ; 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 _ N T _ H E A D E R S   p N T H e a d e r   =   N U L L ; P I M A G E _ F I L E _ H E A D E R   p P E H e a d e r   =   N U L L ; P I M A G E _ O P T I O N A L _ H E A D E R 3 2   p O p t i o n H e a d e r   =   N U L L ; P I M A G E _ S E C T I O N _ H E A D E R   p S e c t i o n H e a d e r   =   N U L L ; P I M A G E _ I M P O R T _ D E S C R I P T O R   p I m p o r t   =   N U L L ; P D W O R D   p I A T T h u n k   =   N U L L ; D W O R D   o l d P r o t e c t e d   =   0 ; b o o l   F l a g   =   F A L S E ; d w I m a g e B a s e   =   ( D W O R D ) : : G e t M o d u l e H a n d l e ( N U L L ) ;       / / 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 ) d w I m a g e B a s e ; p N T H e a d e r   =   ( P I M A G E _ N T _ H E A D E R S ) ( ( D W O R D ) 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 P E H e a d e r   =   ( P I M A G E _ F I L E _ H E A D E R ) ( ( D W O R D ) p N T H e a d e r   +   4 ) ; p O p t i o n H e a d e r   =   ( P I M A G E _ O P T I O N A L _ H E A D E R 3 2 ) ( ( D W O R D ) p P E H e a d e r   +   I M A G E _ S I Z E O F _ F I L E _ H E A D E R ) ; p I m p o r t   =   ( P I M A G E _ I M P O R T _ D E S C R I P T O R ) ( p O p t i o n H e a d e r - > D a t a D i r e c t o r y [ 1 ] . V i r t u a l A d d r e s s   +   d w I m a g e B a s e ) ;     / / / / I A T w h i l e   ( p I m p o r t - > F i r s t T h u n k   ! =   0   & &   F l a g   = =   F A L S E ) { p I A T T h u n k   =   ( P D W O R D ) ( p I m p o r t - > F i r s t T h u n k   +   d w I m a g e B a s e ) ; w h i l e   ( * p I A T T h u n k )
w h i l e   ( * p I A T T h u n k ) { i f   ( * p I A T T h u n k   = =   O l d A d d r ) { V i r t u a l P r o t e c t ( p I A T T h u n k ,   0 x 1 0 0 0 ,   P A G E _ E X E C U T E _ R E A D W R I T E ,   & o l d P r o t e c t e d ) ; * p I A T T h u n k   =   N e w A d d r ; F l a g   =   T R U E ; p r i n t f ( " H o o k ! n " ) ; b r e a k ; } p I A T T h u n k + + ; } p I m p o r t + + ; } r e t u r n   F l a g ; } D W O R D   U n S e t I A T H o o k ( D W O R D   O l d A d d r ,   D W O R D   N e w A d d r ) { D W O R D   d w I m a g e B a s e   =   0 ; 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 _ N T _ H E A D E R S   p N T H e a d e r   =   N U L L ; P I M A G E _ F I L E _ H E A D E R   p P E H e a d e r   =   N U L L ; P I M A G E _ O P T I O N A L _ H E A D E R 3 2   p O p t i o n H e a d e r   =   N U L L ; P I M A G E _ S E C T I O N _ H E A D E R   p S e c t i o n H e a d e r   =   N U L L ; P I M A G E _ I M P O R T _ D E S C R I P T O R   p I m p o r t   =   N U L L ; P D W O R D   p I A T T h u n k   =   N U L L ; b o o l   F l a g   =   F A L S E ; d w I m a g e B a s e   =   ( D W O R D ) : : G e t M o d u l e H a n d l e ( N U L L ) ;       / / 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 ) d w I m a g e B a s e ; p N T H e a d e r   =   ( P I M A G E _ N T _ H E A D E R S ) ( ( D W O R D ) 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 P E H e a d e r   =   ( P I M A G E _ F I L E _ H E A D E R ) ( ( D W O R D ) p N T H e a d e r   +   4 ) ; p O p t i o n H e a d e r   =   ( P I M A G E _ O P T I O N A L _ H E A D E R 3 2 ) ( ( D W O R D ) p P E H e a d e r   +   I M A G E _ S I Z E O F _ F I L E _ H E A D E R ) ; p I m p o r t   =   ( P I M A G E _ I M P O R T _ D E S C R I P T O R ) ( p O p t i o n H e a d e r - > D a t a D i r e c t o r y [ 1 ] . V i r t u a l A d d r e s s   +   d w I m a g e B a s e ) ;     / / w h i l e   ( p I m p o r t - > F i r s t T h u n k   ! =   0   & &   F l a g   = =   F A L S E ) { p I A T T h u n k   =   ( P D W O R D ) ( p I m p o r t - > F i r s t T h u n k   +   d w I m a g e B a s e ) ; w h i l e   ( * p I A T T h u n k ) { i f   ( * p I A T T h u n k   = =   N e w A d d r ) { * p I A T T h u n k   =   O l d A d d r ; F l a g   =   T R U E ; b r e a k ; } p I A T T h u n k + + ; } p I m p o r t + + ; } r e t u r n   F l a g ; } i n t   W I N A P I   M y M e s s a g e B o x W ( H W N D   h W n d ,   L P C W S T R   l p T e x t ,   L P C W S T R   l p C a p t i o n ,   U I N T   u T y p e ) { p r i n t f ( " % x     % s         % w s       % x n " ,   h W n d ,   l p T e x t ,   l p C a p t i o n ,   u T y p e ) ;
  线 线 D l l S e s s i o n   0 6 P r o 稿 B u f f e r t y p e d e f   i n t   ( W I N A P I *   p M e s s a g e B o x ) ( H W N D ,   L P C W S T R ,   L P C W S T R ,   U I N T ) ; / / i n t   r e t   =   M e s s a g e B o x ( h W n d ,   l p T e x t ,   l p C a p t i o n ,   u T y p e ) ; i n t   r e t   =   ( ( p M e s s a g e B o x ) O l d F u n c ) ( h W n d ,   l p T e x t ,   l p C a p t i o n ,   u T y p e ) ; p r i n t f ( " % x " ,   r e t ) ; r e t u r n   r e t ; } i n t   T e s t I A T H O O K ( ) { S e t I A T H o o k ( O l d F u n c ,   ( D W O R D ) M y M e s s a g e B o x W ) ; M e s s a g e B o x ( N U L L ,   L " H E L L O " ,   L " H A C K E R " ,   M B _ O K ) ; U n S e t I A T H o o k ( O l d F u n c ,   ( D W O R D ) M y M e s s a g e B o x W ) ; r e t u r n   1 ; } i n t   m a i n ( ) { T e s t I A T H O O K ( ) ; }

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

本版积分规则

Archiver|手机版|小黑屋|Nmaps Club

GMT+8, 2025-1-23 10:30 , Processed in 0.380887 second(s), 39 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表