Uses of Class
com.pnfsoftware.jeb.core.units.code.android.controlflow.BasicBlock
Packages that use BasicBlock
Package
Description
Control flow graph classes used by the Android components, including
dexdec
.This package contains types used to publicly access and manipulate JEB's DEX Decompiler (referred
to as
dexdec
) Intermediate Representation (IR) objects.Specific types used by Dex units to render Dex disassembly code.
-
Uses of BasicBlock in com.pnfsoftware.jeb.core.units.code.android.controlflow
Methods in com.pnfsoftware.jeb.core.units.code.android.controlflow that return BasicBlockModifier and TypeMethodDescriptionCFG.get
(int index) CFG.getBlock
(int index) CFG.getBlockAt
(long address) CFG.getBlockByLastAddress
(long lastAddress) CFG.getBlockContaining
(long address) CFG.getBlockEndingAt
(long address) CFG.getBlockFor
(InsnType insn) Search an instruction by reference.CFG.getEntryBlock()
BasicBlock.getInputBlock
(int index) BasicBlock.getIrregularInputBlock
(int index) BasicBlock.getIrregularOutputBlock
(int index) CFG.getLast()
BasicBlock.getOutputBlock
(int index) CFG.splitBlock
(BasicBlock<InsnType> b, int index) Split a block into two blocks.Methods in com.pnfsoftware.jeb.core.units.code.android.controlflow that return types with arguments of type BasicBlockModifier and TypeMethodDescriptionCFG.getAddressBlockMap()
Get a complete map of the basic blocks and their addresses in the CFG.BasicBlock.getAllInputBlocks()
BasicBlock.getAllInputs()
BasicBlock.getAllOutputBlocks()
BasicBlock.getAllOutputs()
CFG.getBlocks()
CFG.getBlocksView()
CFG.getExitBlocks()
BasicBlock.getInputBlocks()
BasicBlock.getInputs()
Retrieve a read-only list of input blocks (regular).CFG.getInstructionLocation
(long address) CFG.getInstructionLocation
(long address, boolean precise) Locate an instruction.BasicBlock.getIrregularInputBlocks()
BasicBlock.getIrregularInputs()
Retrieve a read-only list of irregular input blocks.BasicBlock.getIrregularOutputBlocks()
BasicBlock.getIrregularOutputs()
Retrieve a read-only list of irregular output blocks.BasicBlock.getOutputBlocks()
BasicBlock.getOutputs()
Retrieve a read-only list of output blocks (regular).CFG.handlers()
CFG.iterator()
Methods in com.pnfsoftware.jeb.core.units.code.android.controlflow with parameters of type BasicBlockModifier and TypeMethodDescriptionvoid
CFG.addBlock
(int index, BasicBlock<InsnType> b) Insert a block, does nothing else.void
CFG.addBlock
(BasicBlock<InsnType> b) Add a block, does nothing else.boolean
CFG.addEdge
(BasicBlock<InsnType> x, BasicBlock<InsnType> y) Append an out-edge.int
CFG.addEdge
(BasicBlock<InsnType> x, BasicBlock<InsnType> y, int index) Add an out-edge.boolean
CFG.addIrregularEdge
(BasicBlock<InsnType> x, BasicBlock<InsnType> y) Connect (irregularly) a source block to destination block.int
CFG.addIrregularEdge
(BasicBlock<InsnType> x, BasicBlock<InsnType> y, int index) Connect (irregularly) a source block to destination block.boolean
CFG.deleteEdge
(BasicBlock<InsnType> x, BasicBlock<InsnType> y) Delete an edge x->y.int
CFG.deleteEdge
(BasicBlock<InsnType> x, BasicBlock<InsnType> y, int xToYPos) Delete an edge x->y.int
CFG.deleteEdges
(BasicBlock<InsnType> x, BasicBlock<InsnType> y) boolean
CFG.deleteIrregularEdge
(BasicBlock<InsnType> x, BasicBlock<InsnType> y) Delete an irregular edge x->y.int
CFG.deleteIrregularEdge
(BasicBlock<InsnType> x, BasicBlock<InsnType> y, int xToYPos) Delete an irregular edge x->y.int
CFG.deleteIrregularEdges
(BasicBlock<InsnType> x, BasicBlock<InsnType> y) void
Delete all irregular output edges for the provided block.void
CFG.deleteOutEdges
(BasicBlock<InsnType> b) Delete all regular output edges for the provided block.int
CFG.indexOf
(BasicBlock<InsnType> b) int
CFG.reconnectEdge
(BasicBlock<InsnType> x, BasicBlock<InsnType> y, BasicBlock<InsnType> z) This method reconnects a block x from y to z, i.e.int
CFG.reconnectEdge
(BasicBlock<InsnType> x, BasicBlock<InsnType> y, BasicBlock<InsnType> z, Integer xToYPos) This method reconnects a block x from y to z, i.e.int
CFG.reconnectEdges
(BasicBlock<InsnType> x, BasicBlock<InsnType> y, BasicBlock<InsnType> z) int
CFG.reconnectIrregularEdge
(BasicBlock<InsnType> x, BasicBlock<InsnType> y, BasicBlock<InsnType> z) This method irregularly reconnects a block x from y to z, i.e.int
CFG.reconnectIrregularEdge
(BasicBlock<InsnType> x, BasicBlock<InsnType> y, BasicBlock<InsnType> z, Integer xToYPos) This method irregularly reconnects a block x from y to z, i.e.int
CFG.reconnectIrregularEdges
(BasicBlock<InsnType> x, BasicBlock<InsnType> y, BasicBlock<InsnType> z) void
CFG.removeBlock
(BasicBlock<InsnType> b) Remove a block (preferably empty) and update the fixtures.boolean
CFG.removeBlockSafe
(BasicBlock<InsnType> b) Remove a block (preferably empty) and update the fixtures.int
CFG.removeDuplicateEdges
(BasicBlock<InsnType> x, BasicBlock<InsnType> y) Remove duplicate edges (regular) from a source block to a destination block.int
Remove duplicate irregular edges from a source block to a destination block.CFG.splitBlock
(BasicBlock<InsnType> b, int index) Split a block into two blocks. -
Uses of BasicBlock in com.pnfsoftware.jeb.core.units.code.android.ir
Methods in com.pnfsoftware.jeb.core.units.code.android.ir that return BasicBlockModifier and TypeMethodDescriptionstatic BasicBlock<IDInstruction>
DUtil.splitBlock
(IDMethodContext ctx, BasicBlock<IDInstruction> blk, int index) Split a block of the context's CFG into two blocks.Methods in com.pnfsoftware.jeb.core.units.code.android.ir that return types with arguments of type BasicBlockModifier and TypeMethodDescriptionstatic Collection<BasicBlock<IDInstruction>>
DUtil.determineInterval
(BasicBlock<IDInstruction> hdrblk) Find the graph interval rooted in the provided header block.static Collection<BasicBlock<IDInstruction>>
DUtil.getReachableBlocks
(CFG<IDInstruction> cfg) Get the list of reachable blocks of the provided IR-CFG.Methods in com.pnfsoftware.jeb.core.units.code.android.ir with parameters of type BasicBlockModifier 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 Collection<BasicBlock<IDInstruction>>
DUtil.determineInterval
(BasicBlock<IDInstruction> hdrblk) Find the graph interval rooted in the provided header block.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 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 boolean
DUtil.removeInstruction
(BasicBlock<IDInstruction> b, int idx) Remove an instruction in a block.static boolean
DUtil.removeUnreachableTrampoline
(CFG<IDInstruction> cfg, BasicBlock<IDInstruction> b) Remove an unreachable trampoline block (ending on a JCOND or JUMP).static BasicBlock<IDInstruction>
DUtil.splitBlock
(IDMethodContext ctx, BasicBlock<IDInstruction> blk, int index) Split a block of the context's CFG into two blocks. -
Uses of BasicBlock in com.pnfsoftware.jeb.core.units.code.android.render
Methods in com.pnfsoftware.jeb.core.units.code.android.render with parameters of type BasicBlockModifier and TypeMethodDescriptionIDexItemToAnchor.fromInstruction
(IDexMethod m, BasicBlock<IDalvikInstruction> b) Convert the first instruction of aBasicBlock
of anIDexMethod
to its anchor id.