All Classes and Interfaces
Class
Description
The
AbortOperator defines whether the analysis should terminate upon encountering a
specific abstract state.An
AbstractState contains information about the program state.This is a base class for
Waitlists parametrized by the carrier CollectionT.Access flags for classes, fields, methods, parameters, and modules.
This
ClassVisitor fixes the access modifiers of all classes and class members that are
referenced by the classes that it visits.Utility methods for working with access flags.
This utility class allows for injecting multiple static method invocations in multiple target
methods.
This sample application illustrates how to modify bytecode with the ProGuardCORE API.
This
AttributeVisitor lets a given AnnotationVisitor visit all Annotation
instances of the attributes it visits.This
ClassVisitor, MemberVisitor, RecordComponentInfoVisitor and AttributeVisitor lets a given AttributeVisitor visit all Attribute instances of the
program classes, program class members, or code attributes, respectively, that it visits.This
BootstrapMethodInfoVisitor lets a given ConstantVisitor visit all constant
pool entries of the bootstrap methods it visits.This
AttributeVisitor lets a given BootstrapMethodInfoVisitor visit all bootstrap
method instances of the BootstrapMethodsAttribute instances it visits.This
ClassPoolVisitor lets a given ClassVisitor visit all Clazz instances of the
class pools it visits.This
ClassVisitor lets a given ConstantVisitor visit all constant pool entries of
the program classes it visits.This KotlinMetadataVisitor lets a given KotlinConstructorVisitor visit all constructors of
visited KotlinMetadata.
This
AttributeVisitor and AnnotationVisitor lets a given ElementValueVisitor visit all ElementValue instances of the attributes or annotations
that it visits.This
KotlinMetadataVisitor lets a given KotlinEnumEntryVisitor visit all enum
entries of visited KotlinClassKindMetadata.This
AttributeVisitor lets a given ExceptionInfoVisitor visit all exceptions
instances of the CodeAttribute instances it visits.This
AttributeVisitor lets a given ExportsInfoVisitor visit all ExportsInfo instances of the ModuleAttribute instances it visits.This KotlinMetadataVisitor lets a given KotlinFunctionVisitor visit all functions of visited
KotlinMetadata.
This
AttributeVisitor lets a given InnerClassesInfoVisitor visit all InnerClassesInfo instances of the InnerClassesAttribute instances it visits.This
AttributeVisitor lets a given InstructionVisitor visit all Instruction
instances of the CodeAttribute instances it visits.This visitor allows a delegate to visit all arguments of a
KotlinAnnotation.This
AttributeVisitor lets a given LineNumberInfoVisitor visit all line numbers
of the LineNumberTableAttribute instances it visits.This
ClassVisitor lets a given MemberVisitor visit all Member instances of the
classes it visits.This
AttributeVisitor lets a given OpensInfoVisitor visit all OpensInfo
instances of the ModuleAttribute instances it visits.This
MemberVisitor lets a given parameter visitor visit all the parameters of the methods
that it visits.The
AllProcessableVisitor lets a given ProcessableVisitor visit all Processables and any nested processables.This KotlinMetadataVisitor lets a given KotlinPropertyVisitor visit all properties (regular and
delegated) of visited KotlinDeclarationContainerMetadata.
This
AttributeVisitor lets a given ProvidesInfoVisitor visit all ProvidesInfo instances of the ModuleAttribute instances it visits.This
AttributeVisitor lets a given RecordComponentInfoVisitor visit all RecordComponentInfo instances of the RecordAttribute instances it visits.This
AttributeVisitor lets a given RequiresInfoVisitor visit all RequiresInfo instances of the ModuleAttribute instances it visits.This KotlinMetadataVisitor visits all ValueParameters that it finds down the tree of the visit
Kotlin Metadata.
A class wrapping values calculated during an analysis.
Factory methods to create
AnalyzedObject.This sample application illustrates how to perform taint analysis with the ProGuard API.
This
StringMatcher tests whether strings match both given StringMatcher
instances.This
StringFunction tests whether the first given StringFunction returns null,
returning the result of the latter function if so, or null otherwise.Android-related constants.
This
StringFunction tests whether the first given StringFunction returns not
null, returning the result of the latter function if so, or null otherwise.Representation of an annotation.
This
AnnotationVisitor adds all annotations that it visits to the given target annotation
element value, target annotation attribute, or target parameter annotation attribute.This
Attribute represents an annotation default attribute.This
ElementValue represents an annotation element value.This
Attribute represents an annotations attribute.This class can add annotations to a given annotations attribute.
This
AnnotationVisitor delegates all visits to a given ClassVisitor.This
AnnotationVisitor delegates all visits to a given MemberVisitor.This
AnnotationVisitor delegates its visits to another given AnnotationVisitor,
but only when the visited annotation has a type that matches a given regular expression.This interface specifies the methods for a visitor of
Annotation instances.This
Constant represents a method reference constant in the constant pool.This sample application illustrates how to modify bytecode with the ProGuardCORE API.
This
ElementValue represents an array element value.Represent an Array expression
Exception thrown when the index to access an array is known to be out of bound for the array.
This class finds sequences of instructions that correspond to primitive array initializations.
This
ClassVisitor replaces array initialization instructions with optimized primitive
array constants.A
Model to track array values.This
ReferenceValue represents a partially evaluated array.This identified value factory creates array reference values that also represent their elements,
in as far as possible.
This class contains utility methods operating on arrays.
Represent an Assign statement
A visitor of grammar and signature AST nodes, in the style of the visitor design pattern.
This abstract class represents an attribute that is attached to a class, a class member, or a
code attribute.
This
AttributeVisitor adds all attributes that it visits to the given target class, class
member, or attribute.This AttributeVisitor lets a given ConstantVisitor visit all constants of the constant value
attributes it visits.
This
AttributeVisitor counts the number of attributes that have been visited.This
AttributeVisitor delegates its visits another AttributeVisitor, but only
when the visited attribute has a name that that matches a given regular expression.This
AttributeVisitor delegates its visits to another given AttributeVisitor, but
only when the visited attribute has the proper processing flags.This class can add and delete attributes to and from classes, fields, methods, and code
attributes.
This
ClassVisitor sorts the attributes of the classes that it visits.This
AttributeVisitor delegates to a given ClassVisitor.This interface specifies the methods for a visitor of
Attribute instances.Generic interface for the BAM cache, where the blocks represent a function identified with a
SignatureT.A
ConfigurableProgramAnalysis for inter-procedural analysis using block abstraction
memoization as described in , which is
defined by a domain-dependent CpaWithBamOperators that adds three operators: reduce,
expand, and rebuild.If the usage of an
AbstractState depends on the specific BAM cache entry it belongs to,
it should implement BamLocationDependent to link it to its source reached set.This class wraps a
JvmMemoryLocation adding information on its program location and
source reached set.This
TransferRelation extends an analysis inter-procedurally.Utility class for Base64 encoding.
Parent class of
LookupSwitchStmt and TableSwitchStmtThis
BranchUnit remembers the branch unit commands that are invoked on it.Basic implementation of
HierarchyProvider, walking the class pools every time the
sub-classes of a class are needed.This
InvocationUnit sets up the variables for entering a method, and it updates the stack
for the invocation of a class member, using simple values.A minimal implementation of
MethodInfo.This ValueFactory provides methods to create and reuse IntegerValue instances that have known
ranges.
This class provides methods to create and reuse Value instances.
Represent a Binop expression, value = op1 vt op2
A block abstraction is a summary of the analysis of a procedure call, represented by the set of
reached abstract states and a waitlist of states that still need to be analyzed.
This
ConstantVisitor and BootstrapMethodInfoVisitor travels from any invoke
dynamic constants or bootstrap method info entries that it visits to their bootstrap method
handle constants, and applies a given constant visitor.Representation of a bootstrap method.
This
BootstrapMethodInfoVisitor adds all bootstrap methods that it visits to the given
target bootstrap methods attribute.This interface specifies the methods for a visitor of
BootstrapMethodInfo instances.This
ConstantVisitor remaps all possible indices of bootstrap methods of the constants
that it visits, based on a given index map.This
Attribute represents a bootstrap methods attribute.This
BootstrapMethodInfoVisitor adds all bootstrap methods that it visits to the given
target class, creating a bootstrap methods attribute if necessary.This class can add/remove bootstrap methods to/from a given bootstrap methods attribute.
This
ClassVisitor removes all unused entries from the bootstrap method attribute.This
ClassVisitor delegates its visits to one of two other given ClassVisitor
instances, depending on whether they have any subclasses or not.This interface describes an instruction that branches to a given offset in the code.
This
AttributeVisitor finds all instruction offsets, branch targets, and exception
targets in the CodeAttribute instances that it visits.This interface defines methods to handle branches and returns from methods.
This
MemberVisitor fixes all inappropriate bridge access flags of the program methods
that it visits, checking whether the methods to which they bridge have the same name.SignatureParser which caches the parsed out ASTs.Represents a method call.
Information about callable references.
This interface must be implemented by edges representing a procedure call.
Collection of all
Calls in a program, optimized for retrieval of incoming and outgoing
edges for any method in constant time.Generic utilities to traverse the call graph.
This handler is invoked by the
CallResolver whenever new method calls have been resolved
in the code.Collects all method invocations inside the analyzed methods.
Utility methods for call resolution.
This
DataEntryWriter delegates to a given DataEntryWriter, or failing that, to
another given DataEntryWriter.* @see VT#CAST
Representation of a 'catch' annotation target.
This abstract class represents a partially evaluated Category 1 value.
This abstract class represents a partially evaluated Category 2 value.
Cfa<CfaNodeT extends CfaNode<CfaEdgeT,SignatureT>,CfaEdgeT extends CfaEdge<CfaNodeT>,SignatureT extends Signature>
An edge for
Cfa parametrized by its nodes
CfaNodeT.A node for
Cfa parametrized by its edges CfaEdgeT.This is a util class for creating
Cfas.TODO DOC
A circular buffer over the primitive integer type.
This
ClassVisitor delegates its visits to another given ClassVisitor, but only
when the visited class has the proper access flags.This editor allows to build or extend classes (ProgramClass instances).
This functional interface provides a code attribute composer to its implementation.
This
ClassVisitor removes all processing information of the classes it visits.This
ClassVisitor collects the classes that it visits in the given collection.This
Constant represents a class constant in the constant pool.This ClassVisitor delegates all visits to another given visitor, but only if the visited class
contains the specified class constant.
Internal names and descriptors of common classes, fields, and methods from the Java runtime.
This
ConstantValueFactory creates java.lang.Class ReferenceValue
instances that correspond to specified constant pool entries.This
ClassVisitor counts the number of classes that has been visited.This
DataEntryWriter finds received class entries in the given class pool and writes them
out to the given data entry writer.This class can add interfaces and class members to a given class.
This
ClassVisitor sorts the various elements of the classes that it visits: interfaces,
constants, fields, methods, and attributes.This
ElementValue represents a class element value.Typical sizes, counts, and lengths for elements in class files.
This
ClassVisitor collects the feature names of the classes that it visits in the
given collection.This
DataEntryReader delegates to one of two other DataEntryReader instances,
depending on the extension of the data entry.This
ClassVisitor lets a given ClassVisitor optionally travel to the visited
class, its superclass, its interfaces, and its subclasses.This
ClassVisitor initializes the class hierarchy and references of all classes that it
visits.This class checks the assumption: All functions need a JVM signature
Executor for the
ClassLoaderModel.Builder for
ClassLoaderModelExecutor.This
DataEntryWriter writes a class mapping to the given data entry, used for debugging
of the configuration.Container class for a pair of class + member.
This
ClassVisitor sorts the class members of the classes that it visits.A
Model to track specific Clazz constants.Executor for the
ClassModel.Builder for
ClassModelExecutor.A signature/descriptor visitor that adds all class names into a given collection.
This
ClassVisitor collects the names of the classes that it visits in the given
collection.This
ClassVisitor delegates its visits to another given ClassVisitor, but only
when the visited class has a name that matches a given regular expression.This
StringParser can create StringMatcher instances for regular expressions
matching internal class names (or descriptors containing class names).This class represents a class path, as a list of ClassPathEntry objects.
DataEntry implementation which loads an input stream from the classpath of the running
VM.This class represents an entry from a class path: an apk, a jar, an aar, a war, a zip, an ear, or
a directory.
This is a set of
Clazz instances.A
ClassLoader that can load classes from a ProGuardCORE classpool.This
ClassPoolVisitor and ClassVisitor remembers the ClassPool instances
that it visits and applies the given ClassPoolVisitor to the most recently remembered
one, every time it visits a Clazz instance.This StringFunction transforms class names to feature names, based on a given class pool.
This
ClassVisitor collects all the classes it visits in a given class pool.This
ClassVisitor removes all the classes it visits from a given class pool.This interface specifies the methods for a visitor of
ClassPool instances.This
ClassVisitor delegates its visits to one of two ClassVisitor instances,
depending on whether the name of the visited class file is present in a given ClassPool
or not.This
ClassVisitor prints out the complete internal structure of the classes it visits.This
ClassVisitor delegates its visits to another given ClassVisitor, but only
when the visited class has the proper processing flags.Delegates all class visits to another given visitor, depending on if the given predicate passes
or not.
This
DataEntryReader applies a given ClassVisitor to the class definitions that
it reads.This
ClassVisitor fixes references of constant pool entries, fields, methods, attributes
and kotlin metadata to classes whose names have changed.This interface provides an abstraction on how a
Member should be renamed when its
descriptor need to be updated.This
ClassVisitor initializes the references of all classes that it visits.This
ClassVisitor renames the class names and class member names of the classes it
visits.Represents the signature of a class without any member information.
Parser for class signature grammar, defined to be closely matching the grammar definition for
ease of maintenance.
This ClassPoolVisitor and ClassVisitor fills out the subclasses of all classes (in the class
pools) that it visits.
This
ClassVisitor initializes the superclass hierarchy of all classes that it visits.Utility methods for:
Converting between internal and external representations of names and descriptions
Operation on
Clazz
This
ClassVisitor delegates its visits to program classes to another given ClassVisitor, but only when the class version number of the visited program class lies in a
given range.This
ClassVisitor sets the version number of the program classes that it visits.This utility class renders
Clazz objects into a more human-readable format.This interface specifies the methods for a visitor of
Clazz instances.This interface provides access to the fundamental properties of a Java class.
Clean unused
LabelStmtThis
Attribute represents a code attribute.This
AttributeVisitor accumulates instructions, exceptions and line numbers, and then
adds them to a method or copies them into code attributes that it visits.This
AttributeVisitor accumulates specified changes to code, and then applies these
accumulated changes to the code attributes that it visits.This pseudo-instruction represents a label that marks an instruction offset, for use in the
context of the code attribute editor only.
This
AttributeVisitor resets it CodeAttributeEditor whenever it visits a code
attribute.This
AttributeVisitor lets a given MemberVisitor visit all methods whose code
attribute is visited.This utility class allows for injecting a method invocation instruction, optionally with
arguments modeled by instances of classes implementing the
InjectedArgument interface, to
the specified target method at an offset determined by the implementation of the InjectStrategy interface.Represents a unique location in the bytecode.
This
AttributeVisitor adds preverification information (for Java Micro Edition or for
Java 6 or higher) to the code attributes that it visits.This AttributeVisitor inlines local subroutines (jsr/ret) in the code attributes that it visits.
This matcher tests whether strings match with a String in a given Set.
This
StringParser can create a CollectionMatcher instance for regular
expressions.Wrapper class containing parser combinators.
This
AttributeVisitor accumulates instructions, exceptions and line numbers, in a compact
and fluent style, and then adds them to a method or copies them into code attributes that it
visits.This
IntegerValue represents the result of a comparisons of two scalar values.This
DoubleValue represents the result of a binary operation on two double values.This
FloatValue represents the result of a binary operation on two float values.This
IntegerValue represents the result of a binary operation on two integer values.This
LongValue represents the result of a binary operation on two long values.This
StringFunction returns the concatenated transformed strings of two given StringFunction instances.This
ClassVisitor lets a given ClassVisitor travel to the first concrete
subclasses down in its hierarchy of abstract classes and concrete classes.ConfigurableProgramAnalysis consists of a TransferRelation, MergeOperator, StopOperator, and PrecisionAdjustment.This abstract class represents an entry in the constant pool of a class.
Represent a constant, number/string/type
This
ConstantVisitor adds all constants that it visits to the constant pool of a given
target class.This
ConstantVisitor counts the number of constants that have been visited.This
ElementValue represents a constant element value.This
Instruction represents an instruction that refers to an entry in the constant pool.This
ConstantVisitor is used for field operations and the instanceOf predicate.This
StringMatcher matches any string or no string at all.This class can add constant pool entries to a given class.
This
ClassVisitor remaps all possible references to constant pool entries of the classes
that it visits, based on a given index map.This
ClassVisitor removes all unused entries from the constant pool.This
ClassVisitor sorts the constant pool entries of the program classes that it visits.A model representing a constant value of a primitive type argument to be passed to the method
invocation instructions that are injected by
CodeInjector.This
ConstantVisitor delegates its visits to another given ConstantVisitor, but
only when the visited constant has the proper processing flags.A model representing a constant string argument to be passed to the method invocation
instructions that are injected by
CodeInjector.This
ConstantVisitor collects the constants that it visits in a readable form, in a given
string builder.This
StringFunction returns a given constant string.This
ConstantVisitor delegates its visits to one or more specified types of constants.This
Attribute represents a constant value attribute.This class creates
Value instances that correspond to specified constant pool entries.This utility class renders
Constant objects into a more human-readable format.This interface specifies the methods for a visitor of
Constant instances.This utility class finds the offset of the invocation to the current or super class constructor
after visiting an method.
This
MemberVisitor delegates its visits to one of three delegates, depending on whether
the visited method is:This
AbortOperator allows changing its behavior by setting the boolean field ControllableAbortOperator.abort to the desired output.This
IntegerValue represents a byte value that is converted from an integer value.This
IntegerValue represents a character value that is converted from an integer value.This
DoubleValue represents a double value that is converted from another scalar value.This
FloatValue represents a float value that is converted from another scalar value.This
IntegerValue represents a integer value that is converted from another scalar value.This
LongValue represents a long value that is converted from another scalar value.This
IntegerValue represents a short value that is converted from an integer value.This provides a counter that can be retrieved.
This ClassVisitor delegates to a given class visitor, and then, if the given predicate succeeds
with the given
Counter before and after values, also to a second given class visitor.This is the CPA+
algorithm.
A domain dependent analysis that can be wrapped with a
BamCpa to be extended
inter-procedurally.This sample application illustrates how to create a class with the ProGuardCORE API.
This sample application illustrates how to use visitors to iterate over specific instructions and
exception handlers.
An dex writer that uses the d8 tool from the Android SDK.
This ClassVisitor converts and collects the classes that it visits, and uses D8 to convert them
to the dex format.
This interface describes a data entry, for exanple a ZIP entry, a file, or a directory.
This DataEntryFilter filters data entries based on whether they correspond to classes in a given
class pool that have a given processing info.
This
ClassVisitor writes out the ProgramClass instances that it visits to the
given DataEntry, modified to have the correct name.This
DataEntryReader writes the ZIP entries and files that it reads to a given DataEntryWriter.This
DataEntryFilter filters data entries based on whether they represent directories.This interface provides a method to filter data entries.
This
DataEntryFilter filters data entries based on whether their names match a given
StringMatcher.This
DataEntryFilter delegates filtering to a DataEntryFilter for its parent.This interface provides methods for reading data entries.
This class can create DataEntryReader instances based on class path entries.
This
DataEntryReader writes the resource data entries that it reads to a given DataEntryWriter, updating their contents based on the renamed classes in the given ClassPool.This interface provides a source for data entries.
Represents a character sequence that is part of a
DataEntry and that has a certain
meaning denoted by its DataEntryTokenType.This class breaks up the character data read from a given Reader into
DataEntryTokens.Represents the assumed meaning of a
DataEntryToken.This interface provides methods for writing data entries, such as ZIP entries or files.
This class can create DataEntryWriter instances based on class paths.
This
AttributeVisitor delegates to a given AttributeVisitor, timing the
invocations and printing out warnings when the timings exceed a given threshold.Example showing how to use an
InstructionSequenceReplacer to add logging before a method
call which prints the value on the top of the stack i.e.Example for
DebugStackTop.This
ExpandOperator simulates the JVM behavior on a method exit.This is a
LinkedHashSet-based implementation of the ReachedSet.This
ReduceOperator simulates the JVM behavior on a method call.This
Attribute represents a deprecated attribute.A
DescriptorClassEnumeration provides an enumeration of all classes mentioned in a given
descriptor or signature.This
IdentifiedArrayReferenceValue represents an identified array reference value with
its elements.This identified value factory creates array reference values that also represent their elements,
in as far as possible.
This utility class converts Dex2jar dex files to ProGuard class files.
用于访问注解
A visitor to visit a Java annotation.
This data entry reader reads dex files, converts their classes, and passes them to a given class
visitor.
constants in dex file
Open and read a dex container, introduced in dex format v41.
This DataEntryWriter finds received class entries in the given class pool, collects them in a dex
file, and writes it out to the given data entry writer.
This class can create DataEntryWriter instances for writing dex files.
Open and read a dex file.this is the entrance of dex-reader.
1.
a light weight version of org.objectweb.asm.Label
a light weight version of org.objectweb.asm.Type
This
DataEntryReader delegates to one of two other DataEntryReader instances,
depending on whether the data entry represents a directory or not.This DataEntrySource can read a given file or directory, recursively, passing its files as
DataEntry instances to DataEntryReader instances.This
DataEntryWriter writes data entries to individual files in a given directory.Calculate the dominator tree of any method, making it possible to determine which instructions
are guaranteed to be executed before others.
This
InstructionVisitor lets a given ClassVisitor visit all classes involved in
any .class constructs that it visits.This
Constant represents a double constant in the constant pool.This
VerificationType represents a Double type.Representation of a partially evaluated double value.
This
DataEntry represents a named output entry that doesn't return an input stream.This
InstructionVisitor initializes any constant Class.forName or
.class references of all classes it visits.This
Constant represents a dynamic constant in the constant pool.This
AttributeVisitor initializes any constant class member references of all code that
it visits.This
ConstantVisitor lets a given ClassVisitor visit all the referenced classes
that are returned by the dynamic constants and invoke dynamic constants that it visits.Example showing how to use the
PeepholeEditor with a BranchTargetFinder and a
CodeAttributeEditor to add code before and after branches.This abstract class represents an element value that is attached to an annotation or an
annotation default.
This
ElementValueVisitor adds all element values that it visits to the given target
annotation default attribute, annotation, or element value.This class can add and delete element values to and from a given target annotation default
attribute, annotation, or array element value.
This interface specifies the methods for a visitor of
ElementValue instances.This
StringMatcher tests whether strings are empty.Representation of an empty annotation target.
This
Attribute represents an enclosing method attribute.This
ElementValue represents an enumeration constant element value.This
ElementValueVisitor initializes the field references of the EnumConstantElementValue instances that it visits.Class holding all the error ids for exceptions occurring in the program.
The number of argument
This sample application illustrates how to evaluate the bytecode of a method to get information
about its control flow and data flow.
Utility methods used by examples.
This
ConstantVisitor delegates its visits to class constants to another given ConstantVisitor, except for one given class.This
ClassVisitor delegates its visits to another given ClassVisitor, except for
classes are in a given list.This
ClassVisitor delegates its visits to another given ClassVisitor, except for
one given class.This
ConstantVisitor adds all class constants that it visits to the given target
exceptions attribute.This
ExceptionInfoVisitor counts the number of exceptions that has been visited.This
ExceptionInfoVisitor delegates its visits to another given ExceptionInfoVisitor, but only when the visited exception does not cover the instruction at the
given offset.This
ExceptionInfoVisitor lets a given ConstantVisitor visit all catch class
constants of exceptions that it visits.This
ExceptionInfoVisitor delegates its visits to another given ExceptionInfoVisitor, but only when the visited exception targets an instruction in the given
range of offsets.Trim Exception handler.
Representation of an exception table entry.
This
ExceptionInfoVisitor adds all exception information that it visits to the given
target code attribute.This class can add exceptions to the exception table of a given code attribute.
This interface specifies the methods for a visitor of
ExceptionInfo instances.This
ExceptionInfoVisitor delegates its visits to another given ExceptionInfoVisitor, but only when the visited exception covers the instruction at the given
offset.This
ExceptionInfoVisitor delegates its visits to another given ExceptionInfoVisitor, but only when the visited exception overlaps with the given instruction
range.This
Attribute represents an exceptions attribute.This class can add exceptions to a given exceptions attribute.
Represents an exception during partial evaluation when a single instruction would be visited more
than
PartialEvaluator.stopAnalysisAfterNEvaluations(int) times.This
InvocationUnit is capable of executing the invoked methods with particular values as
parameters.Builds an
ExecutingInvocationUnit.This abstract class specifies a modular component which can be added to a
ExecutingInvocationUnit in order to extend its capabilities.A builder for the executor.
This interface provides a method for deciding whether a certain method call returns the calling
instance.
This
ExecutorInstanceHandler decides whether a method always returns its calling instance
based on a mapping of class names to a StringMatcher for method names.This operator is used to recover the information discarded when entering a procedure block
depending on the domain-specific analysis.
Representation of an Exports entry in a
Module attribute.This interface specifies the methods for a visitor of
ExportsInfo instances.Deprecated.
This
StringMatcher tests whether strings end in a given extension, ignoring its case.An
ExternalTypeEnumeration provides an enumeration of all types listed in a given
external descriptor string.Base interface for entities that are part of a feature, as indicated by a feature name.
Representation of a field in a class.
represent a field_id_item in dex file format
Implements a field descriptor parser based on the specification.
Represent a non-static Field expression.
This
Constant represents a field reference constant in the constant pool.Represents a field signature consisting of class and member name.
This utility class renders
Field objects into a more human-readable format.This
DataEntry represents a file.Represents a unique location in a file, e.g.
This
StringParser can create StringMatcher instances for regular expressions
matching file names.Interface with methods related to file pools.
This
StringFunction maps resource file names on their (obfuscated) resource file name, as
present on the ResourceFile object in the given resource file pool.This DataEntrySource wraps a single given file or
DataEntry.Represent a FILLED_ARRAY expression.
This
ClassPoolVisitor lets a given ClassVisitor visit all matching Clazz
instances of the class pools it visits.This
DataEntryReader delegates to one of two other DataEntryReader instances,
depending on whether the data entry passes through a given data entry filter or not.This
DataEntryWriter delegates to one of two other DataEntryWriter instances,
depending on whether the data entry passes through a given data entry filter or not.This
StringFunction delegates a given String to one of two other StringFunction
instances, depending on whether it matches the given filter.This sample application illustrates how to find branches in the code and print out some results.
This interface specifies a listener that is called to finish an output stream before it is
closed.
An implementation of the InjectStrategy interface to find the earliest location suitable for
injecting method invocation instructions.
This
DataEntryWriter writes data entries to a single given file.This
StringMatcher tests whether strings start with a given fixed string and then match
another optional given StringMatcher.This
Constant represents a float constant in the constant pool.This
VerificationType represents a Float type.Representation of a partially evaluated float value.
Representation of a formal parameter annotation target.
This
StackMapFrame represents a "full frame".This
ClassVisitor delegates its visits to another given ClassVisitor, but only
for functional interfaces, that is, interface classes that have exactly one abstract method.This class checks the assumption: All functions need a JVM signature
FunctionReference info.
Represent a GOTO statement
This
HashMapAbstractState represents a map to AbstractStates with the semilattice
operators lifted to the map.An enumeration of supported heap models.
And interface to be implemented by classes that are able to provide information on the hierarchy
of classes.
This
ArrayReferenceValue represents an array reference value that is identified by a
unique ID.This
DoubleValue represents a double value that is identified by a unique ID.This
FloatValue represents a float value that is identified by a unique ID.This
IntegerValue represents a integer value that is identified by a unique ID.This
LongValue represents a long value that is identified by a unique ID.This
ReferenceValue represents a reference value that is identified by a unique ID.This class provides methods to create and reuse Value instances that are identified by unique
integer IDs.
This
StringFunction returns unchanged String instances.This
DataEntryReader reads data entries and requests their corresponding output streams
from a given DataEntryWriter, without actually using the output stream.Represent a IF statement
This
ConstantVisitor delegates its visits to class constants to another given ConstantVisitor, except for classes that extend or implement a given class.This
ClassVisitor delegates its visits to one of two given ClassVisitors,
depending on whether the visited classes extend/implement a given class or not.This
ConstantVisitor delegates its visits to class constants to another given ConstantVisitor, except for classes that are extended or implemented by a given class.Represents an exception during partial evaluation when an incomplete class hierarchy was
encountered.
Deprecated.
This
AttributeVisitor links 'new' instructions and their corresponding initializers in
the CodeAttribute instances that it visits.This utility class provides a method to initialize the cached cross-references classes.
Utility methods for operation on
Clazz that require initialization of the ClassPools to work (i.e., ClassReferenceInitializer, ClassSubHierarchyInitializer, and ClassSuperHierarchyInitializer should have run on the
class pools).This editor allows to build and/or edit classes (ProgramClass instances).
This functional interface provides an instruction sequence builder to its caller.
This
MemberVisitor delegates its visits to one of two other given MemberVisitor
instances, depending on whether the visited method is a static initializer or instance
initializer, or not.This value factory creates initial values for fields and array elements, with the help of a given
value factory.
This interface defines an API for modeling arguments to be passed to the method invocation
instructions that are injected by
CodeInjector.This interface defines methods for determining code attribute offsets suitable for injecting a
method invocation.
A data structure indicating a suitable location for injecting a method invocation instruction.
This
InnerClassesInfoVisitor fixes the inner class access flags of the inner classes
information that it visits.This
Attribute represents an inner classes attribute.This class can add/remove bootstrap methods to/from a given inner classes attribute.
Representation of an inner classes table entry.
This interface specifies the methods for a visitor of
InnerClassesInfo instances.Base class for representing instructions.
This
InstructionVisitor adds all instructions that it visits to the given target code
attribute.Util for operations involving
Instruction.This
InstructionVisitor lets a given ConstantVisitor visit all constants of the
instructions it visits.This
InstructionVisitor counts the number of instructions that has been visited.This class is used to format an exception with the previous instructions.
This class provides methods to create and reuse Instruction instances.
Representation of a partially evaluated instruction offset.
This InstructionVisitor delegates its visits to one of two InstructionVisitors, based on whether
the opcode of the visited instruction matches the list of passed opcodes.
This utility class allows to construct sequences of instructions and their constants.
This
InstructionVisitor will delegate visits only if the visited instructions match the
required sequence.This
InstructionVisitor checks whether a given pattern instruction sequence occurs in the
instructions that are visited.This
InstructionVisitor replaces a given pattern instruction sequence by another given
replacement instruction sequence.This pseudo-instruction represents a label that marks an instruction offset, for use in the
context of the sequence replacer only.
This
InstructionVisitor replaces multiple instruction sequences at once.This
InstructionVisitor delegates to a given AttributeVisitor.Utility methods for converting between representations of names and descriptions.
This interface specifies the methods for a visitor of
Instruction instances.This
InstructionVisitor writes out the instructions that it visits, collecting
instructions that have to be widened.This
Constant represents a integer constant in the constant pool.This
VerificationType represents an Integer type.Representation of a partially evaluated integer value.
This
ConstantVisitor adds all interfaces that it visits to the given target class.This
ClassVisitor removes specified interfaces from the classes and class signatures that
it visits.This
Constant represents a interface method reference constant in the constant pool.This class can add and delete interfaces to and from classes.
This
ClassVisitor sorts the interfaces of the program classes that it visits.An
InternalTypeEnumeration provides an enumeration of all types listed in a given
internal descriptor or signature of a class, a method, or a field.This class wraps
InternalTypeEnumeration to provide an Iterable interface for use with
enhanced for loops.A visitor that is visited for invalid class references.
A visitor for invalid member references.
A visitor for invalid references.
A small utility class to clean up invalid signatures.
This interface sets up the variables for entering a method, and it updates the stack for the
invocation of a class member.
This
Constant represents an invoke dynamic constant in the constant pool.Represent a method invocation expression.
Represents an IR instructor equivalent to Java bytecode: `new X, invoke-special X.`
Share same reg between locals with same type.
This utility class converts code in Dex2jar's intermediate representation to ProGuard code.
This
DataEntryReader lets a given DataEntryReader read all data entries of the
read archive data entries.This utility class provides methods to read and write the classes in jars.
This
DataEntryWriter sends data entries to another given data entry writer, automatically
adding a manifest file.This FilterOutputStream automatically appends a file digest entry to a given manifest writer,
when the stream is closed.
Access modifiers for classes, fields, methods, parameters, and modules in Java source code.
External names and descriptors of common classes, fields, and methods from the Java runtime.
Constant characters that are part of primitive and non-primitive type descriptors in Java source
code.
Known external version numbers of class files.
Tracks the state of the partial evaluator able to provide debug information in JSON format.
The
JvmAbstractState consists of the method frame JvmFrameAbstractState and the
heap JvmHeapAbstractState.An edge representing an assumption that a case of a switch statement is taken.
An edge representing an assumption on a JVM branch instruction that can be either taken or not
taken.
An edge representing an assumption that the default case of a switch statement is taken.
An edge representing an assumption on a JVM exception of a specific type that can be either
caught or not caught.
A
JvmCfaEdge representing a call to another method, linking to the first node of the
called method.A
JvmCfaNode representing the beginning of a catch or finally block.A JVM specific implementation of
Cfa.Default implementation of
CfaEdge for JVM instructions.A node representing a code location of a JVM method identified by a
MethodSignature and
an offset.This
ParticularReferenceValueFactory creates IdentifiedReferenceValue and ParticularReferenceValues using the creation site as the unique identifier.This is a forgetful stub heap implementation.
The
JvmFrameAbstractState combines the operand stack as the StackAbstractState
and the local variable array as the ListAbstractState.The
JvmHeapAbstractState provides the interfaces for heap operations over objects and
arrays.A
JvmCfaEdge the operation of which is defined by an instruction.A
JvmTaintSink on a method invocation.Builder for
JvmInvokeTaintSink.The
JvmLocalVariableLocation is a memory location at the local variable array.A
JvmMemoryLocation points at a specific location in a certain state of the Jvm.This
AbstractState consists of a BamLocationDependentJvmMemoryLocation with a set
of sources contributed into its value and the call stack that generated it.An entry of the call stack of the state.
The
JvmMemoryLocationCpa backtraces memory locations.This
MergeOperator applies the join operator to its arguments sharing the same memory
location.The
JvmMemoryLocationTransferRelation computes the backward successors of an JvmMemoryLocationAbstractState for a given instruction.A
JvmTaintSink triggered if the return value of the specified method is tainted.A shallow heap models objects as atomic abstract states thus having only one level of depth.
The
JvmStackLocation is a memory location at the operand stack.The
JvmStaticFieldLocation is a memory location corresponding to a public static field.The
JvmTaintCpa computes abstract states containing JvmTaintSources which can
reach the given code location.The
JvmTaintSink adds an interface for extracting sensitive JVM memory locations and to
check if the sink matches a given cfa edge.A
JvmTaintSource specifies a method which can taint any (subset) of the following: the
instance, the return value, the argument objects, or static fields.The
JvmTaintTransferRelation is parametrized by a set of TaintSource methods.Class that can be passed to
JvmTaintTransferRelation to specify how a specific method
call should be treated.The
JvmTransferRelation computes the successors of an JvmAbstractState for a
given instruction.A unique node for an entire CFA representing an unknown code location.
A
JvmTransferRelation that tracks values.This class checks the assumption: All properties need a JVM signature for their getter
Represents a Kotlin metadata entity that can contain annotations:
Represents an argument of a
KotlinAnnotation e.g.Delegates to another
KotlinAnnotationArgumentVisitor based on the result of the given
Predicate<KotlinAnnotationArgument>.Visitor interface for Kotlin annotation arguments.
Delegates to a given
KotlinAnnotationVisitor if the predicate succeeds.Implementations of this class represent a conceptual constraint on KotlinMetadata.
Initialize callable reference class information, by visiting synthetic classes that implement
(Function|Property|LocalVariable)Reference, then finding Function/Property that they refer to and
use this information to initialize a
CallableReferenceInfo inside the synthetic class.Delegates to the given
ClassVisitor if the class has the kotlin.Metadata annotation.Delegate to another
KotlinMetadataVisitor if the predicate returns true, or if there's no
predicate.This
KotlinMetadataVisitor travels to the anonymous object origin class and delegates to
the given KotlinMetadataVisitor.This
KotlinMetadataVisitor travels to the function of the provided anonymous object
origin and delegates to the given KotlinFunctionVisitor.A
KotlinMetadataVisitor that visits KotlinClassKindMetadata.Filter KotlinDeclarationContainers, based on the given predicate.
This class is named after Kotlin's own naming scheme.
Flags for Kotlin types.
A
KotlinMetadataVisitor that visits KotlinFileFacadeKindMetadata.KotlinFlags represent a collection of flags in the metadata.
Delegate to another
KotlinFunctionVisitor if the predicate returns true.This class applies the given member visitor to the referenced default method of a Kotlin
function.
This class applies the given member visitor to the referenced method of a Kotlin function.
This abstract class represents metadata that is attached to a Kotlin class, parsed from
its @Metadata tag.
Performs a series of checks to see whether the kotlin metadata is intact.
This
KotlinMetadataVisitor delegates its visits to one of two given visitors, depending
on whether the given predicate succeeds.Initializes the kotlin metadata for a Kotlin class.
The different fields of the Kotlin metadata annotation.
Small container for KotlinMetadataVersion metadata (mv).
Tests a predicate on the classes' KotlinMetadataVersion and delegates to different ClassVisitors
based on the result.
This class visitor writes the information stored in a Clazz's kotlinMetadata field to
a @kotlin/Metadata annotation on the class.
Represents a Kotlin module file - this file describes the contents of a Kotlin module: which file
facades and which multi-file part classes make up the module.
Read a Kotlin module file and apply the given
ResourceFileVisitor.Print Kotlin modules.
Read an input stream into a KotlinModule object.
Initialize the Kotlin module references.
A visitor for
KotlinModule.A
KotlinMetadataVisitor that visits KotlinMultiFileFacadeKindMetadata.Delegate to another
KotlinMetadataVisitor if the predicate returns true.A
KotlinMetadataVisitor that visits KotlinMultiFilePartKindMetadata.Kotlin utility methods to help with Kotlin naming conventions.
Kotlin property accessor metadata (getters/setters for properties).
Delegate to another
KotlinPropertyVisitor if the predicate returns true.Flags for Kotlin properties.
Kotlin String utility methods.
Delegate to another
KotlinMetadataVisitor if the predicate returns true.A
KotlinMetadataVisitor that visits KotlinSyntheticClassKindMetadata.Delegates to another
KotlinTypeAliasVisitor if the predicate succeeds; otherwise to the
rejected visitor.This KotlinTypeVisitor delegates to another KotlinTypeVisitor if the predicate succeeds.
Flags for Kotlin types.
This
KotlinTypeParameterFilter delegates to another KotlinTypeVisitor if the predicate
succeeds.Flags for Kotlin type parameters.
This
KotlinValueParameterVisitor delegates to another KotlinValueParameterVisitor if the
predicate succeeds.Flags for Kotlin value parameters.
Represent a Label statement
A small helper class that captures useful information about a lambda expression as encountered in
a class file.
This ClassVisitor collects all lambda expressions that are defined in a visited class.
This class visitor splits any strings longer than 65535 bytes into smaller strings.
An implementation of the InjectStrategy interface to find the potential last blocks of a method.
Lazily initialized parser.
This
StackMapFrame represents an "chop frame".This
Clazz is a compact representation of the essential data in a Java class.This editor allows to build or extend classes (
LibraryClass instances).This class can add interfaces and class members to a given class.
This
ClassVisitor delegates its visits to another given ClassVisitor, but only
when visiting library classes.This
ClassVisitor fills out the LibraryClass instances that it visits with data
from the given DataInput object.This
Field represents a field in a LibraryClass.Base representation of a field or method from a
LibraryClass.This
MemberVisitor delegates its visits to another given MemberVisitor, but only
when visiting members of library classes.This
Method represents a method in a LibraryClass.Retrieves the lineNumber for a given offset from a codeattribute.
Representation of a line number table entry.
This
AttributeVisitor adds the line numbers of all line number attributes that it visits
to the given target line number attribute.This interface specifies the methods for a visitor of
LineNumberInfo instances.This
LineNumberInfoVisitor remembers the lowest and the highest line numbers that it
finds in all the line numbers that it visits.This
Attribute represents a line number table attribute.This class can add line numbers to a given line number table attribute.
This
AttributeVisitor trims the line number table attributes that it visits.This
ListAbstractState represents a list of AbstractStates with the semilattice operators lifted to the
list.This
StringFunctionParser can create StringFunction instances for regular
expressions.This
StringMatcher tests whether strings match a given list of StringMatcher
instances.This
StringParser can create StringMatcher instances for regular expressions.This class provides some utility methods for working with
java.util.List instances.This
AttributeVisitor analyzes the liveness of the variables in the code attributes that
it visits, based on partial evaluation.TODO DOC
Representation of a local variable table entry.
This
LocalVariableInfoVisitor adds all local variables that it visits to the given target
local variable table attribute.This interface specifies the methods for a visitor of
LocalVariableInfo instances.This
Attribute represents a local variable table attribute.This class can add local variables to a given local variable table attribute.
Representation of an local variable target table entry.
This interface specifies the methods for a visitor of
LocalVariableTargetElement
instances.Representation of a local variable annotation target.
Representation of a local variable table type entry.
This
LocalVariableTypeInfoVisitor adds all local variable types that it visits to the
given target local variable type attribute.This interface specifies the methods for a visitor of
LocalVariableTypeInfo instances.This
Attribute represents a local variable table type attribute.This class can add local variables to a given local variable type table attribute.
Helper data structure that makes it possible to identify specific places inside a program, either
inside the bytecode (
CodeLocation) or some other file, e.g.This
Constant represents a long constant in the constant pool.This
VerificationType represents a Long type.Representation of a partially evaluated long value.
This
Instruction represents a lookup switch instruction.Represent a LOOKUP_SWITCH statement
This
DataEntryReader writes the manifest data entries that it reads to a given DataEntryWriter, updating their contents based on the renamed classes in the given ClassPool.This
StringFunction gets its transformed strings from a given map.This
StringFunction returns the most recently matched string of a given VariableStringMatcher.This
StringMatcher tests whether strings start with a specified variable string and then
match another optional given StringMatcher.This
StringFunction returns unchanged strings or null, depending on whether a given
string matcher matches the strings.This
AttributeVisitor computes the maximum stack size of the code attributes that it
visits.A consumer of before/after stack sizes at each offset evaluated by the
MaxStackSizeComputer.Representation of a class member (field or method).
This
MemberVisitor delegates its visits to another given MemberVisitor, but only
when the visited member has the proper access flags.This
ClassVisitor and MemberVisitor clears the specified access flags of the
classes and class members that its visits.This
MemberVisitor sets the specified access flags of the program class members that it
visits.This
MemberVisitor sets the access part of the access flags of the program class members
that its visits to a given value.This
MemberVisitor copies all class members that it visits to the given target class.This
MemberVisitor delegates its visits to another given MemberVisitor, but only
when the visited member is accessible from the given referencing class.This MemberVisitor delegates its visits to one of two other visitors, depending on whether the
member is present in the given member collection or not.
This
MemberVisitor collects dot-separated classname.membername.descriptor strings of the
class members that it visits.This
MemberVisitor counts the number of class members that have been visited.This
MemberVisitor delegates its visits to another given MemberVisitor, but only
when the visited member has a descriptor that matches a given regular expression.This
MemberVisitor lets a given ClassVisitor visit all the classes referenced by
the descriptors of the class members that it visits.This utility class provides methods to find class members in a given class or in its hierarchy.
This
MemberVisitor delegates its visits to another given MemberVisitor, but only
when the visited member has a name that matches a given regular expression.This
MemberVisitor delegates its visits to another given MemberVisitor, but only
when the visited member has the proper processing flags.Delegate all member visits to another given visitor, depending on if the given predicate passes
or not.
This
ClassVisitor fixes constant pool field and method references to fields and methods
whose names or descriptors have changed.This visitor removes all members it visits in a
ProgramClass.This
MemberVisitor renames the class member names of the classes it visits.This
MemberVisitor delegates all visits to a given ClassVisitor.Apply the given
KotlinPropertyVisitor if the member is a backing field, getter or setter
for a property.This utility class serves as a base class for
FieldViewModel and MethodViewModel.This interface specifies the methods for a visitor of
ProgramMember instances and LibraryMember instances.This
MergeOperator applies the join operator to its arguments.The
MergeOperator defines how (and whether) the older AbstractState should be
updated with the newly discovered AbstractState.This
MergeOperator does not weaken the input AbstractState.Representation of a method in a class.
represent a method_id_item in dex file format
This
MemberVisitor collects the methods that it visits in the given collection.This
ClassVisitor copies a method into a target class.This
MemberVisitor counts the number of methods that have been visited.This class visitor is able to create a method and add it to a program class in case it does not
exist yet.
Represents the descriptor that is part of a
MethodSignature.Implements parser for the method descriptor grammar defined in JVM spec.
This class stores data relevant to modeling the execution of a method and offers methods to
extract additional information.
This
MemberVisitor delegates its visits to one of two other given MemberVisitor
instances, depending on whether the visited method is a method or a field.This
Constant represents a method handle constant in the constant pool.This
MemberVisitor delegates its visits to methods to another given MemberVisitor, but only when the visited method may have implementations.This
MemberVisitor lets a given MemberVisitor travel to all concrete and abstract
implementations of the visited methods in their class hierarchies.Can be implemented by classes carrying method information.
This
AttributeVisitor fixes all inappropriate special/virtual/static/interface
invocations of the code attributes that it visits.This
ClassVisitor links all corresponding non-private, non-static, non-initializer
methods in the class hierarchies of all visited classes.This
Attribute represents a method parameters attribute.This
Constant represents a method reference constant in the constant pool.This
ConstantVisitor travels from any method handle constants that it visits to their
methodref constants, and applies a given constant visitor.A class modeling the results of a method invocation.
A builder for
MethodResult.Represents a Method signature containing a class, method and a descriptor.
Parser for method signature grammar, defined to be closely matching the grammar definition for
ease of maintenance.
Apply the given function visitor to a referenced constructors's corresponding
KotlinConstructorMetadata.Apply the given function visitor to a referenced method's corresponding
KotlinFunctionMetadata.This
Constant represents a method handle constant in the constant pool.This utility class renders
Method objects into a more human-readable format.Utility to collect statistical information.
Constants which are used as metric types.
This interface can be implemented for each class that needs to be modeled during an analysis.
Used to identify methods that model behavior for constructors of a class modeled in
Model.Used to identify methods that model behavior for instance methods of a class modeled in
Model.Used to identify methods that model behavior for static methods of a class modeled in
Model.Helper methods to use
Models.A helper class grouping
MethodExecutionInfo and ValueCalculator as the
execution context of a method.This
Attribute represents a module attribute.This
Constant represents a module constant in the constant pool.This
Attribute represents a main class attribute.This
Attribute represents a module packages attribute.This
StackMapFrame represents an "append frame".This
AnnotationVisitor delegates all visits to each AnnotationVisitor in a given
list.dex does have the instruction to create a multi-array.
This
AttributeVisitor delegates all visits to each AttributeVisitor in a given
list.This
ClassPoolVisitor delegates all visits to each ClassPoolVisitor in a given
list.This
ClassVisitor delegates all visits to each ClassVisitor in a given list.This
ConstantVisitor delegates all visits to each ConstantVisitor in a given
list.This
InstructionVisitor delegates all visits to each InstructionVisitor in a
given list.This
KotlinTypeVisitor delegates to multiple KotlinTypeVisitors.This
MemberVisitor delegates all visits to each MemberVisitor in a given list.This
ResourceFileVisitor delegates all visits to all ResourceFileVisitor
instances in the given list.This
TypedReferenceValue can have multiple potential types during runtime.This class provides a wrapper around
TypedReferenceValueFactory that provides new MultiTypedReferenceValues.A key-values map that can have multiple values associated with each key.
Modified UTF-8 as described in the dex file format spec.
This
Constant represents a name and type constant in the constant pool.This
ClassVisitor removes NameAndType constant pool entries that are not
used.This
ClassVisitor deletes attributes with a given name in the program classes, fields,
methods, or code attributes that it visits.This
ClassPoolVisitor lets a given ClassVisitor visit Clazz instances
with a given name, in the class pools that it visits.This
DataEntry represents a named output entry with a parent.This class visits
ProgramMember instances referring to fields, identified by a name and
descriptor pair.This class visits
ProgramMember instances referring to methods, identified by a name and
descriptor pair.This
DataEntryReader delegates to one of two other DataEntryReader instances,
depending on the name of the data entry.This
DataEntryWriter delegates to one of two other DataEntryWriter instances,
depending on the name of the data entry.This
StringParser can create StringMatcher instances for regular expressions
matching names.This
DoubleValue represents a double value that is negated.This
FloatValue represents a float value that is negated.This
IntegerValue represents a integer value that is negated.This
LongValue represents a long value that is negated.This
Attribute represents a nest host attribute.This utility class can find the nest host class names of given classes.
This
ConstantVisitor and ClassVisitor adds the class constants or the classes
that it visits to the given target nest member attribute.This
Attribute represents a nest host attribute.This
AbortOperator never terminates the analysis prematurely.Represent a NEW_MUTI_ARRAY expression.
simply merge
Represents a node in a sub-callgraph, e.g.
This
DataEntryWriter delegates to another DataEntryWriter, except for any NonClosingDataEntryWriter.close() calls.This
AttributeVisitor delegates its visits another AttributeVisitor, but only
when the visited attribute is not empty.This
RebuildOperator returns the original AbstractState without performing any
rebuilding.This
ReduceOperator returns the original AbstractState without performing any
reduction.Represent a NOP statement
This
StringMatcher tests whether strings does not match the given StringMatcher.This
StringFunction returns the original string if the given StringFunction
returns null, or null otherwise.This
VerificationType represents a Null type.This
Executor provides an implementation for Executor.getMethodResult(proguard.evaluation.executor.MethodExecutionInfo, proguard.evaluation.ValueCalculator) which
resolves all types of 'Object'.getClass Class calls based on the classes in
the class pools.Builder for
ObjectGetClassExecutor.This
VerificationType represents an Object type.This class contains utility methods operating on instances.
Representation of an offset annotation target.
This utility class finds the offset of a provided list of opcodes in the code attributes.
Representation of a Opens entry in a
Module attribute.This interface specifies the methods for a visitor of
OpensInfo instances.This
StringMatcher tests whether strings matches at least one of the given StringMatcher instances.This
StringFunction tests whether strings match either given StringFunction
instances, returning the first non-null result.This
Constant represents a package constant in the constant pool.This
ClassPoolVisitor will visit all Clazz instances of the class pool in a parallel way.A factory for
ClassVisitor objects.This data entry reader reads dex files, converts their classes, and passes them to a given class
visitor.
This
Attribute represents a parameter annotations attribute.This class can add annotations to a given parameter annotations attribute.
Representation of a parameter, as defined in a method parameters attribute.
This
ParameterInfoVisitor adds all parameter information that it visits to the given
target method parameters attribute.This interface specifies the method for a visitor of
ParameterInfo instances.This interface specifies the methods for a visitor of method parameters or field types (which can
be considered parameters when storing values).
This
DataEntryWriter lets another DataEntryWriter write the parent data entries.Main interface of the parser library, used to implement custom parsers.
An object for storing the data of a currently running parsing operation.
Utility class for common helpful parsers.
This
AttributeVisitor performs partial evaluation on the code attributes that it visits.This class represents an instruction block that has to be executed, starting with a given state
at a given instruction offset.
Interface with callback methods called by the Partial Evaluator when it enters certain states.
Helper functions to access PartialEvaluator results more conveniently.
This
DoubleValue represents a particular double value.This
FloatValue represents a particular float value.This
IntegerValue represents a particular integer value.This
LongValue represents a particular long value.This
ParticularReferenceValue represents a particular reference value, i.e.This
TypedReferenceValueFactory creates reference values that also represent their
content.This class provides methods to create and reuse Value instances that have particular values,
whenever they are known.
This
AttributeVisitor lets a given instruction visitor edit the code attributes that it
visits.This
ConstantVisitor and ClassVisitor adds the class constants or the classes
that it visits to the given target permitted classes attribute.This
Attribute represents a permitted subclasses attribute.Precision parametrizes the analysis accuracy of the CpaAlgorithm.PrecisionAdjustment allows adjusting the CpaAlgorithm Precision based of the reached abstract
states.This
DataEntryWriter delegates to a given DataEntryWriter, each time adding a
prefix of the written data entry name.This
StringFunction adds a prefix in front of each transformed String.This
StringFunction removes a given prefix from each transformed String, if present.This
DataEntryReader delegates to a given DataEntryReader, each time stripping a
possible prefix from the read data entry name.This sample application illustrates how to preverify classes with the ProGuard API.
This unofficial Constant represents an array of primitives in the constant pool.
This interface specifies the methods for a visitor of primitive elements of the array of a
PrimitiveArrayConstant.This
ClassVisitor replaces all instances of PrimitiveArrayConstant by Java
bytecode compliant array store instructions.This interface specifies the methods for a visitor of
PrimitiveArrayConstant instances
containing different types of arrays.This class provides methods to create and reuse Value instances.
This sample application illustrates how to read bytecode and print it out in text format with the
ProGuard API.
This
JarReader lets a given DataEntryReader read all data entries of the read
archive data entries in an order that respects a set of given priorities.Base interface for entities that need flags and/or additional information when they are
processed, typically by visitor classes.
A base ViewModel class for implementing classes of the Processable interface.
This interface defines visitor methods for the main Processable implementations.
This visitor clears the specified processing flags of the
Processable instances that it
visits.This DataEntryFilter filters data entries based on the processing flags of their corresponding
resource file.
Constants used by ProGuard for marking entities (classes, class members, resource files, ...)
during processing.
This visitor sets the specified processing flags of the
Processable instances that it
visits.This visitor sets a fixed info object on all the
Processable instances that it visits.This
InstructionVisitor executes the instructions that it visits on a given local
variable frame and stack.This
Clazz is a complete representation of the data in a Java class.This
ClassVisitor delegates its visits to another given ClassVisitor, but only
when visiting program classes.This
ClassVisitor fills out the ProgramClass instances that it visits with data
from the given DataInput object.This
ClassVisitor writes out the ProgramClass instances that it visits to the
given DataOutput object.This
Field represents a field in a ProgramClass.If an
AbstractState is program location-specific (i.e., is associated to a specific node
from the Cfa), it should implement ProgramLocationDependent.An interface for
TransferRelations that depend on the Cfa location for which the successor can be defined for the
entering edges of the current location.An interface for
TransferRelations that depend on the Cfa location for which the successor can be defined for the
leaving edges of the current location.An interface for
TransferRelations that depend on the Cfa location for which the successor can be defined for the edges
of the current location.Base representation of a field or method from a
ProgramClass.This
MemberVisitor delegates its visits to another given MemberVisitor, but only
when visiting members of program classes.This
Method represents a method in a ProgramClass.Builder to construct ProguardCoreException objects.
This class checks the assumption: All properties need a JVM signature for their getter
Property reference info.
Representation of a Provides entry in a
Module attribute.This interface specifies the methods for a visitor of
ProvidesInfo instances.This
IntegerValue represents a known range of integer values.This ValueFactory provides methods to create and reuse IntegerValue instances that have known
ranges.
This operator is used to avoid collision of program identifiers when returning from a procedure
call.
This
Attribute represents a record attribute.Representation of a record component entry.
This interface specifies the methods for a visitor of
RecordComponentInfo instances.This operator is used to discard unnecessary information when entering a procedure block
depending on the domain-specific analysis (e.g.
This
Constant represents a ref constant in the constant pool.Divides the referenced classes in a program/library method in the classes referenced in return
and parameters.
Initializes the kotlin metadata for each Kotlin class.
This
ConstantVisitor and ElementValueVisitor lets a given MemberVisitor
visit all the referenced class members of the elements that it visits.This
InvocationUnit tags reference values of retrieved fields, passed method parameters,
method return values, and caught exceptions, so they can be traced throughout the execution of a
method.This
ValueFactory tags newly created reference values so they can be traced throughout
the execution of a method.Representation of a partially evaluated reference value.
Represent a Reference expression
This
Executor provides an implementation for Executor.getMethodResult(proguard.evaluation.executor.MethodExecutionInfo, proguard.evaluation.ValueCalculator) which tries
to resolve the method at runtime and execute it using Java's reflection API java.lang.reflect.Deprecated.
This logic is now implemented in
ReflectionExecutorA mixin fully implementing the
Model interface, so
that the classes implementing the model don't have to do it themselves.An
Executor with support for ReflectiveModels.Builder for
ReflectiveModelExecutor.Information provided by an executor to communicate which classes it supports.
1.
This class attempts to remove SSA form and reduce the number of variables used by the program.
This sample application illustrates how to modify bytecode with the ProGuardCORE API.
This
DataEntry wraps another data entry, returning a different name instead of the
wrapped data entry's name.This
DataEntryReader delegates to another DataEntryReader, renaming the data
entries based on the given string function.This
DataEntryWriter delegates to another DataEntryWriter, renaming the data
entries with the given string function.This
DataEntryWriter delegates to another DataEntryWriter, renaming parent data
entries based on the given matcher.Example showing how to use
InstructionSequenceReplacer to replace an `LDC` loading "Hello
World" to load the constant "Hallo Wereld" instead.Interface for reporting errors.
This
AttributeVisitor delegates its visits to one of two other AttributeVisitor
instances, depending on whether the visited attribute is strictly required or not.Representation of a Requires entry in a
Module attribute.This interface specifies the methods for a visitor of
RequiresInfo instances.Representation of a resource file in an application.
This
DataEntryReader creates plain ResourceFile instances for the data entries
that it reads, and passes them to the given ResourceFileVisitor.Delegates to another
ResourceFileVisitor, but only if the visited file's name matches a
given filter.This is a set of
ResourceFile instances.Adds all visited resource files to a given resource file pool.
Deprecated.
This
ResourceFileVisitor delegates its visits to one of two ResourceFileVisitor
instances, depending on whether the name of the visited resource file is present in a given
FilePool or not.This ResourceFileVisitor delegates all its visits to a given delegate visitor, but only of the
processing flags of the visited resource file match the given processing flag requirements.
This interface specifies the methods for a visitor of ResourceFile instances.
Represents a reference to a Java class from a resource file.
This
ResourceFileVisitor initializes the class references from non-binary resources files
with the corresponding classes from the program class pool.Removes any
ResourceJavaReferences from resource files for which no class reference was
found.This
DataEntryReader collects the java references in a resource file and adds them to the
references field.Represent a RETURN_VOID statement
This class delegates its method calls to the corresponding
DataInput methods, converting
its IOExceptions to RuntimeExceptions.This class delegates its method calls to the corresponding
DataOutput methods, converting
its IOExceptions to RuntimeExceptions.This
Attribute represents a runtime invisible annotations attribute.This
Attribute represents a runtime invisible parameter annotations attribute.This
Attribute represents a runtime invisible type annotations attribute.This
Attribute represents a runtime visible annotations attribute.This
Attribute represents a runtime visible parameter annotations attribute.This
Attribute represents a runtime visible type annotations attribute.This
StackMapFrame represents a "same locals 1 stack item frame" or a "same locals 1
stack item frame extended".This
StackMapFrame represents a "same frame" or a "same frame extended".This is a sample class that can be processed.
This is a sample class that can be processed.
This is a sample class that can be processed.
This is a sample class that can be processed.
This is a sample class that can be processed.
This
SetAbstractState represents a set with the subset ordering.This
StringMatcher delegates to a another StringMatcher that can be set after
this StringMatcher has been constructed.A signature currently can be a Method- or a FieldSignature.
This
MemberVisitor provides the consumer with a corresponding Signature.This
Attribute represents a signature attribute.This
AttributeVisitor lets a given ClassVisitor visit all the classes referenced
by the type descriptors of the signatures that it visits.Basic accessor class to the signature and descriptor parsers.
This
JarWriter sends data entries to a given jar file, automatically adding a manifest
file and signing it with JAR signature scheme v1.This
MemberVisitor lets a given MemberVisitor visit all members that have the
same name and type as the visited methods in the class hierarchy of the members' classes or of a
given target class.This
ClassVisitor and MemberVisitor prints out the class names of the classes it
visits, and the full class member descriptions of the class members it visits.The
SimpleCpa is a ConfigurableProgramAnalysis wrapping its components.A
SimpleProcessable that additionally implements FeatureNamed.This
Instruction represents a simple instruction without variable arguments or constant
pool references.This class provides a straightforward implementation of the Processable interface.
This
InvocationUnit sets up the variables for entering a method, and it updates the stack
for the invocation of a class member, using simple values.This
StringFunctionParser creates StringFunction instances for regular
expressions with optional "->" transformations.This
AttributeVisitor delegates all visits to a given AttributeVisitor, although
only once to the same attribute in a row.This
ClassVisitor delegates all visits to a given ClassVisitor, although only
once to the same class in a row.This
Attribute represents a source debug extension attribute.This
Attribute represents a source directory attribute.This
Attribute represents a source file attribute.This
DoubleValue represents a specific double value.This
FloatValue represents a specific float value.This
IntegerValue represents a specific integer value.This
LongValue represents a specific long value.This class represents an operand stack that contains
Value instances.This
StackAbstractState represents a stack of AbstractStates with the semilattice
operators lifted to the stack.Exception thrown when a type on the stack does not match the category one expected type.
This
Attribute represents a stack map attribute.This abstract class represents a stack map frame.
This interface specifies the methods for a visitor of
StackMapFrame instances.This
Attribute represents a stack map table attribute.This
AttributeVisitor computes the stack sizes at all instruction offsets of the code
attributes that it visits.This
AttributeVisitor computes and updates the maximum stack size of the code attributes
that it visits.Exception thrown when a type on the stack does not match the expected type.
Represent a StaticField expression
This
PrecisionAdjustment keeps the Precision the same.Represent a statement
Represent a statement with no argument
Represent a statement with 1 argument
Represent a statement with 2 arguments
Statement Type
Represent a list of statement.
This
StopOperator always returns true, i.e., it can be used for a single pass of the
analysis.This
StopOperator returns true if the reached set contains the input AbstractState.This
StopOperator returns true if the input state is less or equal than join over the
reached set.This
StopOperator always returns false, i.e., it can be used for analyses running until
the Waitlist becomes empty.The
StopOperator decides if CpaAlgorithm should
stop.This
StopOperator returns true if there is a state in the reached set covering the input
AbstractState.This
DataEntry represents a stream of data.This
Constant represents a string constant in the constant pool.This interface provides a method to transform a string into a new string.
This interface provides a method to create a
StringFunction for a given regular
expression.This abstract class provides methods to determine whether strings match a given criterion, which
is specified by the implementation.
This interface provides a method to create a
StringMatcher for a given regular
expression.This
ConstantVisitor initializes any class references of all string constants it visits.A builder for
StringReflectionExecutor.This
ClassVisitor shares strings in the class files that it visits.This class contains utility methods for strings.
Line number info with extra information for lines that came from a different source than the
current method (e.g.
Factory for
StructuredLineNumberInfo objects.This
ClassVisitor adds the given class to the list of subclasses of the classes that it
visits.This
ClassVisitor delegates its visits to another given ClassVisitor, except for
classes that have a given class as direct subclass.This
ClassVisitor removes the given class from the list of subclasses of the classes that
it visits.This
ClassVisitor adds all classes that it visits to the list of subclasses of the given
target class.This
ClassVisitor lets a given ClassVisitor travel to direct subclasses of the
visited class.This
StringFunction adds a given suffix to each transformed String.This
StringFunction removes a given suffix from each transformed String, if present.This
ClassVisitor lets a given ConstantVisitor visit all the constant pool
entries of the super class and interfaces of the program classes it visits.Representation of a super type annotation target.
This
Instruction represents a switch instruction.This
Attribute represents a synthetic attribute.This
Instruction represents a table switch instruction.Represent a TABLE_SWITCH statement
Helper class to analyze taints propagation in a program inter-procedurally (i.e., if the result
of the invocation of a
TaintSource affects a TaintSink).Class to configure and build a
TaintAnalyzer.Provides results for a run of
TaintAnalyzer.Results for taint analysis.
This
ExpandOperator inherits all the functionalities of a
DefaultExpandOperator and in addition taints the return values if the called function is
a source.This
ReduceOperator inherits all the functionalities of a
DefaultReduceOperator while adding taint-analysis specific functionalities.A
TaintSink specifies a sink for the taint analysis.A
TaintSource specifies a method which can taint any (subset) of the following: the
instance, the return value, the argument objects, or static fields.Representation of an annotation target.
This
TargetInfoVisitor copies the target info instances that it visits to the given type
annotation (each time overwriting any previous target info).This interface specifies the methods for a visitor of
TargetInfo instances.Representation of a 'throws' annotation target.
This
VerificationType represents a Top type.Representation of a partially evaluated top value.
This
ReferenceValue represents a reference value that is tagged with a trace value.This
Stack saves additional information with stack elements, to keep track of their
origins.This
Variables saves additional information with variables, to keep track of their
origins.This interface contains helper methods for producing witness traces.
Representation of a value that has been tagged with a sticky trace value.
This StringMatcher delegates its tests to another given StringMatcher, with strings that have
been transformed with a given function.
TODO DOC
TODO DOC
A generic implementation of the
ASTNodeVisitor intended to be used for when traversal of
the full AST is needed.Representation of a type annotation.
This
TypeAnnotationVisitor adds all type annotations that it visits to the given target
annotation element value, target annotation attribute, or target parameter annotation attribute.This
Attribute represents a type annotations attribute.This interface specifies the methods for a visitor of
TypeAnnotation instances.Representation of an offset annotation target.
Constant characters that are part of primitive and non-primitive type descriptors.
This
ReferenceValue represents a partially evaluated reference value.This class provides methods to create and reuse Value instances.
Represent a Type expression
This class checks the assumption: All properties need a JVM signature for their getter
Representation of a type parameter bound annotation target.
Representation of a type parameter annotation target.
Representation of a path element in a type annotation.
This interface specifies the methods for a visitor of
TypePathInfo instances.Parser for type signature grammar, defined to be closely matching the grammar definition for ease
of maintenance.
Type and correct Exprs
This
VerificationType represents an UninitializedThis type.This
VerificationType represents a Uninitialized type.This
ClassVisitor delegates its visits to another given ClassVisitor,
but at most a single time.This
Attribute represents an unknown attribute.DoubleValue that is unknown.FloatValue that is unknown.IntegerValue that is unknown.LongValue that is unknown.ReferenceValue that is unknown.Represents a value that is completely unknown.
Represent a LENGTH,NEG expression
Remove
PhiExprs, add a=x to each CFG from.designed for assign index to Local, each Object is related to a Local
A Kotlin metadata type that corresponds to metadata that could not be parsed correctly.
This
Constant represents a UTF-8 constant in the constant pool.This
ClassVisitor removes UTF-8 constant pool entries that are not used.Represent a local/constant/expression
This abstract class represents a partially evaluated value.
Represent an expression with no argument
Represent an expression with 1 argument
Represent an expression with 2 arguments
Represent an expression with 3+ arguments
Value Type
An
AbstractState for tracking JVM values.Helper class to analyze values (e.g., function parameters) in a program inter-procedurally.
Class to configure and build a
ValueAnalyzer.Provides results for the analysis.
This functional interface can be used to specify a way of creating
Values given a series
of parameters.A
DefaultExpandOperator that creates JvmValueAbstractStates.This interface provides methods to create
Value instances.A
DefaultReduceOperator that creates JvmValueAbstractStates.This
ClassVisitor delegates all method calls to a ClassVisitor that can be
changed at any time.This
AttributeVisitor cleans up variable tables in all code attributes that it visits.This
AttributeVisitor accumulates specified changes to local variables, and then applies
these accumulated changes to the code attributes that it visits.Exception thrown when a variable slot contains an empty value, but should not.
Partial evaluator exception regarding Variables.
Exception thrown when the variable index is out of bound of the current Variable count.
This
Instruction represents an instruction that refers to a variable on the local
variable stack.This
MemberVisitor delegates all method calls to a MemberVisitor that can be
changed at any time.This
AttributeVisitor remaps variable indexes in all attributes that it visits, based on
a given index map.This class represents a local variable frame that contains
Value instances.This
AttributeVisitor computes and updates the maximum local variable frame size of the
code attributes that it visits.This
StringMatcher tests whether strings start with a specified variable string and then
match another optional given StringMatcher.Exception thrown when the type in a variable does not match the expected type.
This abstract class represents a verification type of a local variable or a stack element.
This class provides methods to create and reuse
IntegerType instances.This interface specifies the methods for a visitor of
VerificationType instances.Known internal version numbers of class files.
This sample application produces a DOT graph representation of a Control Flow Automaton generated
by ProGuardCORE.
This sample application illustrates how to evaluate bytecode to get information about its control
flow and data flow.
Represent a void-expr: the expr result is ignored.
convert
This class prints out and counts warnings.
This
ConstantVisitor delegates to a given constant visitor, except for constants that
contain wildcards (indices larger than 0xffff).This utility class creates and manages
StringMatcher instances that (1) match wildcards,
and (2) refer back to matched wildcards.This
DataEntry wraps another data entry.dex mix use as integer 0 and object null.
This
DataEntry represents a ZIP entry.This
DataEntry represents a ZIP entry.This class writes zip data to a given output stream.
This output stream is mostly identical to DataOutputStream, except it stores the amount of
bytes written so far in a long instead of an int.
This
DataEntryWriter sends data entries to the zip files specified by their parents.
StructuredLineNumberInfoinstead to properly track the source of lines that don't originate from the given method.