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() |
Transformer |
Transform.getTransformer() |
Constructor and Description |
---|
Transform(String phaseName,
Transformer t) |
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 |
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 |
class |
CollectConstants |
class |
CollectJimpleLocals |
class |
FieldRenamer |
class |
GotoInstrumenter |
class |
LibraryMethodWrappersBuilder |
class |
MethodRenamer |
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
TODO:
- test, test, and test (and correct the potentially infinite bugs)
- optimise PurityGraph, especially methodCall)
- find a better abstraction for exceptions (throw & catch)
- output nicer graphs (especially clusters!)
|
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 |
ReflectiveCallsInliner |
Modifier and Type | Class and Description |
---|---|
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 |
class |
IdentityCastEliminator
Transformer that removes unnecessary identity casts such as
$i3 = (int) $i3
when $i3 is already of type "int".
|
class |
LocalNameStandardizer |
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).
|
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 |
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
|