public interface

IDexCodeItem

com.pnfsoftware.jeb.core.units.code.android.dex.IDexCodeItem

Class Overview

This interface represents a Dex code_item object. Those objects hold, among other things, the bytecode of a method.

It holds the body of a method. They are referenced by IDexMethodData objects for internal, non-abstract, non-native methods.

Summary

Public Methods
abstract CFG<IDalvikInstruction> getControlFlowGraph()
Returns the CFG for this method.
abstract IDexDebugInfo getDebugInfo()
Get the debug information for the method.
abstract int getDexFileIndex()
Retrieve the index of the dex file that defines this code item.
abstract List<? extends IDexExceptionItem> getExceptionItems()
Get the exception items for the method.
abstract Map<Integer, byte[]> getGaps()
Retrieve the gaps in the method's bytecode.
abstract int getInputArgumentCount()
Get the number of incoming arguments for the method.
abstract IDalvikInstruction getInstruction(int index)
Get the instruction at the provided index.
abstract IDalvikInstruction getInstructionAt(int offsetInMethod)
Get the instruction at the provided byte offset in the method.
abstract List<? extends IDalvikInstruction> getInstructions()
Get the list of parsed bytecode instructions, ordered by ascending offset.
abstract int getInstructionsOffset()
Get the Dex file offset where the bytecode for the method starts.
abstract int getInstructionsSize()
Get the size of the method's bytecode, in bytes.
abstract int getOutputArgumentCount()
Get the number of outgoing arguments for the method.
abstract List<DalvikParserError> getParsingErrors()
Retrieve the list of parsing errors, if any.
abstract int getRegisterCount()
Get the number of registers used by the method.
abstract boolean hasParsingErrors()
Determine whether the method's bytecode was successfully parsed.
abstract boolean isCompleteBytecode()
This method is deprecated. use !hasParsingErrors()

Public Methods

public abstract CFG<IDalvikInstruction> getControlFlowGraph ()

Returns the CFG for this method. It may be null if the parser did not produce a control flow graph.

public abstract IDexDebugInfo getDebugInfo ()

Get the debug information for the method.

Note: debug metadata can be forged and should not be trusted.

Returns
  • the debug info object, or null if there is none

public abstract int getDexFileIndex ()

Retrieve the index of the dex file that defines this code item.

Returns
  • an index into getDexFiles() (of the owner , or -1 if unknown or not defined

public abstract List<? extends IDexExceptionItem> getExceptionItems ()

Get the exception items for the method.

Returns
  • the list of exception items

public abstract Map<Integer, byte[]> getGaps ()

Retrieve the gaps in the method's bytecode. The gaps are areas within the bytecode that are not directly used as instruction as pseudo-instruction's data (switch or array data).

Returns
  • a dictionary of offset (0-based) to the gap bytes

public abstract int getInputArgumentCount ()

Get the number of incoming arguments for the method.

Returns
  • the number of incoming arguments

public abstract IDalvikInstruction getInstruction (int index)

Get the instruction at the provided index.

public abstract IDalvikInstruction getInstructionAt (int offsetInMethod)

Get the instruction at the provided byte offset in the method.

Parameters
offsetInMethod method's code offset in byte
Returns
  • an instruction or null

public abstract List<? extends IDalvikInstruction> getInstructions ()

Get the list of parsed bytecode instructions, ordered by ascending offset.

This method provides the original array of instructions, not a copy. The caller should not try to modify it.

Returns
  • the list of method instructions

public abstract int getInstructionsOffset ()

Get the Dex file offset where the bytecode for the method starts.

Returns
  • the bytecode offset in bytes, that is, the absolute entry point of the associated method

public abstract int getInstructionsSize ()

Get the size of the method's bytecode, in bytes.

Returns
  • the bytecode size in bytes

public abstract int getOutputArgumentCount ()

Get the number of outgoing arguments for the method.

Returns
  • the number of outgoing arguments

public abstract List<DalvikParserError> getParsingErrors ()

Retrieve the list of parsing errors, if any.

Returns
  • a list

public abstract int getRegisterCount ()

Get the number of registers used by the method.

Returns
  • the number of registers

public abstract boolean hasParsingErrors ()

Determine whether the method's bytecode was successfully parsed.

Returns
  • success indicator

public abstract boolean isCompleteBytecode ()

This method is deprecated.
use !hasParsingErrors()

Determine whether the method's bytecode was fully parsed.

Returns
  • true if parsing was fully successful; false if parsing errors occurred, but the associated method was still created, that is, partial parsing was successful