API for disassembly. More...
Enumerations | |
enum | opdis_error_t { opdis_error_unknown, opdis_error_bounds, opdis_error_invalid_insn, opdis_error_decode_insn, opdis_error_bfd, opdis_error_max_items } |
Error codes passed to OPDIS_ERROR. More... | |
Functions | |
opdis_t LIBCALL | opdis_init (void) |
Initialize an opdis disassembler. | |
void LIBCALL | opdis_term (opdis_t o) |
Cleanup an opdis disassembler. | |
unsigned int LIBCALL | opdis_disasm_insn_size (opdis_t o, opdis_buf_t buf, opdis_vma_t vma) |
Return the size of the instruction at an offset in the buffer. | |
unsigned int LIBCALL | opdis_disasm_insn (opdis_t o, opdis_buf_t buf, opdis_vma_t vma, opdis_insn_t *insn) |
Disassemble a single instruction in the buffer. | |
int LIBCALL | opdis_disasm_linear (opdis_t o, opdis_buf_t buf, opdis_vma_t vma, opdis_off_t length) |
Disassemble a sequence of instructions in order. | |
int LIBCALL | opdis_disasm_cflow (opdis_t o, opdis_buf_t buf, opdis_vma_t vma) |
Disassemble a buffer following flow of control. | |
void LIBCALL | opdis_error (opdis_t o, enum opdis_error_t error, const char *msg) |
Send an error message to the error reporter/. |
API for disassembly.
The general use of libopdis is to create an opdis_t, invoke a disassembly function on a buffer, and free the opdis_t:
opdis_t o; opdis_buf_t buf; FILE * f = fopen( "a.out", "r" ); if ( f ) { buf = opdis_buf_read( f, 0, 0 ); o = opdis_init(); opdis_disasm_linear( o, buf, 0, 0 ); opdis_term( o ); fclose(f); }
More control over the process is generally achieved through configuration of the opdis_t.
enum opdis_error_t |
opdis_disasm_cflow | ( | opdis_t | o, | |
opdis_buf_t | buf, | |||
opdis_vma_t | vma | |||
) |
Disassemble a buffer following flow of control.
o | opdis disassembler | |
buf | The buffer to disassemble | |
vma | The address (VMA) of the entry point in the buffer |
opdis_disasm_insn | ( | opdis_t | o, | |
opdis_buf_t | buf, | |||
opdis_vma_t | vma, | |||
opdis_insn_t * | insn | |||
) |
Disassemble a single instruction in the buffer.
o | opdis disassembler | |
buf | The buffer to disassemble | |
vma | The address (VMA) in the buffer to disassemble. | |
insn | The op_insn_t to fill with the disassembled instruction |
opdis_disasm_insn_size | ( | opdis_t | o, | |
opdis_buf_t | buf, | |||
opdis_vma_t | vma | |||
) |
Return the size of the instruction at an offset in the buffer.
o | opdis disassembler | |
buf | The buffer to disassemble | |
vma | The address (VMA) in the buffer to disassemble. |
opdis_disasm_linear | ( | opdis_t | o, | |
opdis_buf_t | buf, | |||
opdis_vma_t | vma, | |||
opdis_off_t | length | |||
) |
Disassemble a sequence of instructions in order.
o | opdis disassembler | |
buf | The buffer to disassemble | |
vma | The address (VMA) in the buffer to start disassembly at. | |
length | The number of bytes to disassemble. |
opdis_error | ( | opdis_t | o, | |
enum opdis_error_t | error, | |||
const char * | msg | |||
) |
Send an error message to the error reporter/.
This is used internally and by callbacks to report errors.
o | opdis disassembler | |
error | The error code | |
msg | The detailed error message |
opdis_init | ( | void | ) |
Initialize an opdis disassembler.
Allocates an opdis_t and configures it using opdis_set_defaults().
opdis_term | ( | opdis_t | o | ) |
Cleanup an opdis disassembler.
Frees an opdis_t and all its associated resources
o | The opdis disassembler to free |