### SetFactory Constructor and Get Method Source: https://soot-oss.github.io/SootUp/latest/api/qilin/util/collect/SetFactory.html Details on how to instantiate SetFactory and use its get method. ```APIDOC ## SetFactory Class ### Description The SetFactory class provides utility methods for working with sets. ### Constructor #### SetFactory() - **Description**: Initializes a new instance of the SetFactory class. ### Methods #### get - **Signature**: `Set get(Set set)` - **Description**: Returns a set. The exact behavior depends on the implementation, but it typically involves processing or returning the input set. - **Parameters**: - **set** (Set) - Required - The input set to process. - **Returns**: A `Set`. ### Inherited Methods Methods inherited from class `java.lang.Object` include `clone`, `equals`, `finalize`, `getClass`, `hashCode`, `notify`, `notifyAll`, `toString`, `wait`. ``` -------------------------------- ### initialize (No Entry Points) Source: https://soot-oss.github.io/SootUp/latest/api/sootup/callgraph/ClassHierarchyAnalysisAlgorithm.html Initializes and starts the call graph algorithm without given entry points, using all main methods as starting points. ```APIDOC ## initialize ### Description This method initializes and starts the call graph algorithm without given entry points. Before the algorithm is started, all main methods are searched and set as entry points. ### Response - **CallGraph** (Object) - A generated call graph with every main class as starting point. ``` -------------------------------- ### Method: initialize Source: https://soot-oss.github.io/SootUp/latest/api/sootup/callgraph/RapidTypeAnalysisAlgorithm.html Initializes and starts the call graph algorithm. ```APIDOC ## Method: initialize ### Description Starts the call graph algorithm, optionally using specific entry points. ### Parameters #### Query Parameters - **entryPoints** (List) - Optional - List of entry points to start the analysis. ### Response #### Success Response (200) - **CallGraph** (Object) - The resulting call graph. ``` -------------------------------- ### initialize Source: https://soot-oss.github.io/SootUp/latest/api/sootup/callgraph/RapidTypeAnalysisAlgorithm.html Methods to initialize and start the call graph algorithm. ```APIDOC ## initialize() ### Description This method initializes and starts the call graph algorithm without given entry points. Before the algorithm is started, all main methods are searched and set as entry points. ### Response - **CallGraph** - A generated call graph with every main class as starting point. ## initialize(List entryPoints) ### Description This method initializes and starts the call graph algorithm with given entry points. The entry points define the start methods in the call graph algorithm. ### Parameters #### Request Body - **entryPoints** (List) - Required - A list of entry points for the call graph algorithm. ### Response - **CallGraph** - A generated call graph with every entry point as starting point. ``` -------------------------------- ### Get Starting Statement Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/graph/ImmutableBlockControlFlowGraph.html Retrieves the starting statement of the control flow graph. ```APIDOC ## GET getStartingStmt ### Description Retrieves the starting statement of the control flow graph. This method is specified in the `ControlFlowGraph` class. ### Method `public @Nullable Stmt getStartingStmt()` ### Endpoint Not applicable (method within a class) ### Parameters None ### Request Example None ### Response #### Success Response (200) - **Stmt** (Stmt) - The starting statement, or null if none exists. ``` -------------------------------- ### Build SootUp from Source Source: https://soot-oss.github.io/SootUp/latest/installation Clone the repository and install it into your local Maven repository. ```bash git clone https://github.com/secure-software-engineering/SootUp.git mvn install ``` -------------------------------- ### Class: sootup.examples.Dummy Source: https://soot-oss.github.io/SootUp/latest/api/sootup/examples/Dummy.html Documentation for the Dummy class and its associated methods. ```APIDOC ## Class: sootup.examples.Dummy ### Description This class is added so that examples/target/site/jacoco-ut directory can be created. Otherwise, there are build failures. ### Constructor - **Dummy()** - Initializes a new instance of the Dummy class. ### Methods - **foobar()** (static void) - A static method provided by the Dummy class. ``` -------------------------------- ### Get Starting Statement Block Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/graph/ImmutableBlockControlFlowGraph.html Retrieves the basic block containing the starting statement. ```APIDOC ## GET getStartingStmtBlock ### Description Retrieves the basic block containing the starting statement. This method is specified in the `ControlFlowGraph` class. ### Method `public BasicBlock getStartingStmtBlock()` ### Endpoint Not applicable (method within a class) ### Parameters None ### Request Example None ### Response #### Success Response (200) - **BasicBlock** - The basic block containing the starting statement. ``` -------------------------------- ### initialize (With Entry Points) Source: https://soot-oss.github.io/SootUp/latest/api/sootup/callgraph/CallGraphAlgorithm.html Initializes and starts the call graph algorithm using a provided list of entry points. ```APIDOC ## initialize(List entryPoints) ### Description This method initializes and starts the call graph algorithm with given entry points. The entry points define the start methods in the call graph algorithm. ### Parameters #### Request Body - **entryPoints** (List) - Required - A list of entry points for the call graph algorithm. ### Response - **CallGraph** - A generated call graph with every entry point as starting point. ``` -------------------------------- ### Set Starting Statement Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/graph/MutableControlFlowGraph.html Sets the starting statement for the control flow graph. ```APIDOC ### setStartingStmt public abstract void setStartingStmt(@NonNull Stmt firstStmt) Sets the starting statement for the control flow graph. ``` -------------------------------- ### qilin.parm.select Package Overview Source: https://soot-oss.github.io/SootUp/latest/api/qilin/parm/select/package-use.html Documentation for the CtxSelector class and its integration within the Qilin framework. ```APIDOC ## CtxSelector Class ### Description The CtxSelector class is a core component within the qilin.parm.select package. It is utilized by multiple modules including qilin.core, qilin.parm.select itself, and qilin.pta.toolkits.dd. ``` -------------------------------- ### Parse FieldSignature Examples Source: https://soot-oss.github.io/SootUp/latest/api/sootup/java/core/JavaIdentifierFactory.html Examples of parsing FieldSignature strings using Soot and JavaDoc-like syntax. ```text ``` ```text de.upb.sootup.signatures.Remove#INSTANCE: de.upb.sootup.signatures.Remove ``` -------------------------------- ### Constructor: ReturnInstruction Source: https://soot-oss.github.io/SootUp/latest/api/sootup/apk/frontend/instruction/ReturnInstruction.html Initializes a new instance of the ReturnInstruction class. ```APIDOC ## Constructor: ReturnInstruction ### Description Constructs a new ReturnInstruction object using a dexlib2 instruction and a code address. ### Parameters - **instruction** (org.jf.dexlib2.iface.instruction.Instruction) - Required - The dexlib2 instruction instance. - **codeAddress** (int) - Required - The address of the instruction in the code. ``` -------------------------------- ### Parse MethodSubSignature Examples Source: https://soot-oss.github.io/SootUp/latest/api/sootup/java/core/JavaIdentifierFactory.html Examples of parsing MethodSubSignature strings using Soot and JavaDoc-like syntax. ```text >de.upb.sootup.signatures.MethodSignature parseMethodSignature(java.lang.String)> >de.upb.sootup.signatures.MethodSignature getMethodSignature(java.lang.String, de.upb.sootup.types.JavaClassType)> ``` ```text #parseMethodSignature(java.lang.String): de.upb.sootup.signatures.MethodSignature #getMethodSignature(java.lang.String, de.upb.sootup.types.JavaClassType): de.upb.sootup.signatures.MethodSignature ``` -------------------------------- ### Initialize Engine Source: https://soot-oss.github.io/SootUp/latest/api/sootup/spark/Engine.html Constructs a new Engine object. No specific setup is required beyond instantiation. ```java public Engine() ``` -------------------------------- ### Parse MethodSignature Examples Source: https://soot-oss.github.io/SootUp/latest/api/sootup/java/core/JavaIdentifierFactory.html Examples of parsing MethodSignature strings using Soot and JavaDoc-like syntax. ```text ``` ```text de.upb.sootup.signatures.Remove#parseMethodSignature(java.lang.String): de.upb.sootup.signatures.MethodSignature de.upb.sootup.signatures.Remove#getMethodSignature(java.lang.String, de.upb.sootup.types.JavaClassType): de.upb.sootup.signatures.MethodSignature ``` -------------------------------- ### Constructor: NewInstanceInstruction Source: https://soot-oss.github.io/SootUp/latest/api/sootup/apk/frontend/instruction/NewInstanceInstruction.html Initializes a new instance of the NewInstanceInstruction class. ```APIDOC ## Constructor: NewInstanceInstruction ### Description Constructs a new instance of the NewInstanceInstruction class using the provided dexlib2 instruction and code address. ### Parameters - **instruction** (org.jf.dexlib2.iface.instruction.Instruction) - Required - The underlying dexlib2 instruction. - **codeAddress** (int) - Required - The code address associated with the instruction. ``` -------------------------------- ### Solver Entry Points Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/signatures/class-use/MethodSignature.html Initializes the Solver with a View and a list of entry point MethodSignatures. ```java Solver(View view, List entryPoints) ``` -------------------------------- ### Java Source Code Example Source: https://soot-oss.github.io/SootUp/latest/jimple-stmts The original Java source code corresponding to the Jimple and Bytecode examples. ```Java package target.exercise1; public class DemoClass { public void divideExample(int x, int y){ if(y == 0){ throw new RuntimeException("Divide by zero error"); } System.out.println("Divide result : " + x / y); } } ``` -------------------------------- ### ImmediateVisitor Methods Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/jimple/common/class-use/Local.html Details methods in ImmediateVisitor that accept Local objects. ```APIDOC ## ImmediateVisitor API ### Description Provides methods for visiting Local objects in the ImmediateVisitor. ### Methods #### `caseLocal(Local local)` - **Parameters**: - **local** (`@NonNull Local`) - The Local object to process. - **Description**: Handles the case when a Local object is encountered during visitation. ``` -------------------------------- ### Parse Field SubSignature - JavaDoc-like Syntax Example Source: https://soot-oss.github.io/SootUp/latest/api/sootup/java/core/JavaIdentifierFactory.html Example of parsing a field sub-signature using JavaDoc-like syntax. ```java #INSTANCE: de.upb.sootup.signatures.Remove ``` -------------------------------- ### simulateImpl Method Source: https://soot-oss.github.io/SootUp/latest/api/qilin/core/natives/JavaIoFileSystemListNative.html Implements the simulation logic for file system list operations, returning a String[] for old JDK versions. ```APIDOC ## simulateImpl Method ### Description Implements the simulation logic for file system list operations. Returns a String[] which only exists in old JDK (e.g., JDK6). ### Method `protected void simulateImpl()` ### Endpoint N/A (Instance Method) ### Parameters None ### Request Body None ### Response #### Success Response (void) This method does not return a value. ### Method Signature `protected void simulateImpl()` ### Overrides `simulateImpl` in class `NativeMethod` ``` -------------------------------- ### Parse Field SubSignature - Soot Syntax Example Source: https://soot-oss.github.io/SootUp/latest/api/sootup/java/core/JavaIdentifierFactory.html Example of parsing a field sub-signature using Soot syntax. ```java ``` -------------------------------- ### Get FieldRef from Stmt Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/jimple/common/ref/class-use/JFieldRef.html A general method to get the FieldRef from any Stmt. This serves as a common interface for retrieving field references. ```java JFieldRef Stmt.getFieldRef() ``` -------------------------------- ### qilin.driver Package Overview Source: https://soot-oss.github.io/SootUp/latest/api/qilin/driver/package-use.html Overview of the classes and dependencies within the qilin.driver package. ```APIDOC ## qilin.driver Package ### Description The qilin.driver package provides core functionality for driver-based analysis in SootUp. It interacts with the qilin.pta package to facilitate pointer analysis patterns. ### Classes - **ContextKind**: Represents the kind of context used in the analysis. - **PTAPattern**: Defines patterns used for pointer analysis. - **PTAPattern.Approach**: Defines the specific approach taken by a PTAPattern. ``` -------------------------------- ### Java Source Code for Switch Example Source: https://soot-oss.github.io/SootUp/latest/jimple-stmts The original Java source code used to generate the Jimple and Bytecode examples. ```Java package target.exercise1; public class DemoClass { public void switchExample(int x){ switch (x){ case 1: System.out.println("Input 1"); break; case 2: System.out.println("Input 2"); break; default: System.out.println("Input more than 2"); break; } } } ``` -------------------------------- ### Method: simulateImpl Source: https://soot-oss.github.io/SootUp/latest/api/qilin/core/natives/JavaIoFileSystemGetFileSystemNative.html Simulates the implementation of the native getFileSystem method. ```APIDOC ## Method simulateImpl ### Description Simulates the native java.io.FileSystem.getFileSystem() method, which exists in older versions of the JDK (e.g., JDK 6). It returns a variable pointing to the file system constant. ### Method protected void ### Returns - **void** - The method performs the simulation by modifying the internal state to point to the file system constant. ``` -------------------------------- ### Example Interprocedural Dataflow Analysis Implementations Source: https://soot-oss.github.io/SootUp/latest/write_analyses Refer to the test cases in the analysis submodule for example implementations of interprocedural data-flow analysis using the IFDS or IDE Framework. These examples cover various analyses like Taint Analysis, TypeState Analysis, and Linear Constant Propagation. ```java // TODO incorporate & guide through examples In the meantime please have a look into the test cases of the analysis submodule to see example implementations of interprocedural data-flow analysis via the IFDS or IDE Framework. ``` -------------------------------- ### qilin.util Package Overview Source: https://soot-oss.github.io/SootUp/latest/api/qilin/util/package-summary.html Overview of the utility classes and interfaces available in the qilin.util package for SootUp. ```APIDOC ## qilin.util Package ### Description Provides generally useful utility classes and interfaces for the SootUp framework, including data structures for graph manipulation, collection management, and efficient bitset operations. ### Key Classes and Interfaces - **ArrayNumberer**: Numbers objects for use in bitsets. - **BitVector**: Soot internal implementation of java.util.BitSet with efficient iteration. - **Chain**: Augmented data type for O(1) insertion and removal of ordered, unique elements. - **Numberer**: Interface for converting objects to unique non-negative integers. - **Pair / Triple**: Generic container classes for grouping multiple objects. - **Stopwatch**: Utility for performance measurement. - **UnionFindSet**: Implementation of the Union-Find data structure. ``` -------------------------------- ### Immediate Interface Overview Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/jimple/common/Immediate.html Overview of the Immediate interface, its hierarchy, and its role in the SootUp framework. ```APIDOC ## Interface: Immediate ### Description The `Immediate` interface represents a local variable or a constant within the SootUp Jimple IR. It is a fundamental building block for expressions and statements. ### Hierarchy - **Superinterfaces:** `EquivTo`, `JimpleIR`, `Value` - **Known Subinterfaces:** `ComparableConstant`, `Constant`, `LogicalConstant`, `NumericConstant`, `RealConstant`, `ShiftableConstant` - **Known Implementing Classes:** `BooleanConstant`, `ClassConstant`, `DoubleConstant`, `EnumConstant`, `FloatConstant`, `IntConstant`, `JavaLocal`, `Local`, `LongConstant`, `MethodHandle`, `MethodType`, `NullConstant`, `StringConstant` ### Inherited Methods - **From EquivTo:** `equivHashCode`, `equivTo` - **From Value:** `accept`, `getType`, `getUses`, `toString` ``` -------------------------------- ### initialize (No Entry Points) Source: https://soot-oss.github.io/SootUp/latest/api/sootup/callgraph/CallGraphAlgorithm.html Initializes and starts the call graph algorithm by automatically searching for and using all main methods as entry points. ```APIDOC ## initialize() ### Description This method initializes and starts the call graph algorithm without given entry points. Before the algorithm is started, all main methods are searched and set as entry points. ### Response - **CallGraph** - A generated call graph with every main class as starting point. ``` -------------------------------- ### GET /sootup/core/jimple/common/stmt/asJReturnStmt Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/jimple/common/stmt/class-use/JReturnStmt.html Converts a statement to a JReturnStmt. ```APIDOC ## GET /sootup/core/jimple/common/stmt/asJReturnStmt ### Description Returns the statement as a JReturnStmt. ### Method GET ### Response #### Success Response (200) - **JReturnStmt** (Object) - The statement cast as JReturnStmt. ``` -------------------------------- ### GET /sootup/jimple/frontend/JimpleConverterUtil/getIdentifierFactory Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/class-use/IdentifierFactory.html Retrieves the IdentifierFactory from the JimpleConverterUtil. ```APIDOC ## GET /sootup/jimple/frontend/JimpleConverterUtil/getIdentifierFactory ### Description Returns the IdentifierFactory instance used by the JimpleConverterUtil. ### Method GET ### Response #### Success Response (200) - **IdentifierFactory** (Object) - The factory instance. ``` -------------------------------- ### JThisRef Usage Source: https://soot-oss.github.io/SootUp/latest/jimple-values Example of the this pointer reference. ```Jimple @this: package.fruit.Banana ``` -------------------------------- ### qilin.util.queue Package Overview Source: https://soot-oss.github.io/SootUp/latest/api/qilin/util/queue/package-use.html Provides an efficient queue implementation to be used generally within Soot. ```APIDOC ## Package: qilin.util.queue ### Description An efficient queue implementation to be used generally within Soot. ### Classes - **ChunkedQueue**: A queue of Object's. - **QueueReader**: A queue of Object's. ``` -------------------------------- ### GET /sootup/interceptors/typeresolving/types/Integer127 Source: https://soot-oss.github.io/SootUp/latest/api/sootup/interceptors/typeresolving/types/class-use/AugmentIntegerTypes.Integer127Type.html Retrieves the Integer127 type definition. ```APIDOC ## GET /sootup/interceptors/typeresolving/types/Integer127 ### Description Retrieves the non-null Integer127 type definition from the AugmentIntegerTypes utility. ### Method GET ### Endpoint sootup.interceptors.typeresolving.types.AugmentIntegerTypes.getInteger127() ### Response #### Success Response (200) - **type** (@NonNull AugmentIntegerTypes.Integer127Type) - The Integer127 type object. ``` -------------------------------- ### Constructor: RapidTypeAnalysisAlgorithm Source: https://soot-oss.github.io/SootUp/latest/api/sootup/callgraph/RapidTypeAnalysisAlgorithm.html Initializes the RTA algorithm with a view and optional pre-instantiated classes. ```APIDOC ## Constructor: RapidTypeAnalysisAlgorithm ### Description Initializes the RTA algorithm instance. ### Parameters #### Path Parameters - **view** (View) - Required - The view context for the algorithm. - **preInstantiatedClasses** (Set) - Optional - A set of classes considered instantiated before the algorithm starts. ``` -------------------------------- ### GET /sootup/interceptors/typeresolving/types/Integer127Type/instance Source: https://soot-oss.github.io/SootUp/latest/api/sootup/interceptors/typeresolving/types/class-use/AugmentIntegerTypes.Integer127Type.html Retrieves the singleton instance of the Integer127Type. ```APIDOC ## GET /sootup/interceptors/typeresolving/types/Integer127Type/instance ### Description Returns the static instance of the AugmentIntegerTypes.Integer127Type class. ### Method GET ### Endpoint sootup.interceptors.typeresolving.types.AugmentIntegerTypes.Integer127Type.getInstance() ### Response #### Success Response (200) - **instance** (AugmentIntegerTypes.Integer127Type) - The singleton instance of the Integer127Type. ``` -------------------------------- ### GET /degree Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/jimple/common/stmt/class-use/Stmt.html Returns the degree of a node in the graph. ```APIDOC ## GET /degree ### Description Returns the amount of flows with the node as source or target. ### Method GET ### Parameters #### Query Parameters - **node** (Stmt) - Required - The statement node to calculate the degree for. ``` -------------------------------- ### GET /stmt/asJThrowStmt Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/jimple/common/stmt/class-use/JThrowStmt.html Converts a generic statement to a JThrowStmt. ```APIDOC ## GET /stmt/asJThrowStmt ### Description Attempts to cast or convert a statement to a JThrowStmt. ### Method GET ### Response #### Success Response (200) - **JThrowStmt** (Object) - The statement cast as a JThrowStmt. ``` -------------------------------- ### Method: simulateImpl Source: https://soot-oss.github.io/SootUp/latest/api/qilin/core/natives/JavaLangSystemSetOut0Native.html Simulates the behavior of the native setOut0 method. ```APIDOC ## Method: simulateImpl ### Description Simulates the native setOut0 method. This method has the side effect of updating System.out to the provided PrintStream parameter. ### Method protected void ### Notes This native method is not documented in the JDK API. ``` -------------------------------- ### GET /JimpleComparator/getInstance Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/jimple/basic/JimpleComparator.html Retrieves the singleton instance of the JimpleComparator. ```APIDOC ## GET /JimpleComparator/getInstance ### Description Returns the default JimpleComparator instance. Users can extend this class to customize comparison logic. ### Method GET ### Response #### Success Response (200) - **instance** (JimpleComparator) - The default singleton instance of the comparator. ``` -------------------------------- ### qilin.util.queue Source: https://soot-oss.github.io/SootUp/latest/api/qilin/util/collect/package-summary.html Documentation for the queue utility package. ```APIDOC ## Package: qilin.util.queue ### Description Provides an efficient queue implementation designed for general use within the Soot framework. ``` -------------------------------- ### run() Method Source: https://soot-oss.github.io/SootUp/latest/api/qilin/pta/toolkits/debloaterx/DebloaterX.html Executes the debloating process. ```APIDOC ## Method: run() ### Description Executes the main logic for the DebloaterX tool. ### Returns - **void** - This method does not return a value. ``` -------------------------------- ### Get Blocks Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/graph/ImmutableBlockControlFlowGraph.html Retrieves all basic blocks in the graph. ```APIDOC ## GET getBlocks ### Description Retrieves all basic blocks in the graph. This method is specified in the `ControlFlowGraph` class. ### Method `public @NonNull Collection getBlocks()` ### Endpoint Not applicable (method within a class) ### Parameters None ### Request Example None ### Response #### Success Response (200) - **Collection** - A collection of all basic blocks in the graph. ``` -------------------------------- ### GET /qilin/util/BitVector/iterator Source: https://soot-oss.github.io/SootUp/latest/api/qilin/util/class-use/BitSetIterator.html Retrieves an iterator for a BitVector instance. ```APIDOC ## GET /qilin/util/BitVector/iterator ### Description Returns a BitSetIterator for the specified BitVector instance. ### Method GET ### Endpoint /qilin/util/BitVector/iterator ### Response #### Success Response (200) - **BitSetIterator** (object) - An iterator object used to traverse the bits in the BitVector. ``` -------------------------------- ### simulateImpl Method Source: https://soot-oss.github.io/SootUp/latest/api/qilin/core/natives/JavaLangSystemSetIn0Native.html Implements the native method simulation for setting System.in. ```APIDOC ## simulateImpl Method ### Description This native method is not documented in the JDK API. It is intended to have the side effect of setting `System.in` to the provided parameter. ### Method `protected void simulateImpl()` ### Endpoint None ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example None ### Response #### Success Response (200) None #### Response Example None ``` -------------------------------- ### GET /getField Source: https://soot-oss.github.io/SootUp/latest/api/qilin/core/pag/FieldValNode.html Retrieves the SparkField associated with this node. ```APIDOC ## GET /getField ### Description Returns the SparkField object that this node represents. ### Response - **SparkField** - The associated field object. ``` -------------------------------- ### Constructor: BinopLitInstruction Source: https://soot-oss.github.io/SootUp/latest/api/sootup/apk/frontend/instruction/BinopLitInstruction.html Initializes a new instance of the BinopLitInstruction class. ```APIDOC ## Constructor: BinopLitInstruction ### Description Constructs a new BinopLitInstruction object using a dexlib2 instruction and a code address. ### Parameters - **instruction** (org.jf.dexlib2.iface.instruction.Instruction) - Required - The underlying dexlib2 instruction. - **codeAddress** (int) - Required - The address of the instruction in the code. ``` -------------------------------- ### JCaughtExceptionRef Usage Source: https://soot-oss.github.io/SootUp/latest/jimple-values Example of the caught exception reference. ```Jimple @caughtexception ``` -------------------------------- ### CallGraphAlgorithm.initialize Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/signatures/class-use/MethodSignature.html Initializes and starts the call graph algorithm with given entry points. ```APIDOC ## initialize ### Description Initializes and starts the call graph algorithm with given entry points. ### Parameters #### Method Parameters - **entryPoints** (List) - Required - The list of entry points to start the algorithm. ``` -------------------------------- ### JArrayRef Usage Source: https://soot-oss.github.io/SootUp/latest/jimple-values Examples of referencing array positions. ```Jimple $arr[1] = 42; $anotherLocal = arr[99]; ``` -------------------------------- ### ReplaceUseRefVisitor Initialization Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/jimple/visitor/ReplaceUseRefVisitor.html Demonstrates how to initialize the ReplaceUseRefVisitor with the old and new values. ```APIDOC ## POST /api/visitor/replace-use-ref ### Description Initializes the ReplaceUseRefVisitor with the old and new Ref usages and prepares it for visiting. ### Method POST ### Endpoint /api/visitor/replace-use-ref ### Request Body - **oldUse** (Value) - Required - The old Ref usage to be replaced. - **newUse** (Value) - Required - The new Ref usage to replace with. ### Request Example ```json { "oldUse": "someOldValue", "newUse": "someNewValue" } ``` ### Response #### Success Response (200) - **message** (string) - Indicates successful initialization. #### Response Example ```json { "message": "ReplaceUseRefVisitor initialized successfully." } ``` ``` -------------------------------- ### Package Dependency Overview Source: https://soot-oss.github.io/SootUp/latest/api/qilin/parm/heapabst/package-use.html Overview of the dependencies between qilin.core and qilin.parm.heapabst. ```APIDOC ## Package Dependency: qilin.core -> qilin.parm.heapabst ### Description Lists the classes within the qilin.parm.heapabst package that are utilized by the qilin.core package. ### Used Classes - **HeapAbstractor** - A class used by qilin.core. ``` -------------------------------- ### InvokeInterfaceInstruction Constructor Source: https://soot-oss.github.io/SootUp/latest/api/sootup/apk/frontend/instruction/InvokeInterfaceInstruction.html Initializes a new instance of the InvokeInterfaceInstruction class. ```APIDOC ## Constructor: InvokeInterfaceInstruction ### Description Constructs an InvokeInterfaceInstruction object using the provided dexlib2 instruction and code address. ### Parameters - **instruction** (org.jf.dexlib2.iface.instruction.Instruction) - Required - The underlying dexlib2 instruction. - **codeAddress** (int) - Required - The address of the instruction in the code. ``` -------------------------------- ### isStartPoint Source: https://soot-oss.github.io/SootUp/latest/api/sootup/analysis/interprocedural/icfg/BackwardsInterproceduralCFG.html Checks if a given statement is a start point of a method. ```APIDOC ## GET /isStartPoint ### Description Checks if a given statement is a start point of a method. ### Method GET ### Endpoint `/isStartPoint` ### Parameters #### Path Parameters None #### Query Parameters - **stmt** (Stmt) - Required - The statement to check. #### Request Body None ### Request Example None ### Response #### Success Response (200) - **boolean** - True if the statement is a start point, false otherwise. #### Response Example ```json { "isStartPoint": true } ``` ``` -------------------------------- ### sootup.apk.frontend.instruction - Local Usage Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/jimple/common/class-use/Local.html Illustrates methods returning 'Local', methods accepting 'Local' parameters, and methods with 'Local' type arguments in sootup.apk.frontend.instruction. ```APIDOC ## sootup.apk.frontend.instruction - Local Usage ### Methods Returning Local #### Method `protected List MethodInvocationInstruction.buildParameters(DexBody body, List paramTypes, boolean isStatic)` ### Methods Accepting Local Parameters #### Method `protected JAssignStmt FieldInstruction.getAssignStmt(Local sourceValue, ConcreteRef instanceField)` ### Description Checks if the field type equals the type of the value that will be stored in the field. #### Method `protected Stmt PackedSwitchInstruction.switchStatement(DexBody body, org.jf.dexlib2.iface.instruction.Instruction targetData, Local key)` #### Method `protected Stmt SparseSwitchInstruction.switchStatement(DexBody body, org.jf.dexlib2.iface.instruction.Instruction targetData, Local key)` #### Method `protected abstract Stmt SwitchInstruction.switchStatement(DexBody body, org.jf.dexlib2.iface.instruction.Instruction targetData, Local key)` ### Methods with Local Type Arguments #### Method `protected List MethodInvocationInstruction.buildArgs(List locals)` ``` -------------------------------- ### GET /sootup/interceptors/typeresolving/types/TopType/getInstance Source: https://soot-oss.github.io/SootUp/latest/api/sootup/interceptors/typeresolving/types/class-use/TopType.html Retrieves the singleton instance of the TopType class. ```APIDOC ## GET /sootup/interceptors/typeresolving/types/TopType/getInstance ### Description Retrieves the static singleton instance of the TopType class used within the type resolving interceptors. ### Method GET ### Endpoint /sootup/interceptors/typeresolving/types/TopType/getInstance ### Response #### Success Response (200) - **instance** (TopType) - The singleton instance of TopType. ``` -------------------------------- ### Class CaseA Source: https://soot-oss.github.io/SootUp/latest/api/qilin/pta/toolkits/zipper/cases/CaseA.html Documentation for the CaseA class constructor. ```APIDOC ## Class: qilin.pta.toolkits.zipper.cases.CaseA ### Description Represents a case object within the SootUp toolkit. Inherits from java.lang.Object. ### Constructor #### CaseA() - **Description**: Initializes a new instance of the CaseA class. ``` -------------------------------- ### GET /types/augment/integer32767 Source: https://soot-oss.github.io/SootUp/latest/api/sootup/interceptors/typeresolving/types/AugmentIntegerTypes.Integer32767Type.html Retrieves the singleton instance of the Integer32767Type class. ```APIDOC ## GET /types/augment/integer32767 ### Description Returns the singleton instance of the Integer32767Type, which is used as an intermediate type for determining the ancestor of an integer type. ### Method GET ### Endpoint /types/augment/integer32767 ### Response #### Success Response (200) - **instance** (AugmentIntegerTypes.Integer32767Type) - The singleton instance of the type. ``` -------------------------------- ### GET /sootup/core/types/NullType/getInstance Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/types/NullType.html Retrieves the singleton instance of the NullType class. ```APIDOC ## GET /sootup/core/types/NullType/getInstance ### Description Returns the static singleton instance of the NullType class. ### Method GET ### Endpoint /sootup/core/types/NullType/getInstance ### Response #### Success Response (200) - **instance** (NullType) - The singleton instance of NullType. ``` -------------------------------- ### simulateImpl Method Source: https://soot-oss.github.io/SootUp/latest/api/qilin/core/natives/JavaLangThreadStart0Native.html Simulates the behavior of Thread.start(), redirecting calls to Thread.run(). This is a native method implementation. ```APIDOC ## simulateImpl Method ### Description This method is called to simulate the native behavior of Thread.start(). In the context of this library, calls to Thread.start() are redirected to Thread.run(). This method is part of the native method simulation for Java's threading. ### Method `protected void` ### Endpoint None (This is a method within a class) ### Parameters None ### Request Example None ### Response None ### Details Calls to Thread.start() get redirected to Thread.run(). In JRE 1.5 and JRE 1.6 Thread.start() is defined in Java and there is native method start0. Specified by: `simulateImpl` in class `NativeMethod` ``` -------------------------------- ### DexFileProvider Methods Source: https://soot-oss.github.io/SootUp/latest/api/sootup/apk/frontend/dexpler/DexFileProvider.html Documentation for the static and instance methods of the DexFileProvider class. ```APIDOC ## Method: getInstance() ### Description Retrieves the singleton instance of the `DexFileProvider`. ### Method `public static DexFileProvider getInstance()` ### Returns The singleton instance of `DexFileProvider`. ``` ```APIDOC ## Method: getDexFromSource(File dexSource, int api_version) ### Description Returns all DEX files found within the specified DEX source. ### Method `public List> getDexFromSource(File dexSource, int api_version)` ### Parameters #### Path Parameters * **dexSource** (File) - Required - Path to a jar, apk, dex, odex or a directory containing multiple dex files * **api_version** (int) - Required - The version of the currently instrumenting APK ### Returns A list of DEX files derived from the source. ### Throws * `IOException` - if the dex source is not parsed properly. ``` ```APIDOC ## Method: getDexFromSource(File dexSource, Comparator> prioritizer) ### Description Returns all DEX files found within the specified DEX source, prioritized by the given comparator. ### Method `public List> getDexFromSource(File dexSource, Comparator> prioritizer)` ### Parameters #### Path Parameters * **dexSource** (File) - Required - Path to a jar, apk, dex, odex or a directory containing multiple dex files * **prioritizer** (Comparator) - Required - A comparator to prioritize the DEX containers. ### Throws * `IOException` ``` ```APIDOC ## Method: allSourcesFromFile(File dexSource) ### Description Retrieves all sources from a given file. ### Method `public List allSourcesFromFile(File dexSource)` ### Parameters #### Path Parameters * **dexSource** (File) - Required - The file from which to retrieve sources. ``` -------------------------------- ### GET /sootup/core/types/PrimitiveType/BooleanType Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/types/PrimitiveType.BooleanType.html Retrieves the singleton instance of the BooleanType class. ```APIDOC ## GET /sootup/core/types/PrimitiveType/BooleanType/getInstance ### Description Returns the static singleton instance of the BooleanType class. ### Method GET ### Endpoint /sootup/core/types/PrimitiveType/BooleanType/getInstance ### Response #### Success Response (200) - **instance** (PrimitiveType.BooleanType) - The singleton instance of BooleanType. ``` -------------------------------- ### InvokeVirtualInstruction.jimplify Source: https://soot-oss.github.io/SootUp/latest/api/sootup/apk/frontend/instruction/InvokeVirtualInstruction.html Jimplifies this instruction into the provided DexBody. ```APIDOC ## InvokeVirtualInstruction.jimplify ### Description Jimplify this instruction. ### Method `void jimplify(DexBody body)` ### Endpoint N/A (Instance Method) ### Parameters #### Request Body - **body** (DexBody) - The DexBody to jimplify into. ``` -------------------------------- ### GET /sootup.core.transform/RunTimeBodyInterceptor/getBiMetric Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/transform/class-use/BodyInterceptorMetric.html Retrieves the BodyInterceptorMetric instance from the RunTimeBodyInterceptor class. ```APIDOC ## GET /sootup.core.transform/RunTimeBodyInterceptor/getBiMetric ### Description Retrieves the BodyInterceptorMetric associated with the RunTimeBodyInterceptor. ### Method GET ### Endpoint sootup.core.transform.RunTimeBodyInterceptor.getBiMetric() ### Response #### Success Response (200) - **BodyInterceptorMetric** (object) - The metric instance associated with the body interceptor. ``` -------------------------------- ### GET /method/body Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/model/class-use/Body.html Retrieves or updates the body associated with a JavaSootMethod. ```APIDOC ## GET /method/body ### Description Retrieves the active body for a specific JavaSootMethod. ### Method GET ### Response #### Success Response (200) - **body** (Body) - The active body of the method. ## PUT /method/body ### Description Updates the body of a JavaSootMethod. ### Method PUT ### Parameters #### Request Body - **body** (Body) - Required - The new body to associate with the method. ``` -------------------------------- ### StmtVisitor Accept Methods in sootup.core.jimple.javabytecode.stmt Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/jimple/visitor/class-use/StmtVisitor.html Illustrates the accept method for StmtVisitor in sootup.core.jimple.javabytecode.stmt. ```APIDOC ## POST /javabytecode/stmt/accept ### Description Accepts a StmtVisitor for bytecode statement processing. ### Method POST ### Endpoint /javabytecode/stmt/accept ### Parameters #### Request Body - **visitor** (StmtVisitor) - Required - The visitor object to accept. ### Request Example ```json { "visitor": "@NonNull V v" } ``` ### Response #### Success Response (200) - **result** (V) - The result of the visitor's operation. #### Response Example ```json { "result": "V" } ``` ``` -------------------------------- ### GET /sootup.core.jimple.common.stmt/JInvokeStmt/methods Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/jimple/common/stmt/class-use/JInvokeStmt.html Methods for manipulating and converting JInvokeStmt objects. ```APIDOC ## GET /sootup.core.jimple.common.stmt/JInvokeStmt/methods ### Description Provides methods to cast, transform, and update JInvokeStmt instances. ### Method GET ### Endpoint JInvokeStmt methods ### Response #### Success Response (200) - **asJInvokeStmt()** (JInvokeStmt) - Returns the object as a JInvokeStmt. - **withInvokeExpr(AbstractInvokeExpr)** (JInvokeStmt) - Returns a new JInvokeStmt with the specified invoke expression. - **withPositionInfo(StmtPositionInfo)** (JInvokeStmt) - Returns a new JInvokeStmt with the specified position info. - **toJInvokeStmt()** (Optional) - Attempts to convert to a JInvokeStmt. ``` -------------------------------- ### qilin.pta Package Overview Source: https://soot-oss.github.io/SootUp/latest/api/qilin/pta/package-use.html Overview of the classes available in the qilin.pta package for pointer analysis configuration. ```APIDOC ## qilin.pta Package ### Description The qilin.pta package provides classes for configuring pointer analysis within the SootUp framework. ### Classes - **PTAConfig**: Base configuration class for pointer analysis. - **PTAConfig.PointerAnalysisConfiguration**: Specific configuration settings for pointer analysis. - **PTAConfig.TurnerConfig**: Configuration settings related to Turner analysis. ``` -------------------------------- ### qilin.parm.ctxcons Package Overview Source: https://soot-oss.github.io/SootUp/latest/api/qilin/parm/ctxcons/package-use.html Overview of the qilin.parm.ctxcons package and its primary class. ```APIDOC ## Package: qilin.parm.ctxcons ### Description This package contains context constructor functionalities. ### Classes #### CtxConstructor * Description: Represents a context constructor. * Used by: qilin.core, qilin.parm.ctxcons, qilin.pta.toolkits.dd, qilin.pta.tools ``` -------------------------------- ### Get This Local Source: https://soot-oss.github.io/SootUp/latest/api/sootup/core/jimple/common/class-use/Local.html Retrieves the 'this' local variable if it exists. ```java LocalGenerator.getThisLocal() ``` -------------------------------- ### Constructor ClassHierarchyAnalysisAlgorithm Source: https://soot-oss.github.io/SootUp/latest/api/sootup/callgraph/ClassHierarchyAnalysisAlgorithm.html Initializes a new instance of the ClassHierarchyAnalysisAlgorithm. ```APIDOC ## Constructor ClassHierarchyAnalysisAlgorithm ### Description The constructor of the CHA algorithm. ### Parameters #### Path Parameters - **view** (View) - Required - It contains the data of the classes and methods ```