Uses of Interface
com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction
Packages that use IDInstruction
Package
Description
This package contains types used to publicly access and manipulate JEB's DEX Decompiler (referred
to as
dexdec
) Intermediate Representation (IR) objects.-
Uses of IDInstruction in com.pnfsoftware.jeb.core.units.code.android.ir
Fields in com.pnfsoftware.jeb.core.units.code.android.ir with type parameters of type IDInstructionModifier and TypeFieldDescriptionAbstractDOptimizer.cfg
Target method's IR CFG, set up for convenience (seeIDMethodContext.getCfg()
)AbstractDOptimizer.dfa
The data flow analysis object is initially UNINITIALIZED.Methods in com.pnfsoftware.jeb.core.units.code.android.ir that return IDInstructionModifier and TypeMethodDescriptiondefault IDInstruction
IDExpression.asInstruction()
IDInstruction.copy
(DCopyOptions opt) IDMethodContext.createAssign
(IDExpression dst, IDExpression src) Create anassignment
instruction.IDMethodContext.createConstruct
(IDNewInfo info) Create anew Object(...)
instruction.IDMethodContext.createInvoke
(IDCallInfo info) Create aninvocation
instruction.IDMethodContext.createJcond
(int irTargetOffset, IDExpression cond) Create ajcond
(conditional jump) instruction.IDMethodContext.createJump
(int irTargetOffset) Create agoto
(unconditional jump) instruction.IDMethodContext.createMonitorEnter
(IDExpression exp) Create amonitor-enter
instruction.IDMethodContext.createMonitorExit
(IDExpression exp) Create amonitor-exit
instruction.IDMethodContext.createNewArray
(IDNewArrayInfo info) Create anew array
instruction.IDMethodContext.createNop()
Create ano-operation
instruction.IDMethodContext.createReturn
(IDExpression exp) Create areturn
instruction.IDMethodContext.createStoreException
(IDVar ident) Create anexception-store
instruction.IDMethodContext.createSwitch
(IDExpression swexp, IDSwitchData data) Create aswitch
instruction.IDMethodContext.createThrow
(IDExpression exp) Create athrow
instruction.IDInstruction.duplicate()
Deep copy of this instruction.IDInstruction.duplicateForReplacement
(IDInstruction replacedInsn) Duplicate this instruction with the intent to replace the source instruction.IDInstruction.duplicateWithOffsetAndSize
(long offset, int size) static IDInstruction
DUtil.nextInstruction
(CFG<IDInstruction> cfg, BasicBlock<IDInstruction> b, int i) Determine the meaningful next instruction in the execution flow, assuming no exception was raised.IDInstruction.withOffset
(long offset) Update the instruction offset.IDInstruction.withSize
(int size) Update the instruction size.Methods in com.pnfsoftware.jeb.core.units.code.android.ir that return types with arguments of type IDInstructionModifier and TypeMethodDescriptionprotected IDFA<IDInstruction>
AbstractDOptimizer.analyzeChains()
Retrieve and set theAbstractDOptimizer.dfa
field, a data flow analysis object forAbstractDOptimizer.cfg
.protected IDFA<IDInstruction>
AbstractDOptimizer.analyzeChains
(boolean redo) Retrieve and set theAbstractDOptimizer.dfa
field, a data flow analysis object forAbstractDOptimizer.cfg
.static CFG<IDInstruction>
DUtil.copyGraph
(CFG<IDInstruction> cfg, boolean deepCopy, IDMethodContext newContext) Copy an IR-CFG.static Collection<BasicBlock<IDInstruction>>
DUtil.determineInterval
(BasicBlock<IDInstruction> hdrblk) Find the graph interval rooted in the provided header block.IDMethodContext.getCfg()
Get the current IR (intermediate representation) CFG of the decompiled method.DExecutionParameters.getCFG()
DExecutionParameters.getInstructionMap()
static Collection<BasicBlock<IDInstruction>>
DUtil.getReachableBlocks
(CFG<IDInstruction> cfg) Get the list of reachable blocks of the provided IR-CFG.static BasicBlock<IDInstruction>
DUtil.splitBlock
(IDMethodContext ctx, BasicBlock<IDInstruction> blk, int index) Split a block of the context's CFG into two blocks.static List<IDInstruction>
DUtil.unroll
(IDMethodContext ctx, IDVar pivotVar, long addrStart, long addrEnd, int maxProcessedInsnCount, int maxUnrolledInsnCount, int maxLoopIterCnt) Attempt to unroll some code whose pivot is a singlevariable
.Methods in com.pnfsoftware.jeb.core.units.code.android.ir with parameters of type IDInstructionModifier and TypeMethodDescriptionvoid
IDInstruction.copyBaseFields
(IDInstruction sourceInsn) Copy all base fields, that is all fields but the opcode and operands of the source instruction to this instruction.IDInstruction.duplicateForReplacement
(IDInstruction replacedInsn) Duplicate this instruction with the intent to replace the source instruction.static ContextAccessType
DUtil.getCAT
(IDInstruction insn, boolean inclAssigDst) Determine the aggregated context type of an instruction.static boolean
DUtil.modifyInstructionSize
(IDMethodContext ctx, IDInstruction targetInstruction, int minWantedSize) Modify the size of an instruction within a CFG.Method parameters in com.pnfsoftware.jeb.core.units.code.android.ir with type arguments of type IDInstructionModifier and TypeMethodDescriptionstatic boolean
DUtil.canThrow
(BasicBlock<IDInstruction> b, int from) Determine whether the trailing instructions of a block can throw.static boolean
DUtil.canThrow
(BasicBlock<IDInstruction> b, int from, int to) Determine whether a provided range of instructions of a block can throw.static boolean
DUtil.checkBlock
(BasicBlock<IDInstruction> b, DOpcodeType... opcodes) Check for instruction matching in the provided block.static int
DUtil.checkSequence
(CFG<IDInstruction> cfg, int blkindex, DOpcodeType... opcodes) Check for instruction matching in a sequence of blocks.static CFG<IDInstruction>
DUtil.copyGraph
(CFG<IDInstruction> cfg, boolean deepCopy, IDMethodContext newContext) Copy an IR-CFG.static Collection<BasicBlock<IDInstruction>>
DUtil.determineInterval
(BasicBlock<IDInstruction> hdrblk) Find the graph interval rooted in the provided header block.static void
DUtil.dump
(CFG<IDInstruction> cfg, String filename) Dump an IR-CFG to a Graphvizdot
file in the user's temporary folder.static void
DUtil.dump
(CFG<IDInstruction> cfg, String filename, String title) Dump an IR-CFG to a Graphvizdot
file in the user's temporary folder.static Collection<BasicBlock<IDInstruction>>
DUtil.getReachableBlocks
(CFG<IDInstruction> cfg) Get the list of reachable blocks of the provided IR-CFG.static boolean
DUtil.isProtectedByCatchAll
(IDMethodContext ctx, BasicBlock<IDInstruction> blk) Determine whether the provided block is protected by acatch-all
(catching Throwable).static boolean
DUtil.isUsingCaughtException
(IDMethodContext ctx, BasicBlock<IDInstruction> b) static boolean
DUtil.mergeBlocks
(IDMethodContext ctx, BasicBlock<IDInstruction> firstBlock) Merge two blocks.static int
DUtil.modifyInstructionSizes
(IDMethodContext ctx, Function<IDInstruction, Integer> modifier) Update the instruction sizes of a CFG.static IDInstruction
DUtil.nextInstruction
(CFG<IDInstruction> cfg, BasicBlock<IDInstruction> b, int i) Determine the meaningful next instruction in the execution flow, assuming no exception was raised.static IDInstruction
DUtil.nextInstruction
(CFG<IDInstruction> cfg, BasicBlock<IDInstruction> b, int i) Determine the meaningful next instruction in the execution flow, assuming no exception was raised.static int
DUtil.removeGaps
(CFG<IDInstruction> cfg) Remove all gaps from the provided IR-CFG.static boolean
DUtil.removeInstruction
(BasicBlock<IDInstruction> b, int idx) Remove an instruction in a block.static int
DUtil.removeUnreachableBlocks
(CFG<IDInstruction> cfg, IDTryData ex) Remove unreachable blocks from an IR-CFG.static boolean
DUtil.removeUnreachableTrampoline
(CFG<IDInstruction> cfg, BasicBlock<IDInstruction> b) Remove an unreachable trampoline block (ending on a JCOND or JUMP).static boolean
DUtil.removeUnreachableTrampoline
(CFG<IDInstruction> cfg, BasicBlock<IDInstruction> b) Remove an unreachable trampoline block (ending on a JCOND or JUMP).void
IDMethodContext.replace
(CFG<IDInstruction> replCfg, IDTryData replExdata) Replace the current IR by a new CFG and exception information.void
IDMethodContext.replaceCFG
(CFG<IDInstruction> cfg2, Map<Integer, Integer> oldToNewOffsets) Replace the current IR by a new CFG and exception information.static BasicBlock<IDInstruction>
DUtil.splitBlock
(IDMethodContext ctx, BasicBlock<IDInstruction> blk, int index) Split a block of the context's CFG into two blocks.static boolean
DUtil.unprotectBlock
(CFG<IDInstruction> cfg, IDTryData exdata, int blkAddress) Unprotect a basic block.static void
DUtil.verifyDataFlow
(CFG<IDInstruction> cfg) Perform data flow verifications on the graph.static void
DUtil.verifyGraph
(IDMethodContext ctx, CFG<IDInstruction> cfg, IDTryData exdata, String dumpFilename, String info) Verify an IR-CFG.static int
DUtil.verifyUnicity
(CFG<IDInstruction> cfg) Verify IR unicity within a full graph.Constructor parameters in com.pnfsoftware.jeb.core.units.code.android.ir with type arguments of type IDInstructionModifierConstructorDescriptionCreate an object, ready to emulate an entire IR routine.DExecutionParameters
(CFG<IDInstruction> cfg, IDTryData exdata) Create an object, ready to emulate an entire IR routine.DExecutionParameters
(SortedMap<Integer, IDInstruction> insnmap) Create an object.DExecutionParameters
(SortedMap<Integer, IDInstruction> insnmap, Map<Integer, Integer> dalvik2irmap, Map<Integer, Integer> ir2dalvikmap) Create an object.