KUNAI Static Analyzer
Kunai is a library for doing static binary analysis of Dalvik.
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
KUNAI::DEX::ClassAnalysis Class Reference

Specification of the class analysis, this class contains fields, strings, methods... More...

#include <analysis.hpp>

Public Types

using classxref = std::unordered_map< ClassAnalysis *, std::set< std::tuple< TYPES::REF_TYPE, MethodAnalysis *, std::uint64_t > > >
 

Public Member Functions

 ClassAnalysis (std::variant< ClassDef *, ExternalClass * > class_def)
 
void add_method (MethodAnalysis *method_analysis)
 add a method to the current class
 
size_t get_nb_methods () const
 
size_t get_nb_fields () const
 
std::variant< ClassDef *, ExternalClass * > get_class_definition () const
 Get the class definition object.
 
bool is_class_external () const
 Is the current class an external class?
 
std::string & extends () const
 
std::string & name () const
 
std::vector< DVMClass * > & implements ()
 Return a vector of implemented interfaces, in the case of external class raise exception.
 
const std::unordered_map< std::string, MethodAnalysis * > & get_methods () const
 get a constant reference to the methods
 
std::unordered_map< std::string, MethodAnalysis * > & get_methods ()
 get a reference to the methods
 
const std::unordered_map< EncodedField *, std::unique_ptr< FieldAnalysis > > & get_fields () const
 
std::unordered_map< EncodedField *, std::unique_ptr< FieldAnalysis > > & get_fields ()
 
MethodAnalysisget_method_analysis (std::variant< EncodedMethod *, ExternalMethod * > method)
 Given an Encoded or ExternalMethod returns a MethodAnalysis pointer.
 
FieldAnalysisget_field_analysis (EncodedField *field)
 Given an encoded field return a FieldAnalysis pointer.
 
void add_field_xref_read (MethodAnalysis *method, ClassAnalysis *classobj, EncodedField *field, std::uint64_t off)
 
void add_field_xref_write (MethodAnalysis *method, ClassAnalysis *classobj, EncodedField *field, std::uint64_t off)
 
void add_method_xref_to (MethodAnalysis *method1, ClassAnalysis *classobj, MethodAnalysis *method2, std::uint64_t off)
 
void add_method_xref_from (MethodAnalysis *method1, ClassAnalysis *classobj, MethodAnalysis *method2, std::uint64_t off)
 
void add_xref_to (TYPES::REF_TYPE ref_kind, ClassAnalysis *classobj, MethodAnalysis *methodobj, std::uint64_t offset)
 
void add_xref_from (TYPES::REF_TYPE ref_kind, ClassAnalysis *classobj, MethodAnalysis *methodobj, std::uint64_t offset)
 
void add_xref_new_instance (MethodAnalysis *methodobj, std::uint64_t offset)
 
void add_xref_const_class (MethodAnalysis *methodobj, std::uint64_t offset)
 
const classxref & get_xrefto () const
 
classxref & get_xrefto ()
 
const classxref & get_xreffrom () const
 
classxref & get_xreffrom ()
 
const std::vector< std::pair< MethodAnalysis *, std::uint64_t > > get_xrefnewinstance () const
 
std::vector< std::pair< MethodAnalysis *, std::uint64_t > > get_xrefnewinstance ()
 
const std::vector< std::pair< MethodAnalysis *, std::uint64_t > > get_xrefconstclass () const
 
std::vector< std::pair< MethodAnalysis *, std::uint64_t > > get_xrefconstclass ()
 

Detailed Description

Specification of the class analysis, this class contains fields, strings, methods...

Member Function Documentation

◆ add_method()

void KUNAI::DEX::ClassAnalysis::add_method ( MethodAnalysis method_analysis)

add a method to the current class

Parameters
method_analysismethod to include in the class

◆ get_class_definition()

std::variant< ClassDef *, ExternalClass * > KUNAI::DEX::ClassAnalysis::get_class_definition ( ) const
inline

Get the class definition object.

Returns
ClassDef* or ExternalClass* object

◆ get_field_analysis()

FieldAnalysis * KUNAI::DEX::ClassAnalysis::get_field_analysis ( EncodedField field)

Given an encoded field return a FieldAnalysis pointer.

Parameters
fieldfield to look for
Returns
FieldAnalysis pointer

◆ get_method_analysis()

MethodAnalysis * KUNAI::DEX::ClassAnalysis::get_method_analysis ( std::variant< EncodedMethod *, ExternalMethod * >  method)

Given an Encoded or ExternalMethod returns a MethodAnalysis pointer.

Parameters
methodmethod to look for
Returns
MethodAnalysis pointer

◆ get_methods() [1/2]

std::unordered_map< std::string, MethodAnalysis * > & KUNAI::DEX::ClassAnalysis::get_methods ( )
inline

get a reference to the methods

Returns
reference to methods

◆ get_methods() [2/2]

const std::unordered_map< std::string, MethodAnalysis * > & KUNAI::DEX::ClassAnalysis::get_methods ( ) const
inline

get a constant reference to the methods

Returns
constant reference to methods

◆ implements()

std::vector< DVMClass * > & KUNAI::DEX::ClassAnalysis::implements ( )

Return a vector of implemented interfaces, in the case of external class raise exception.

Returns
implemented interfaces

◆ is_class_external()

bool KUNAI::DEX::ClassAnalysis::is_class_external ( ) const
inline

Is the current class an external class?

Returns
class is external

The documentation for this class was generated from the following file: