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 ClassVisitor lets a given MemberVisitor visit all Field instances of the classes 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 ClassVisitor lets a given MemberVisitor visit all Method 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 simple implementation of BamCache where the cache is implemented as a HashMap.
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 TableSwitchStmt
 
 
This 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 Waitlist pops the first element, i.e., performs a breadth first traversal over the Cfa.
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.
A Cfa is a control flow automaton with nodes <CfaNodeT> and edges <CfaEdgeT>.
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.
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 LabelStmt
This 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.
A method call whose target Method is contained in our ClassPool.
This ClassVisitor lets a given ClassVisitor travel to the first concrete subclasses down in its hierarchy of abstract classes and concrete classes.
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.
This Waitlist pops the last element, i.e., performs a depth first traversal over the Cfa.
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.
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.
Use StructuredLineNumberInfo instead to properly track the source of lines that don't originate from the given method.
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.`
 
This utility class provides methods to read the classes in jar, zips, aars into a ClassPool and write a ClassPool to a jar.
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.
This AttributeVisitor visits the CodeAttribute of a Method and performs two different tasks:
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.
 
 
 
 
 
 
 
 
 
Filter KotlinDeclarationContainers, based on the given predicate.
This class is named after Kotlin's own naming scheme.
Flags for Kotlin types.
 
 
 
 
 
 
 
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.
Write a KotlinModule from a ResourceFilePool to the supplied DataEntryWriter.
 
 
 
Print Kotlin modules.
Read an input stream into a KotlinModule object.
Initialize the Kotlin module references.
A visitor for KotlinModule.
 
 
Delegate to another KotlinMetadataVisitor if the predicate returns true.
 
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.
 
 
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.
A utility class for keeping track of pairs, e.g.Clazz and Member
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.
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 is the result of PrecisionAdjustment, namely an AbstractState and Precision.
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.
The ReachedSet stores reached States discovered by the CpaAlgorithm.
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 ReflectionExecutor
A 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.
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.
This ReflectionExecutor supports methods of the classes String, StringBuilder and StringBuffer.
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.
A call whose target Method is not available in our ClassPool.
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.
The TransferRelation computes the successor AbstractStates for the CpaAlgorithm.
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.
This interface provides methods to create Value instances.
 
 
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
The Waitlist stores the AbstractStates the CpaAlgorithm needs to process.
 
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.