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.
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 implementationBlockNode 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
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 detailsFactory 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 restrictionsCallback 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
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.