
    j                        d dl mZ d dlmZ erd dlmZmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  G d d          ZdS )    )annotations)TYPE_CHECKING)AnalysisMethodAnalysis)DEXClassDefItem)logger)	highlight)TerminalFormatter)get_lexer_by_name)Token)	decompilec                  N    e Zd ZddZddZddZddZddZddZddZ	ddZ
dS )DecompilerDADvmr   vmxr   returnNonec                "    || _         || _        dS )a  
        Decompiler wrapper for DAD: **D**AD is **A** **D**ecompiler
        DAD is the androguard internal decompiler.

        This Method does not use the :class:`~androguard.decompiler.decompile.DvMachine` but
        creates :class:`~androguard.decompiler.decompile.DvClass` and
        :class:`~androguard.decompiler.decompile.DvMethod` on demand.

        :param androguard.core.bytecodes.DEX vm: `DEX` object
        :param androguard.core.analysis.analysis.Analysis vmx: `Analysis` object
        N)r   r   )selfr   r   s      g/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/androguard/decompiler/decompiler.py__init__zDecompilerDAD.__init__'   s         mr   strc                    | j                             |          }t          j        |          }|                                 |                                S N)r   
get_methodr   DvMethodprocess
get_sourcer   r   mxzs       r   get_source_methodzDecompilerDAD.get_source_method6   sB    X  ##r""			||~~r   dictc                    | j                             |          }t          j        |          }|                    d           |                                S NT)doAST)r   r   r   r   r    get_astr"   s       r   get_ast_methodzDecompilerDAD.get_ast_method<   sI    X  ##r""				yy{{r   c                    |                      |          }t          dd          }t                      }t          |||          }t	          |           d S NjavaT)stripall)r%   r   r   r
   print)r   r   resultlexer	formatters        r   display_sourcezDecompilerDAD.display_sourceB   sR    ''**!&4888%''	65)44fr   _classr   c                    t          j        || j                  }|                                 |                                S r   )r   DvClassr   r    r!   r   r5   cs      r   get_source_classzDecompilerDAD.get_source_classJ   s1    fdh//			||~~r   c                    t          j        || j                  }|                    d           |                                S r(   )r   r7   r   r    r*   r8   s      r   get_ast_classzDecompilerDAD.get_ast_classO   s8    fdh//				yy{{r   list[tuple[str, list]]c                    t          j        || j                  }|                                 |                                }|S r   )r   r7   r   r    get_source_ext)r   r5   r9   r1   s       r   get_source_class_extz"DecompilerDAD.get_source_class_extT   s;     fdh//			!!##r   c                    |                      |          }t          dd          }t                      }t          |||          }t	          |           d S r-   )r:   r   r   r
   r0   )r   r5   r1   r2   r3   s        r   display_allzDecompilerDAD.display_all^   sR    &&v..!&4888%''	65)44fr   N)r   r   r   r   r   r   )r   r   r   r   )r   r   r   r&   )r   r   r   r   )r5   r   r   r   )r5   r   r   r&   )r5   r   r   r=   )r5   r   r   r   )__name__
__module____qualname__r   r%   r+   r4   r:   r<   r@   rB    r   r   r   r   &   s                       
   
        r   r   N)
__future__r   typingr   !androguard.core.analysis.analysisr   r   androguard.core.dexr   r   logurur	   pygmentsr
   pygments.formattersr   pygments.lexersr   pygments.tokenr   androguard.decompilerr   r   rF   r   r   <module>rQ      s  * # " " " " "             6JJJJJJJJ55555555             1 1 1 1 1 1 - - - - - -             + + + + + +> > > > > > > > > >r   