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.cfgTarget method's IR CFG, set up for convenience (seeIDMethodContext.getCfg())AbstractDOptimizer.dfaThe data flow analysis object is initially UNINITIALIZED.Methods in com.pnfsoftware.jeb.core.units.code.android.ir that return IDInstructionModifier and TypeMethodDescriptiondefault IDInstructionIDExpression.asInstruction()IDInstruction.copy(DCopyOptions opt) IDMethodContext.createAssign(IDExpression dst, IDExpression src) Create anassignmentinstruction.IDMethodContext.createConstruct(IDNewInfo info) Create anew Object(...)instruction.IDMethodContext.createInvoke(IDCallInfo info) Create aninvocationinstruction.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-enterinstruction.IDMethodContext.createMonitorExit(IDExpression exp) Create amonitor-exitinstruction.IDMethodContext.createNewArray(IDNewArrayInfo info) Create anew arrayinstruction.IDMethodContext.createNop()Create ano-operationinstruction.IDMethodContext.createReturn(IDExpression exp) Create areturninstruction.IDMethodContext.createStoreException(IDVar ident) Create anexception-storeinstruction.IDMethodContext.createSwitch(IDExpression swexp, IDSwitchData data) Create aswitchinstruction.IDMethodContext.createThrow(IDExpression exp) Create athrowinstruction.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 IDInstructionDUtil.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.dfafield, a data flow analysis object forAbstractDOptimizer.cfg.protected IDFA<IDInstruction>AbstractDOptimizer.analyzeChains(boolean redo) Retrieve and set theAbstractDOptimizer.dfafield, 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 TypeMethodDescriptionvoidIDInstruction.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 ContextAccessTypeDUtil.getCAT(IDInstruction insn, boolean inclAssigDst) Determine the aggregated context type of an instruction.static booleanDUtil.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 booleanDUtil.canThrow(BasicBlock<IDInstruction> b, int from) Determine whether the trailing instructions of a block can throw.static booleanDUtil.canThrow(BasicBlock<IDInstruction> b, int from, int to) Determine whether a provided range of instructions of a block can throw.static booleanDUtil.checkBlock(BasicBlock<IDInstruction> b, DOpcodeType... opcodes) Check for instruction matching in the provided block.static intDUtil.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 voidDUtil.dump(CFG<IDInstruction> cfg, String filename) Dump an IR-CFG to a Graphvizdotfile in the user's temporary folder.static voidDUtil.dump(CFG<IDInstruction> cfg, String filename, String title) Dump an IR-CFG to a Graphvizdotfile 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 booleanDUtil.isProtectedByCatchAll(IDMethodContext ctx, BasicBlock<IDInstruction> blk) Determine whether the provided block is protected by acatch-all(catching Throwable).static booleanDUtil.isUsingCaughtException(IDMethodContext ctx, BasicBlock<IDInstruction> b) static booleanDUtil.mergeBlocks(IDMethodContext ctx, BasicBlock<IDInstruction> firstBlock) Merge two blocks.static intDUtil.modifyInstructionSizes(IDMethodContext ctx, Function<IDInstruction, Integer> modifier) Update the instruction sizes of a CFG.static IDInstructionDUtil.nextInstruction(CFG<IDInstruction> cfg, BasicBlock<IDInstruction> b, int i) Determine the meaningful next instruction in the execution flow, assuming no exception was raised.static IDInstructionDUtil.nextInstruction(CFG<IDInstruction> cfg, BasicBlock<IDInstruction> b, int i) Determine the meaningful next instruction in the execution flow, assuming no exception was raised.static intDUtil.removeGaps(CFG<IDInstruction> cfg) Remove all gaps from the provided IR-CFG.static booleanDUtil.removeInstruction(BasicBlock<IDInstruction> b, int idx) Remove an instruction in a block.static intDUtil.removeUnreachableBlocks(CFG<IDInstruction> cfg, IDTryData ex) Remove unreachable blocks from an IR-CFG.static booleanDUtil.removeUnreachableTrampoline(CFG<IDInstruction> cfg, BasicBlock<IDInstruction> b) Remove an unreachable trampoline block (ending on a JCOND or JUMP).static booleanDUtil.removeUnreachableTrampoline(CFG<IDInstruction> cfg, BasicBlock<IDInstruction> b) Remove an unreachable trampoline block (ending on a JCOND or JUMP).voidIDMethodContext.replace(CFG<IDInstruction> replCfg, IDTryData replExdata) Replace the current IR by a new CFG and exception information.voidIDMethodContext.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 booleanDUtil.unprotectBlock(CFG<IDInstruction> cfg, IDTryData exdata, int blkAddress) Unprotect a basic block.static voidDUtil.verifyDataFlow(CFG<IDInstruction> cfg) Perform data flow verifications on the graph.static voidDUtil.verifyGraph(IDMethodContext ctx, CFG<IDInstruction> cfg, IDTryData exdata, String dumpFilename, String info) Verify an IR-CFG.static intDUtil.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.