[18565] 2021-05-30_简单的加密壳实现

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-18
2021-05-30_简单的加密壳实现   B u f f e r   H A C K   2 0 2 1 - 0 5 - 3 0 x p   +   v c 6 ( e x e ) , : p a t h   : n : L S A D D R E S S # d e f i n e   E N D P A T H   " C : L O A D S H E L L . e x e "   / / v o i d   a d d n e w s e c ( I N   L P S T R   p a t h , I N   D W O R D   n , O U T   L P V O I D *   L S A D D R E S S ) {         L P V O I D   F i l e B u f f e r   =   N U L L ;         L P V O I D   I m a g e B u f f e r   =   N U L L ;         L P V O I D   N e w B u f f e r   =   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   =   N U L L ;         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 ;         D W O R D   S i z e   =   0 ;           F i l e T o B i g F i l e B u f f e r ( p a t h ,   n ,   & F i l e B u f f e r ) ;           i f   ( ! F i l e B u f f e r )         {                 p r i n t f ( " F i l e - > F i l e B u f f e r " ) ;                 r e t u r n ;         }         F i l e B u f f e r T o B i g I m a g e B u f f e r ( F i l e B u f f e r , n , & I m a g e B u f f e r ) ;         i f   ( ! I m a g e B u f f e r )         {                 p r i n t f ( " F i l e B U f f e r - > I m a g e B u f f e r " ) ;                 r e t u r n ;         }         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 ) I m a g e B u f f e r ;         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 S e c t i o n H e a d e r   =   ( P I M A G E _ S E C T I O N _ H E A D E R ) ( ( D W O R D ) p O p t i o n H e a d e r   +   p P E H e a d e r - > S i z e O f O p t i o n a l H e a d e r ) ;                   P I M A G E _ S E C T I O N _ H E A D E R   p t e m p 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 ;         f o r   ( i n t   i   =   0 ;   i   <   p P E H e a d e r - > N u m b e r O f S e c t i o n s ;   i + + ,   p t e m p S e c t i o n H e a d e r + + ) ;                   i f   ( ( p O p t i o n H e a d e r - > S i z e O f H e a d e r s   -   ( ( D W O R D ) p t e m p S e c t i o n H e a d e r   -   ( D W O R D ) p D o s H e a d e r ) )   <   8 0 )         {                 M e s s a g e B o x ( 0 , " " , 0 , 0 ) ;                 r e t u r n ;         }         m e m c p y ( p t e m p 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 , 4 0 ) ;         p P E H e a d e r - > N u m b e r O f S e c t i o n s   =   ( W O R D ) p P E H e a d e r - > N u m b e r O f S e c t i o n s   +   1 ;         / / p r i n t f ( " % x n " ,   p P E H e a d e r - > N u m b e r O f S e c t i o n s ) ;         p O p t i o n H e a d e r - > S i z e O f I m a g e   =   ( D W O R D ) p O p t i o n H e a d e r - > S i z e O f I m a g e   +   n ;         / / p r i n t f ( " % x n " ,   p O p t i o n H e a d e r - > S i z e O f I m a g e ) ;         p t e m p S e c t i o n H e a d e r - > M i s c . V i r t u a l S i z e   =   n ;         / / p r i n t f ( " % x n " ,   p t e m p S e c t i o n H e a d e r - > M i s c . V i r t u a l S i z e ) ;         P I M A G E _ S E C T I O N _ H E A D E R   p t e m p S e c t i o n H e a d e r 1   =   p t e m p S e c t i o n H e a d e r - 1 ;         / /         i f   ( p t e m p S e c t i o n H e a d e r 1 - > M i s c . V i r t u a l S i z e   >   p t e m p S e c t i o n H e a d e r 1 - > S i z e O f R a w D a t a )         {
  } ,         {                 p t e m p S e c t i o n H e a d e r - > V i r t u a l A d d r e s s   =   p t e m p S e c t i o n H e a d e r 1 - > V i r t u a l A d d r e s s   +   I m a g e A l i g n m e n t ( p t e m p S e c t i o n H e a d e r 1 - > M i s c . V i r t u a l S i z e ) ;         }         e l s e         {                 p t e m p S e c t i o n H e a d e r - > V i r t u a l A d d r e s s   =   p t e m p S e c t i o n H e a d e r 1 - > V i r t u a l A d d r e s s   +   I m a g e A l i g n m e n t ( p t e m p S e c t i o n H e a d e r 1 - > S i z e O f R a w D a t a ) ;         }         p t e m p S e c t i o n H e a d e r - > S i z e O f R a w D a t a   =   F i l e A l i g n m e n t ( n ) ;         p t e m p S e c t i o n H e a d e r - > P o i n t e r T o R a w D a t a   =   p t e m p S e c t i o n H e a d e r 1 - > P o i n t e r T o R a w D a t a   +   p t e m p S e c t i o n H e a d e r 1 - > S i z e O f R a w D a t a ;         p t e m p S e c t i o n H e a d e r - > C h a r a c t e r i s t i c s   =   p S e c t i o n H e a d e r - > C h a r a c t e r i s t i c s   |   p t e m p S e c t i o n H e a d e r - > C h a r a c t e r i s t i c s ;         S i z e   =   I m a g e B u f f e r T o N e w B u f f e r ( I m a g e B u f f e r ,   & N e w B u f f e r ) ;         * L S A D D R E S S   =   ( L P V O I D ) ( p t e m p S e c t i o n H e a d e r - > V i r t u a l A d d r e s s + ( D W O R D ) I m a g e B u f f e r ) ;         i f   ( S i z e   = =   0   | |   ! N e w B u f f e r )         {                 M e s s a g e B o x ( 0 , " E R R O R ( I m a g e B u f f e r - > F i l e B u f f e r ) " , 0 , 0 ) ;                 f r e e ( F i l e B u f f e r ) ;                 f r e e ( I m a g e B u f f e r ) ;                 r e t u r n ;         }         B O O L   i s o k   =   M e m e r y T O F i l e ( N e w B u f f e r ,   S i z e ,   E N D P A T H ) ;         i f   ( i s o k   = =   0 )         {                 M e s s a g e B o x ( 0 , " " , 0 , 0 ) ;         }         p s h e l l I m a g e B u f f e r   =   I m a g e B u f f e r ;         f r e e ( N e w B u f f e r ) ;         f r e e ( F i l e B u f f e r ) ;     r e t u r n ;   } D W O R D   e n c r y p t o ( I N   L P S T R   p a t h , O U T   L P V O I D *   F i l e B u f f e r ) {         F I L E *   p F i l e ;         p F i l e   =   f o p e n ( p a t h ,   " r b " ) ;         i f   ( p F i l e   = =   N U L L )         {                 f c l o s e ( p F i l e ) ; / /                 r e t u r n   0 ;         }         e l s e         {                 f s e e k ( p F i l e ,   0 ,   S E E K _ E N D ) ;                 D W O R D   f i l e S i z e   =   f t e l l ( p F i l e ) ;                 f s e e k ( p F i l e ,   0 ,   S E E K _ S E T ) ;                 c h a r *   p   =   ( c h a r   * ) m a l l o c ( f i l e S i z e * s i z e o f ( c h a r ) ) ;           / /                 f r e a d ( p ,   s i z e o f ( c h a r ) ,   f i l e S i z e ,   p F i l e ) ;         / /                 f o r   ( D W O R D   i   =   0 ;   i   <   f i l e S i z e ;   i + + )                 {                         p [ i ]   =   p [ i ]   ^   0 x F F ;                 }                       / /                 * F i l e B u f f e r   =   p ;                 f c l o s e ( p F i l e ) ; / /                 r e t u r n   f i l e S i z e ; } D W O R D   a d d s h e l l c o d e T o l a s t S e c t i o n ( L P S T R   s r c p a t h , L P S T R   d e s p a t h ) {         L P V O I D   N e w B u f f e r   =   N U L L ;         L P V O I D   p F i l e B u f f e r   =   N U L L ;         L P V O I D   L S A D D R E S S   =   N U L L ;         i n t   F i l e S i z e   =   e n c r y p t o ( s r c p a t h , & p F i l e B u f f e r ) ;         a d d n e w s e c ( d e s p a t h , F i l e S i z e , & L S A D D R E S S ) ;       / / E N D P A T H         m e m c p y ( L S A D D R E S S , p F i l e B u f f e r , F i l e S i z e ) ;         D W O R D   S i z e   =   I m a g e B u f f e r T o N e w B u f f e r ( p s h e l l I m a g e B u f f e r ,   & N e w B u f f e r ) ;         B O O L   i s o k   =   M e m e r y T O F i l e ( N e w B u f f e r ,   S i z e ,   E N D P A T H ) ;         i f   ( i s o k   = =   0 )         {                 M e s s a g e B o x ( 0 , " " , 0 , 0 ) ;         }         f r e e ( p s h e l l I m a g e B u f f e r ) ;         f r e e ( p F i l e B u f f e r ) ;         f r e e ( N e w B u f f e r ) ;
        r e t u r n   1 ; } D W O R D   I m a g e B u f f e r T o N e w B u f f e r ( I N   L P V O I D   p I m a g e B u f f e r ,   O U T   L P V O I D *   p N e w B u f f e r ) {         i f   ( ! p I m a g e B u f f e r )         {                 p r i n t f ( " P E " ) ;                 r e t u r n   0 ;         }         i f   ( * ( P W O R D ) p I m a g e B u f f e r   ! =   I M A G E _ D O S _ S I G N A T U R E )         {                 p r i n t f ( " M Z " ) ;                 f r e e ( p I m a g e B u f f e r ) ;                 r e t u r n   0 ;         }         D W O R D   F i l e S i z e   =   0 ;         L P V O I D   p t e m p N e w B u f f e r   =   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   =   N U L L ;         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 D o s H e a d e r   =   ( P I M A G E _ D O S _ H E A D E R ) p I m a g e B u f f e r ;         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 S e c t i o n H e a d e r   =   ( P I M A G E _ S E C T I O N _ H E A D E R ) ( ( D W O R D ) p O p t i o n H e a d e r   +   p P E H e a d e r - > S i z e O f O p t i o n a l H e a d e r ) ;         P I M A G E _ S E C T I O N _ H E A D E R   p t e m p 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 ;           i f   ( * ( P D W O R D ) ( ( D W O R D ) p I m a g e B u f f e r   +   p D o s H e a d e r - > e _ l f a n e w )   ! =   I M A G E _ N T _ S I G N A T U R E )         {                 p r i n t f ( " P E " ) ;                 f r e e ( p I m a g e B u f f e r ) ;                 r e t u r n   0 ;         }           f o r   ( i n t   i   =   0 ;   i   <   p P E H e a d e r - > N u m b e r O f S e c t i o n s ;   i + + ,   p t e m p S e c t i o n H e a d e r + + ) ;                   p t e m p S e c t i o n H e a d e r - - ;         F i l e S i z e   =   p t e m p S e c t i o n H e a d e r - > P o i n t e r T o R a w D a t a   +   p t e m p S e c t i o n H e a d e r - > S i z e O f R a w D a t a ;           p t e m p N e w B u f f e r   =   m a l l o c ( F i l e S i z e ) ;         i f   ( ! p t e m p N e w B u f f e r )         {                 p r i n t f ( " p N e w B u f f e r " ) ;                 r e t u r n   0 ;         }         m e m s e t ( p t e m p N e w B u f f e r ,   0 ,   F i l e S i z e ) ;         m e m c p y ( p t e m p N e w B u f f e r ,   p I m a g e B u f f e r ,   p O p t i o n H e a d e r - > S i z e O f H e a d e r s ) ;           P I M A G E _ S E C T I O N _ H E A D E R   p t e m p 1 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 ;           f o r   ( D W O R D   n   =   0 ;   n   <   p P E H e a d e r - > N u m b e r O f S e c t i o n s ;   n + + )         {                 m e m c p y ( ( v o i d * ) ( ( D W O R D ) p t e m p N e w B u f f e r + p t e m p 1 S e c t i o n H e a d e r - > P o i n t e r T o R a w D a t a ) ,   ( v o i d * ) ( ( D W O R D ) p I m a g e B u f f e r   +   p t e m p 1 S e c t i o n H e a d e r - > V i r t u a l A d d r e s s ) ,   p t e m p 1 S e c t i o n H e a d e r - > S i z e O f R a w D a t a ) ;                 / / p r i n t f ( " % x n " ,   p t e m p 1 S e c t i o n H e a d e r - > S i z e O f R a w D a t a ) ;                 p t e m p 1 S e c t i o n H e a d e r + + ;         }                   * p N e w B u f f e r   =   p t e m p N e w B u f f e r ;         p t e m p 1 S e c t i o n H e a d e r   =   N U L L ; r e t u r n   F i l e S i z e ; } D W O R D   M e m e r y T O F i l e ( I N   L P V O I D   p M e m B u f f e r ,   I N   s i z e _ t   s i z e ,   O U T   L P S T R   l p s z F i l e ) {         F I L E *   p F i l e   =   N U L L ;         i f   ( ! p M e m B u f f e r )         {                 p r i n t f ( " " ) ;                 r e t u r n   0 ;         }         p F i l e   =   f o p e n ( l p s z F i l e ,   " w b " ) ;         i f   ( ! p F i l e )         {                 p r i n t f ( " e x e " ) ;                 r e t u r n   0 ;         }
, , : ,         }         s i z e _ t   n   =   f w r i t e ( p M e m B u f f e r ,   s i z e ,   1 ,   p F i l e ) ;         i f   ( ! n )         {                 p r i n t f ( " " ) ;                 f r e e ( p M e m B u f f e r ) ;                 f c l o s e ( p F i l e ) ;                 p F i l e   =   N U L L ;                 r e t u r n   0 ;         }         f c l o s e ( p F i l e ) ;         p F i l e   =   N U L L ;         r e t u r n   1 ; } D W O R D   F i l e A l i g n m e n t ( i n t   n ) {         D W O R D   i ;         i f   ( n   %   0 x 2 0 0   ! =   0 )         {                 i   =   n   /   0 x 2 0 0   +   1 ;                 i   =   i   *   0 x 2 0 0 ;                 r e t u r n   i ;         }         e l s e         {                 i   =   n   /   0 x 2 0 0 ;                 i   =   i   *   0 x 2 0 0 ;                 r e t u r n   i ;         } } D W O R D   I m a g e A l i g n m e n t ( i n t   n ) {         D W O R D   i ;         i f   ( n   %   0 x 1 0 0 0   ! =   0 )         {                 i   =   n   /   0 x 1 0 0 0   +   1 ;                 i   =   i   *   0 x 1 0 0 0 ;                 r e t u r n   i ;         }         e l s e         {                 i   =   n   /   0 x 1 0 0 0 ;                 i   =   i   *   0 x 1 0 0 0 ;                 r e t u r n   i ;         } } D W O R D   R v a T o F o a ( I N   L P S T R   P A T H , I N   D W O R D   r v a ) / / {         L P V O I D   F i l e B u f f e r   =   N U L L ;         L P V O I D   I m a g e B u f f e r   =   N U L L ;         D W O R D   F o a   =   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   =   N U L L ;         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 ;         F i l e T o F i l e B u f f e r ( P A T H ,   & F i l e B u f f e r ) ;         i f   ( ! F i l e B u f f e r )         {                 p r i n t f ( " F i l e - > F i l e B u f f e r " ) ;                 r e t u r n   0 ;         }         F i l e B u f f e r T o I m a g e B u f f e r ( F i l e B u f f e r ,   & I m a g e B u f f e r ) ;         i f   ( ! I m a g e B u f f e r )         {                 p r i n t f ( " F i l e B U f f e r - > I m a g e B u f f e r " ) ;                 r e t u r n   0 ;         }         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 ) I m a g e B u f f 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 ) I m a g e B u f f e r ;         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 S e c t i o n H e a d e r   =   ( P I M A G E _ S E C T I O N _ H E A D E R ) ( ( D W O R D ) p O p t i o n H e a d e r   +   p P E H e a d e r - > S i z e O f O p t i o n a l H e a d e r ) ;                 P I M A G E _ S E C T I O N _ H E A D E R   p t e m p 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 ;         P I M A G E _ S E C T I O N _ H E A D E R   p t e m p S e c t i o n H e a d e r 1   =   p S e c t i o n H e a d e r ;         f o r   ( i n t   i   =   0 ;   i   <   p P E H e a d e r - > N u m b e r O f S e c t i o n s ;   i + + ,   p t e m p S e c t i o n H e a d e r + + ) ;         / / p r i n t f ( " % x n " ,   F i l e A l i g n m e n t ( ( ( D W O R D ) p t e m p S e c t i o n H e a d e r   -   ( D W O R D ) I m a g e B u f f e r ) ) ) ;         i f   ( r v a   < =   F i l e A l i g n m e n t ( ( ( D W O R D ) p t e m p S e c t i o n H e a d e r   -   ( D W O R D ) I m a g e B u f f e r ) ) )         {                 F o a   =   r v a ;                 f r e e ( F i l e B u f f e r ) ;                 f r e e ( I m a g e B u f f e r ) ;                 r e t u r n   F o a ;         }         f o r   ( i n t   k   =   0 ;   k   <   p P E H e a d e r - > N u m b e r O f S e c t i o n s - 1 ;   k + + )         {                 i f   ( p t e m p S e c t i o n H e a d e r 1 - > V i r t u a l A d d r e s s   <   r v a   & &   r v a   <   ( p t e m p S e c t i o n H e a d e r 1   +   1 ) - > V i r t u a l A d d r e s s )                 {                         F o a   =   p t e m p S e c t i o n H e a d e r 1 - > P o i n t e r T o R a w D a t a   +   ( r v a   -   p t e m p S e c t i o n H e a d e r 1 - > V i r t u a l A d d r e s s ) ;                         f r e e ( F i l e B u f f e r ) ;                         f r e e ( I m a g e B u f f e r ) ;                         r e t u r n   F o a ;                 }                 i f   ( p t e m p S e c t i o n H e a d e r 1 - > V i r t u a l A d d r e s s   = =   r v a )                 {                         F o a   =   p t e m p S e c t i o n H e a d e r 1 - > P o i n t e r T o R a w D a t a ;                         f r e e ( F i l e B u f f e r ) ;                         f r e e ( I m a g e B u f f e r ) ;                         r e t u r n   F o a ;                 }                 p t e m p S e c t i o n H e a d e r 1 + + ;         }         i f   ( p t e m p S e c t i o n H e a d e r 1 - > V i r t u a l A d d r e s s   < =   r v a )         {                 F o a   =   p t e m p S e c t i o n H e a d e r 1 - > P o i n t e r T o R a w D a t a   +   ( r v a   -   p t e m p S e c t i o n H e a d e r 1 - > V i r t u a l A d d r e s s ) ;                 f r e e ( F i l e B u f f e r ) ;                 f r e e ( I m a g e B u f f e r ) ;                 r e t u r n   F o a ;         }         f r e e ( F i l e B u f f e r ) ;         f r e e ( I m a g e B u f f e r ) ;         r e t u r n   0 ; } D W O R D   F i l e T o F i l e B u f f e r ( I N   L P S T R   l p s z F i l e ,   O U T   L P V O I D *   F i l e B u f f e r ) {         F I L E *   p F i l e   =   N U L L ;         L P V O I D   p t e m p F i l e B u f f e r   =   N U L L ;         D W O R D   f i l e S i z e   =   0 ;         / /         p F i l e   =   f o p e n ( l p s z F i l e ,   " r b " ) ;         / /         i f   ( ! p F i l e )         {                 p r i n t f ( " " ) ;                 r e t u r n   0 ;         }         / / m a l l o c         f s e e k ( p F i l e ,   0 ,   S E E K _ E N D ) ;         f i l e S i z e   =   f t e l l ( p F i l e ) ;         f s e e k ( p F i l e ,   0 ,   S E E K _ S E T ) ;         p t e m p F i l e B u f f e r   =   m a l l o c ( f i l e S i z e ) ;         m e m s e t ( p t e m p F i l e B u f f e r , 0 , f i l e S i z e ) ;         / /         i f   ( ! p t e m p F i l e B u f f e r )         {                 p r i n t f ( " " ) ;                 f c l o s e ( p F i l e ) ;                 r e t u r n   0 ;         }         s i z e _ t   n   =   f r e a d ( p t e m p F i l e B u f f e r ,   f i l e S i z e ,   1 ,   p F i l e ) ;         / /         i f   ( ! n )         {                 p r i n t f ( " " ) ;                 f r e e ( p t e m p F i l e B u f f e r ) ;                 f c l o s e ( p F i l e ) ;
, : : . A P I :     G e t M o d u l e H a n d l e     G e t M o d u l e F i l e N a m e : . : F i l e B u f f e r T o I m a g e B u f f e r ( S r c M o u l e , & p I m a g e B u f f e r ) ; :                 r e t u r n   0 ;         }         * F i l e B u f f e r   =   p t e m p F i l e B u f f e r ;         p t e m p F i l e B u f f e r   =   N U L L ;         f c l o s e ( p F i l e ) ;         r e t u r n   f i l e S i z e ; } D W O R D   F i l e B u f f e r T o I m a g e B u f f e r ( I N   L P V O I D   p F i l e B u f f e r ,   O U T   L P V O I D *   p I m a g e B u f f e r ) {         L P V O I D   p 1 I m a g e B u f f e r   =   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   =   N U L L ;         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 D o s H e a d e r   =   ( P I M A G E _ D O S _ H E A D E R ) p F i l e B u f f e r ;         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 F i l e B u f f 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 S e c t i o n H e a d e r   =   ( P I M A G E _ S E C T I O N _ H E A D E R ) ( ( D W O R D ) p O p t i o n H e a d e r   +   p P E H e a d e r - > S i z e O f O p t i o n a l H e a d e r ) ;         p 1 I m a g e B u f f e r   =   m a l l o c ( p O p t i o n H e a d e r - > S i z e O f I m a g e ) ;         i f   ( ! p 1 I m a g e B u f f e r )         {                 p r i n t f ( " I m a g e B u f f e r " ) ;                 r e t u r n   0 ;         }         m e m s e t ( p 1 I m a g e B u f f e r   ,   0   ,   p O p t i o n H e a d e r - > S i z e O f I m a g e ) ;         m e m c p y ( p 1 I m a g e B u f f e r ,   p F i l e B u f f e r ,   p O p t i o n H e a d e r - > S i z e O f H e a d e r s ) ;         P I M A G E _ S E C T I O N _ H E A D E R   p t e m p 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 ;         f o r   ( i n t   k   =   0 ;   k   <   p P E H e a d e r - > N u m b e r O f S e c t i o n s ;   k + + )         {                 m e m c p y ( ( v o i d * ) ( ( D W O R D ) p 1 I m a g e B u f f e r +   p t e m p S e c t i o n H e a d e r - > V i r t u a l A d d r e s s ) ,   ( v o i d * ) ( ( D W O R D ) p F i l e B u f f e r   +   p t e m p S e c t i o n H e a d e r - > P o i n t e r T o R a w D a t a ) ,   p t e m p S e c t i o n H e a d e r - > S i z e O f R a w D a t a ) ;                 / / p r i n t f ( " % x n " ,   p t e m p S e c t i o n H e a d e r - > S i z e O f R a w D a t a ) ;                 p t e m p S e c t i o n H e a d e r + + ;           }         * p I m a g e B u f f e r   =   p 1 I m a g e B u f f e r ;         p t e m p S e c t i o n H e a d e r   =   N U L L ;         r e t u r n   p O p t i o n H e a d e r - > S i z e O f I m a g e ; } C H A R   p a t h [ M A X _ P A T H ] ; D W O R D   d w T e m p I m a g e B a s e S r c   =   N U L L ; H M O D U L E   h m = G e t M o d u l e H a n d l e ( N U L L ) ; G e t M o d u l e F i l e N a m e ( h m , p a t h , s i z e o f ( p a t h ) ) ; F i l e T o F i l e B u f f e r ( p a t h ,   & p z z F i l e B u f f e r ) ; f o r   ( D W O R D   i   =   1 ;   i   <   p P E H e a d e r - > N u m b e r O f S e c t i o n s ;   i + + ,   p S e c t i o n H e a d e r + + ) ;     / /       C H A R *   S r c M o u l e   =   ( C H A R * ) ( ( D W O R D ) p z z F i l e B u f f e r   +   p S e c t i o n H e a d e r - > P o i n t e r T o R a w D a t a ) ;         / / f o r ( k   =   0 ; k < p S e c t i o n H e a d e r - > S i z e O f R a w D a t a ; k + + ) {         S r c M o u l e [ k ]   =   S r c M o u l e [ k ]   ^   0 x F F ; } S T A R T U P I N F O   i e _ s i   =   { 0 } ;
, : C R E A T E _ S U S P E N D E D   ( ) A P I : C r e a t e P r o c e s s : A P I : Z w U n m a p V i e w O f S e c t i o n   w d m . h   I m a g e   B u f f e r 4 G B   I m a g e B a s e     S i z e O f I m a g e   w d m . h   w d k       h t t p s : / / d o c s . m i c r o s o f t . c o m / z h - c n / w i n d o w s - h a r d w a r e / d r i v e r s / d o w n l o a d - t h e - w d k n t d l l d l l , Z w U n m a p V i e w O f S e c t i o n 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 d l l , d l l , d l l ; d l l , d l l , d l l : h t t p s : / / g i t h u b . c o m / s m a l l z h o n g / y c p a c k : S T A R T U P I N F O   i e _ s i   =   { 0 } ; P R O C E S S _ I N F O R M A T I O N   i e _ p i ; T C H A R   S r c B u f f e r [ 2 5 6 ]   =   { 0 } ; s p r i n t f ( S r c B u f f e r , " % s " , p a t h ) ; i e _ s i . c b   =   s i z e o f ( i e _ s i ) ; C r e a t e P r o c e s s (                                         / /         N U L L ,         S r c B u f f e r ,         N U L L ,           N U L L ,           F A L S E ,           C R E A T E _ S U S P E N D E D ,           N U L L ,           N U L L ,           & i e _ s i ,           & i e _ p i           ) ; N T S T A T U S       Z w U n m a p V i e w O f S e c t i o n (         I N   H A N D L E     P r o c e s s H a n d l e ,         I N   P V O I D     B a s e A d d r e s s         ) ; p f n Z w U n m a p V i e w O f S e c t i o n   Z w U n m a p V i e w O f S e c t i o n   =   N U L L ; H M O D U L E   h M o d u l e   =   L o a d L i b r a r y ( " n t d l l . d l l " ) ; i f   ( h M o d u l e ) {         Z w U n m a p V i e w O f S e c t i o n   =   ( p f n Z w U n m a p V i e w O f S e c t i o n ) G e t P r o c A d d r e s s ( h M o d u l e ,   " Z w U n m a p V i e w O f S e c t i o n " ) ;         i f   ( Z w U n m a p V i e w O f S e c t i o n )         {                 i f   ( Z w U n m a p V i e w O f S e c t i o n ( ( u n s i g n e d   l o n g ) i e _ p i . h P r o c e s s ,   d w I m a g e B a s e S h e l l ) )               {   / /     I m a g e B a s e                         p r i n t f ( " Z w U n m a p V i e w O f S e c t i o n   s u c c e s s n " ) ;               }       }       F r e e L i b r a r y ( h M o d u l e ) ; } F A R P R O C   G e t P r o c A d d r e s s ( H M O D U L E   h M o d u l e ,   / /   D L L L P C S T R   l p P r o c N a m e   / /   ) ; F i r s t A D   =   V i r t u a l A l l o c E x ( i e _ p i . h P r o c e s s , ( L P V O I D ) p S r c O p t i o n H e a d e r - > I m a g e B a s e , p S r c O p t i o n H e a d e r - > S i z e O f I m a g 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 ) ; i f ( F i r s t A D   = =   N U L L ) {         i f ( p S r c 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 [ 5 ] . V i r t u a l A d d r e s s   = =   0   | |   p S r c 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 [ 5 ] . S i z e   = = 0 )         {                 M e s s a g e B o x ( 0 , " s h i b a i " , 0 , 0 ) ;                 r e t u r n ;         }         e l s e         {                 D W O R D   R V A _ D a t a ;                 W O R D   r e l o D a t a ;                 P W O R D   L o c a t i o n   =   N U L L ;                 D W O R D   N u m b e r O f R e l o c a t i o n   =   0 ;                 d w T e m p I m a g e B a s e S r c   =   p S r c O p t i o n H e a d e r - > I m a g e B a s e   +   0 x 5 0 0 0 0 ;                 D W O R D   f O A   =   R v a T o F o a ( p a t h , p S r c 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 [ 5 ] . V i r t u a l A d d r e s s ) ;                 P I M A G E _ B A S E _ R E L O C A T I O N   p R e l o c a t i o n D i r e c t o r y   =   ( P I M A G E _ B A S E _ R E L O C A T I O N ) ( ( D W O R D ) S r c M o u l e   +   f O A ) ;
, I m a g e B a s e , , , , , . : 0 x 4 0 0 0 0 0   , , , d l l , , I m a g e B a s e , , I m a g e B a s e , I m a g e B a s e , , :                     / /                 V i r t u a l A l l o c E x ( i e _ p i . h P r o c e s s ,   ( L P V O I D ) d w T e m p I m a g e B a s e S r c , p S r c O p t i o n H e a d e r - > S i z e O f I m a g 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 ) ;                 p S r c O p t i o n H e a d e r - > I m a g e B a s e   =   ( D W O R D ) d w T e m p I m a g e B a s e S r c ;                 W r i t e P r o c e s s M e m o r y ( i e _ p i . h P r o c e s s ,   ( L P V O I D ) d w T e m p I m a g e B a s e S r c ,   p I m a g e B u f f e r ,   p S r c O p t i o n H e a d e r - > S i z e O f I m a g e ,   N U L L ) ;                 w h i l e ( p R e l o c a t i o n D i r e c t o r y - > S i z e O f B l o c k   & &   p R e l o c a t i o n D i r e c t o r y - > V i r t u a l A d d r e s s ) {                                                         N u m b e r O f R e l o c a t i o n   =   ( p R e l o c a t i o n D i r e c t o r y - > S i z e O f B l o c k   -   8 ) / 2 ; / /                           L o c a t i o n   =   ( P W O R D ) ( ( D W O R D ) p R e l o c a t i o n D i r e c t o r y   +   8 ) ;   / /   8                         f o r ( D W O R D   i = 0 ; i < N u m b e r O f R e l o c a t i o n ; i + + ) {                                 i f ( L o c a t i o n [ i ]   > >   1 2   ! =   0 ) {   / /                                         / /   W O R D                                         r e l o D a t a   =   ( L o c a t i o n [ i ]   &   0 x F F F ) ;   / /   4   1 2                                         R V A _ D a t a   =   p R e l o c a t i o n D i r e c t o r y - > V i r t u a l A d d r e s s   +   r e l o D a t a ;   / / R V A                                         f O A   =   R v a T o F o a ( S r c M o u l e , R V A _ D a t a ) ;                                         * ( P D W O R D ) ( ( D W O R D ) S r c M o u l e + ( D W O R D ) f O A )   =   * ( P D W O R D ) ( ( D W O R D ) S r c M o u l e + ( D W O R D ) f O A )   +   d w T e m p I m a g e B a s e S r c   -   p S r c O p t i o n H e a d e r - > I m a g e B a s e ;           / /     -   O r i g i n   I m a g e B a s e                                                         }                         }                         p R e l o c a t i o n D i r e c t o r y   =   ( P I M A G E _ B A S E _ R E L O C A T I O N ) ( ( D W O R D ) p R e l o c a t i o n D i r e c t o r y   +   ( D W O R D ) p R e l o c a t i o n D i r e c t o r y - > S i z e O f B l o c k ) ;   / / f o r                   }         } } e l s e {         W r i t e P r o c e s s M e m o r y ( i e _ p i . h P r o c e s s ,   ( L P V O I D ) p S r c O p t i o n H e a d e r - > I m a g e B a s e ,   p I m a g e B u f f e r , p S r c O p t i o n H e a d e r - > S i z e O f I m a g e , N U L L ) ; }  
  : : c m d / / C o n t e x t C O N T E X T   c o n t e x t ; c o n t e x t . C o n t e x t F l a g s   =   C O N T E X T _ F U L L ; B O O L   o k   =   : : G e t T h r e a d C o n t e x t ( i e _ p i . h T h r e a d , & c o n t e x t ) ; C H A R *   b a s e A d d r e s s   =   ( C H A R * ) c o n t e x t . E b x + 8 ; D W O R D   d w E n t r y P o i n t   =   p S r c O p t i o n H e a d e r - > A d d r e s s O f E n t r y P o i n t ; c o n t e x t . E a x   =   d w E n t r y P o i n t + ( D W O R D ) d w B u f f e r I m a g e B a s e S r c ; D W O R D   t h e O e p   =   c o n t e x t . E b x   +   8 ; D W O R D   d w B y t e s = 0 ; W r i t e P r o c e s s M e m o r y ( i e _ p i . h P r o c e s s ,   & t h e O e p ,   & d w B u f f e r I m a g e B a s e S r c , 4 ,   & d w B y t e s ) ; B O O L   W r i t e P r o c e s s M e m o r y ( H A N D L E   h P r o c e s s , L P V O I D   l p B a s e A d d r e s s , L P V O I D   l p B u f f e r , D W O R D   n S i z e , L P D W O R D   l p N u m b e r O f B y t e s W r i t t e n ) ; / / S e t T h r e a d C o n t e x t ( i e _ p i . h T h r e a d ,   & c o n t e x t ) ; / / 线 R e s u m e T h r e a d ( i e _ p i . h T h r e a d ) ; E x i t P r o c e s s ( 0 ) ; r e t u r n ;
 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则