All Classes and Interfaces

Class
Description
 
Traverser handlers are responsible for deducing how blocks should be searched within a path whilst searching for duplicate 'finally' instructions.
Sealed class
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Store resources id to name mapping
Android resources specific handlers
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Type update callback to set same type for args from list.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Storage for different attribute types:
1.
 
 
Attribute types enumeration, uses generic type for omit cast after 'AttributeStorage.get' method
 
 
 
Disable deobfuscation for nodes: - with 'DONT_RENAME' flag - already renamed
 
Deprecated.
Base class for JadxPluginOptions implementation
 
 
 
 
 
 
 
 
 
 
 
 
 
BlockNode set implementation based on BitSet.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A centrality state is an object which helps track how instructions can be skipped.
 
 
 
 
 
 
 
 
 
 
Class node in classpath graph
 
Classes hierarchy graph with methods additional info
Method node in classpath graph.
Classes list for import into classpath graph
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Utility class for convert '.arsc' to simple text file with mapping id to resource name
Utility class for convert dex or jar to jadx classes set (.jcst)
 
Show `invoke-custom` similar to polymorphic call
 
 
 
 
Remove primitives boxing i.e convert 'Integer.valueOf(1)' to '1'
Check invariants and information consistency for blocks, instructions, registers, SSA variables.
 
 
 
 
 
 
 
 
Use these methods only for debug purpose.
List of variables to be declared at region start.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Build dominator tree based on the algorithm described in paper: Cooper, Keith D.; Harvey, Timothy J; Kennedy, Ken (2001).
 
 
 
 
 
 
 
 
 
 
 
 
 
Original source code can be found here
 
 
 
 
 
 
 
 
 
 
 
 
Provides a list of all top level domains, so we can exclude them from deobfuscation.
Lazy load TLD set
This attribute is set on the new synthetic node that BlockExceptionHandler creates at the bottom of certain try regions.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A state used by the traverser controller for storing information regarding an entire path to take during traversal.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Utility interface to simplify merging several rename conditions to build IRenameCondition instance with CombineDeobfConditions.combine(IDeobfCondition...).
 
 
 
Visitor interface for traverse dex tree
 
 
 
 
Common interface for FieldInfo and FieldNode
 
 
 
 
 
 
 
 
 
Jadx attribute: custom data container, can be added to most jadx nodes.
Marker interface for attribute type.
Marker interface for jadx config objects
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Simple immutable list implementation Warning: some methods not implemented!
 
 
 
 
 
 
 
 
 
 
 
Instruction argument.
 
Lightweight replacement for BlockNode in regions.
 
 
 
 
 
 
 
 
 
 
Helper class for correct instructions removing, can be used while iterating over instructions list
 
 
 
 
 
 
 
 
 
 
Information for raw invoke-custom instruction.
Output will be formatted as polymorphic call with equivalent semantic Contains two parts: - resolve: treated as additional invoke insn (uses only constant args) - invoke: call of resolved method (base for this invoke)
See CustomRawCall class for build details
 
 
 
 
 
 
 
 
 
 
 
 
 
Factory for ResContainer.
 
 
 
Provides the resource table parser instance for specific resource table file format.
"Sequence consumer" allows getting count of elements available
Settings page customization
 
 
Schedule and execute tasks combined into stages with parallel or sequential execution (similar to the fork-join pattern).
 
 
Information to restrict types by applying constraints (or boundaries)
'Dynamic' type bound allows to use requested and not yet applied types from TypeUpdateInfo for more precise restrictions
 
 
Callback to process and modify type update result
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Loading plugins from current classpath
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Jadx API usage example:
 
 
Typed and extendable enumeration of event types
 
Handle events sending and receiving
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Base interface for all jadx plugins
To create new plugin implement this interface and add to resources a META-INF/services/jadx.api.plugins.JadxPlugin file with a full name of your class.
 
 
 
 
 
 
 
 
 
Runtime plugin data.
 
 
 
 
 
 
 
 
 
 
 
 
 
Annotation for describe dependencies of jadx visitors
 
Custom and simple zip parser to fight tampering.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Escape input from untrusted source before pass to logger.
 
 
 
 
 
 
Load and store Android Manifest attributes specification
 
 
This visitor is responsible for extracting finally blocks from duplicated instructions located within the ends of each branch leading to the terminating point of all code paths.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Calls of method should be replaced by provided method (used for synthetic methods redirect)
 
 
 
Set of known type variables at current method
 
 
Visitor for modify method instructions (remove, replace, process exception handlers)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Place passes with visitors dependencies before others.
Sort to get inverted dependencies i.e.
 
 
 
 
 
 
 
 
 
 
 
 
 
Prepare instructions for code generation pass, most of this modification breaks register dependencies, so this pass must be just before CodeGen.
 
 
 
 
 
 
 
 
Extract blocks to separate try/catch region
 
 
 
 
 
 
 
 
 
 
 
Region created based on parent instruction
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Duplicate code to resolve java jsr/ret.
 
 
 
 
 
 
Resources original name source (for deobfuscation)
 
 
 
 
 
 
 
 
 
 
Remove unnecessary return instructions for void methods
 
 
 
 
Supported string sanitize/escape types
 
 
 
Select best class from list of classes with same full name Current implementation: use class with source file as 'classesN.dex' where N is minimal
 
 
 
 
 
 
 
 
CodeWriter implementation without meta information support
 
 
 
Method details build from MethodInfo.
 
 
 
Use single directory for all jadx files
 
 
 
 
 
 
 
 
Utility methods to assemble smali to in-memory buffer.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Add common 'break' if 'break' or exit insn ('return', 'throw', 'continue') found in all branches.
For every 'switch' region run new instance of provided 'switch' visitor.
 
 
 
A switch(string) java code will be compiled to two switches in class code.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Simple template engine Syntax for replace variable with value: '{{variable}}' If value sanitizer is provided: value will be sanitized by default, to skip sanitize add '!!' before variable name: '{{!!variable}}'
 
 
 
 
 
 
Convert 'if' to ternary operation
 
 
 
A state used by the traverser controller.
Tracks the comparison state of a given block.
 
 
Responsible for determining if two distinct subgraphs are the same within a graph by comparing all blocks and their instructions.
 
 
 
 
 
 
A map containing all edges within a try catch block as the key and all blocks that the respective edge can traverse to within the "scope" of that edge (relative to the entire try / catch).
 
 
Represents an edge between two blocks representing an exit out of a try body.
A map which stores the information of how try edges correlate with each other.
 
 
Allow ignoring down casts (return arg type instead cast type) Such casts will be removed later.
 
Dynamic bound for instance field get of generic type.
Special dynamic bound for invoke with generics.
Special dynamic bound for invoke with generics.
 
 
 
 
 
 
Slow and memory consuming multi-variable type search algorithm.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Variable info
Variable reference by position of VarNode in code metadata.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
This class defines the basic XML character properties.
 
 
 
 
Jadx wrapper to provide custom zip parser (JadxZipParser) with fallback to default Java implementation.
 
 
Deprecated.