| Modifier and Type | Class and Description |
|---|---|
class |
BodyTransformer
An abstract class which acts on a Body.
|
class |
SceneTransformer
An abstract class which acts on the whole Scene.
|
| Modifier and Type | Method and Description |
|---|---|
Transformer |
Transform.getTransformer() |
| Constructor and Description |
|---|
Transform(String phaseName,
Transformer t) |
| Modifier and Type | Class and Description |
|---|---|
class |
CastAndReturnInliner
Transformers that inlines returns that cast and return an object.
|
| Modifier and Type | Class and Description |
|---|---|
class |
LoadStoreOptimizer |
class |
PeepholeOptimizer
Driver class to run peepholes on the Baf IR.
|
class |
StoreChainOptimizer
Due to local packing, we may have chains of assignments to the same local.
|
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractNullTransformer
Abstract base class for
DexNullTransformer and DexIfTransformer. |
class |
DexArrayInitReducer
Transformer that simplifies array initializations.
|
class |
DexIfTransformer
BodyTransformer to find and change definition of locals used within an if which contains a condition involving two locals
( and not only one local as in DexNullTransformer).
|
class |
DexJumpChainShortener
Transformer for reducing goto chains.
|
class |
DexNullArrayRefTransformer
If Dalvik bytecode contains statements using a base array which is always null, Soot's fast type resolver will fail with
the following exception: "Exception in thread " main" java.lang.RuntimeException: Base of array reference is not an
array!"
Those statements are replaced by a throw statement (this is what will happen in practice if the code is executed).
|
class |
DexNullInstanceofTransformer
Transformer that swaps
a = 0 instanceof _class_;
with
a = false
|
class |
DexNullThrowTransformer
Some Android applications throw null references, e.g.,
a = null; throw a;
This will make unit graph construction fail as no targets of the throw statement can be found.
|
class |
DexNullTransformer
BodyTransformer to find and change IntConstant(0) to NullConstant where locals are used as objects.
|
class |
DexNumTransformer
BodyTransformer to find and change initialization type of Jimple variables.
|
class |
DexRefsChecker |
class |
DexReturnInliner
BodyTransformer to inline jumps to return statements.
|
class |
DexReturnPacker
This transformer is the inverse of the DexReturnInliner.
|
class |
DexReturnValuePropagator |
class |
DexTransformer |
class |
DexTrapStackFixer
Transformer to ensure that all exception handlers pull the exception object.
|
class |
TrapMinimizer
Transformer that splits traps for Dalvik whenever a statements within the trap cannot reach the trap's handler.
|
| Modifier and Type | Class and Description |
|---|---|
class |
ConstructorFolder |
| Modifier and Type | Class and Description |
|---|---|
class |
CondTransformer |
| Modifier and Type | Class and Description |
|---|---|
class |
AddJSRs |
class |
BAFCounter |
class |
BafLineNumberer |
class |
BAFPrintout |
class |
ConstructorConfuser |
class |
Counter |
class |
FindDuplicateSequences |
class |
FixUndefinedLocals |
class |
IfNullToTryCatch |
class |
IndirectIfJumpsToCaughtGotos |
class |
Jimple2BafLocalBuilder |
class |
LocalsToBitField |
class |
MoveLoadsAboveIfs |
class |
RemoveRedundantPushStores |
class |
TryCatchCombiner |
class |
UpdateConstantsToFields |
class |
WrapSwitchesInTrys |
| Modifier and Type | Class and Description |
|---|---|
class |
AddSwitches |
class |
ArithmeticTransformer |
class |
BuildIntermediateAppClasses |
class |
ClassRenamer
SceneTransformer that renames class names as well as packages. |
class |
CollectConstants |
class |
CollectJimpleLocals |
class |
FieldRenamer |
class |
GotoInstrumenter
Changes the sequence of statements in which they appear in methods, preserving the sequence they are executed using
goto commands and labels. |
class |
LibraryMethodWrappersBuilder
Creates methods that "wraps" library method calls.
|
class |
MethodRenamer
Creates new method names using names of fields or generates randomly.
|
| Modifier and Type | Class and Description |
|---|---|
class |
IPaddleTransformer
Soot interface to the PaddleTransformer.
|
class |
PaddleHook
Loads the Paddle plugin.
|
| Modifier and Type | Class and Description |
|---|---|
class |
SparkTransformer
Main entry point for Spark.
|
| Modifier and Type | Class and Description |
|---|---|
class |
FieldReadTagAggregator |
class |
FieldTagAggregator |
class |
FieldTagger |
class |
FieldWriteTagAggregator |
| Modifier and Type | Class and Description |
|---|---|
class |
DumpNumAppReachableMethods |
| Modifier and Type | Class and Description |
|---|---|
class |
AvailExprTagger
A body transformer that records avail expression information in tags.
|
class |
DominatorsTagger
A body transformer that records avail expression information in tags.
|
class |
LineNumberAdder |
| Modifier and Type | Class and Description |
|---|---|
class |
ArrayBoundsChecker |
class |
RectangularArrayFinder
Interprocedural analysis to identify rectangular multi-dimension array locals.
|
| Modifier and Type | Class and Description |
|---|---|
class |
CallGraphGrapher
A scene transformer that creates a graphical callgraph.
|
class |
CallGraphTagger |
| Modifier and Type | Class and Description |
|---|---|
class |
ReachingDefsTagger |
| Modifier and Type | Class and Description |
|---|---|
class |
UnreachableFieldsTagger
A scene transformer that adds tags to unused fields.
|
| Modifier and Type | Class and Description |
|---|---|
class |
LiveVarsTagger |
| Modifier and Type | Class and Description |
|---|---|
class |
LoopFinder |
class |
LoopInvariantFinder |
| Modifier and Type | Class and Description |
|---|---|
class |
UnreachableMethodsTagger
A scene transformer that adds tags to unused methods.
|
| Modifier and Type | Class and Description |
|---|---|
class |
NullCheckEliminator |
class |
NullPointerChecker |
class |
NullPointerColorer |
| Modifier and Type | Class and Description |
|---|---|
class |
ParityTagger
A body transformer that records parity analysis information in tags.
|
| Modifier and Type | Class and Description |
|---|---|
class |
ProfilingGenerator |
| Modifier and Type | Class and Description |
|---|---|
class |
PurityAnalysis
Purity analysis phase.
|
| Modifier and Type | Class and Description |
|---|---|
class |
TightestQualifiersTagger
a scene transformer that add tags to indicate the tightest qualifies possible for fields and methods (ie: private,
protected or public)
|
| Modifier and Type | Class and Description |
|---|---|
class |
ArrayNullTagAggregator
The aggregator for ArrayNullCheckAttribute.
|
| Modifier and Type | Class and Description |
|---|---|
class |
Aggregator |
class |
ExceptionChecker |
class |
JimpleConstructorFolder |
class |
PartialConstructorFolder |
class |
RenameDuplicatedClasses
A scene transformer that renames the duplicated class names.
|
class |
ThisInliner |
| Modifier and Type | Class and Description |
|---|---|
class |
CHATransformer
Builds an invoke graph using Class Hierarchy Analysis.
|
class |
ClinitElimTransformer |
class |
UnreachableMethodTransformer |
| Modifier and Type | Class and Description |
|---|---|
class |
CriticalEdgeRemover
removes all critical edges.
A critical edge is an edge from Block A to block B, if B has more than one predecessor and A has more the one successor. As an example: If we wanted a computation to be only on the path A->B this computation must be directly on the edge. |
class |
LoopConditionUnroller
"unrolls" the condition of while/for loops.
before the first test of a while-loop, we can't be sure, if the body will be taken or not, and several optimizations (especially LCM) can't be done. |
| Modifier and Type | Class and Description |
|---|---|
class |
StaticInliner
Uses the Scene's currently-active InvokeGraph to inline monomorphic call sites.
|
class |
StaticMethodBinder
Uses the Scene's currently-active InvokeGraph to statically bind monomorphic call sites.
|
| Modifier and Type | Class and Description |
|---|---|
class |
CastCheckEliminatorDumper
A body transformer that simply calls the CastCheckEliminator analysis.
|
class |
DependenceTagAggregator |
class |
FieldRWTagger |
class |
ParameterAliasTagger
Adds colour tags to indicate potential aliasing between method parameters.
|
class |
SideEffectTagger |
| Modifier and Type | Class and Description |
|---|---|
class |
ConstantInvokeMethodBaseTransformer
This class creates a local for each string constant that is used as a base object to a reflective Method.invoke call.
|
class |
ReflectiveCallsInliner |
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractStaticnessCorrector
Abstract base class for all transformers that fix wrong code that declares something as static, but uses it like an
instance or vice versa.
|
class |
CommonSubexpressionEliminator
Runs an available expressions analysis on a body, then eliminates common subexpressions.
|
class |
ConditionalBranchFolder |
class |
ConstantCastEliminator
Transformer for removing unnecessary casts on primitive values.
|
class |
ConstantPropagatorAndFolder
Does constant propagation and folding.
|
class |
CopyPropagator |
class |
DeadAssignmentEliminator |
class |
EmptySwitchEliminator
Removes empty switch statements which always take the default action from a method body, i.e.
|
class |
FieldStaticnessCorrector
Transformer that checks whether a static field is used like an instance field.
|
class |
IdentityCastEliminator
Transformer that removes unnecessary identity casts such as
$i3 = (int) $i3
when $i3 is already of type "int".
|
class |
IdentityOperationEliminator
Transformer that eliminates unnecessary logic operations such as
$z0 = a | 0
which can more easily be repesented as
$z0 = a
|
class |
LocalNameStandardizer |
class |
MethodStaticnessCorrector
Transformer that checks whether an instance method is used like a static method, and can easily be made static, i.e., does
not reference any field or method in the "this" object.
|
class |
NopEliminator |
class |
UnconditionalBranchFolder |
class |
UnreachableCodeEliminator |
| Modifier and Type | Class and Description |
|---|---|
class |
BusyCodeMotion
Performs a partial redundancy elimination (= code motion).
|
class |
LazyCodeMotion
Performs a partial redundancy elimination (= code motion).
|
| Modifier and Type | Class and Description |
|---|---|
class |
MhpTransformer |
| Modifier and Type | Class and Description |
|---|---|
class |
LockAllocationBodyTransformer |
class |
LockAllocator |
| Modifier and Type | Class and Description |
|---|---|
class |
TypeAssigner
This transformer assigns types to local variables.
|
| Modifier and Type | Method and Description |
|---|---|
Transformer |
SootPhasePlugin.getTransformer()
Creates a new transformer instance (either SceneTransformer or BodyTransformer).
|
| Modifier and Type | Class and Description |
|---|---|
class |
ShimpleTransformer
Traverses all methods, in all classes from the Scene, and transforms them to Shimple.
|
| Modifier and Type | Class and Description |
|---|---|
class |
SConstantPropagatorAndFolder
A powerful constant propagator and folder based on an algorithm sketched by Cytron et al that takes conditional control
flow into account.
|
| Modifier and Type | Class and Description |
|---|---|
class |
FirstTagAggregator
A tag aggregator that associates a tag with the first instruction that is tagged with it.
|
class |
ImportantTagAggregator
A tag aggregator that associates a tag with the most important instruction that is tagged with it.
|
class |
InnerClassTagAggregator
The aggregator for LineNumberTable attribute.
|
class |
LineNumberTagAggregator
The aggregator for LineNumberTable attribute.
|
class |
TagAggregator
Interface to aggregate tags of units.
|
| Modifier and Type | Class and Description |
|---|---|
class |
FastDexTrapTightener
Tries may not start or end at units which have no corresponding Dalvik instructions such as IdentityStmts.
|
class |
SynchronizedMethodTransformer
The Dalvik VM requires synchronized methods to explicitly enter a monitor and leave it in a finally block again after
execution.
|
class |
TrapSplitter
Transformer that splits nested traps for Dalvik which does not support hierarchies of traps.
|
| Modifier and Type | Class and Description |
|---|---|
class |
DuplicateCatchAllTrapRemover
Some compilers generate duplicate traps:
Exception table: from to target type 9 30 37 Class java/lang/Throwable 9 30 44 any 37 46 44 any
The semantics is as follows:
try { // block } catch { // handler 1 } finally { // handler 2 }
In this case, the first trap covers the block and jumps to handler 1.
|
class |
TrapTightener
|
class |
TrapTransformer
Common abstract base class for all body transformers that change the trap list to, e.g., minimize the trap list
|
| Modifier and Type | Class and Description |
|---|---|
class |
ConstantInitializerToTagTransformer
This is the reverse operation of the
ConstantValueToInitializerTransformer. |
class |
ConstantValueToInitializerTransformer
Transformer that creates a static initializer which sets constant values into final static fields to emulate the
initializations that are done through the constant table in CLASS and DEX code, but that are not supported by Jimple.
|
class |
LocalPacker
A BodyTransformer that attemps to minimize the number of local variables used in Body by 'reusing' them when possible.
|
class |
LocalSplitter
A BodyTransformer that attemps to indentify and separate uses of a local variable that are independent of each other.
|
class |
UnusedLocalEliminator
A BodyTransformer that removes all unused local variables from a given Body.
|
| Modifier and Type | Class and Description |
|---|---|
class |
BadFields |
class |
CFGViewer
A utility class for generating dot graph file for a control flow graph
|
Copyright © 2020 Soot OSS. All rights reserved.