change public APIs to use ucengine

See #52.
This commit is contained in:
Jonathon Reinhart
2015-09-02 21:44:43 -04:00
parent 0feab69a61
commit 5b62d436a9
18 changed files with 95 additions and 94 deletions

View File

@ -20,6 +20,7 @@ extern "C" {
#include "platform.h"
struct uc_struct;
typedef struct uc_struct ucengine;
typedef size_t uc_hook_h;
@ -125,24 +126,24 @@ typedef enum uc_err {
// @address: address where the code is being executed
// @size: size of machine instruction(s) being executed, or 0 when size is unknown
// @user_data: user data passed to tracing APIs.
typedef void (*uc_cb_hookcode_t)(struct uc_struct *uc, uint64_t address, uint32_t size, void *user_data);
typedef void (*uc_cb_hookcode_t)(ucengine *uc, uint64_t address, uint32_t size, void *user_data);
// Callback function for tracing interrupts (for uc_hook_intr())
// @intno: interrupt number
// @user_data: user data passed to tracing APIs.
typedef void (*uc_cb_hookintr_t)(struct uc_struct *uc, uint32_t intno, void *user_data);
typedef void (*uc_cb_hookintr_t)(ucengine *uc, uint32_t intno, void *user_data);
// Callback function for tracing IN instruction of X86
// @port: port number
// @size: data size (1/2/4) to be read from this port
// @user_data: user data passed to tracing APIs.
typedef uint32_t (*uc_cb_insn_in_t)(struct uc_struct *uc, uint32_t port, int size, void *user_data);
typedef uint32_t (*uc_cb_insn_in_t)(ucengine *uc, uint32_t port, int size, void *user_data);
// x86's handler for OUT
// @port: port number
// @size: data size (1/2/4) to be written to this port
// @value: data value to be written to this port
typedef void (*uc_cb_insn_out_t)(struct uc_struct *uc, uint32_t port, int size, uint32_t value, void *user_data);
typedef void (*uc_cb_insn_out_t)(ucengine *uc, uint32_t port, int size, uint32_t value, void *user_data);
// All type of memory accesses for UC_HOOK_MEM_*
typedef enum uc_mem_type {
@ -171,7 +172,7 @@ typedef enum uc_hook_t {
// @size: size of data being read or written
// @value: value of data being written to memory, or irrelevant if type = READ.
// @user_data: user data passed to tracing APIs
typedef void (*uc_cb_hookmem_t)(struct uc_struct *uc, uc_mem_type type,
typedef void (*uc_cb_hookmem_t)(ucengine *uc, uc_mem_type type,
uint64_t address, int size, int64_t value, void *user_data);
// Callback function for handling memory events (for UC_HOOK_MEM_INVALID)
@ -181,7 +182,7 @@ typedef void (*uc_cb_hookmem_t)(struct uc_struct *uc, uc_mem_type type,
// @value: value of data being written to memory, or irrelevant if type = READ.
// @user_data: user data passed to tracing APIs
// @return: return true to continue, or false to stop program (due to invalid memory).
typedef bool (*uc_cb_eventmem_t)(struct uc_struct *uc, uc_mem_type type,
typedef bool (*uc_cb_eventmem_t)(ucengine *uc, uc_mem_type type,
uint64_t address, int size, int64_t value, void *user_data);
@ -222,13 +223,13 @@ bool uc_arch_supported(uc_arch arch);
@arch: architecture type (UC_ARCH_*)
@mode: hardware mode. This is combined of UC_MODE_*
@uc: pointer to struct uc_struct, which will be updated at return time
@uc: pointer to ucengine, which will be updated at return time
@return UC_ERR_OK on success, or other value on failure (refer to uc_err enum
for detailed error).
*/
UNICORN_EXPORT
uc_err uc_open(uc_arch arch, uc_mode mode, struct uc_struct **uc);
uc_err uc_open(uc_arch arch, uc_mode mode, ucengine **uc);
/*
Close UC instance: MUST do to release the handle when it is not used anymore.
@ -243,7 +244,7 @@ uc_err uc_open(uc_arch arch, uc_mode mode, struct uc_struct **uc);
for detailed error).
*/
UNICORN_EXPORT
uc_err uc_close(struct uc_struct *uc);
uc_err uc_close(ucengine *uc);
/*
Report the last error number when some API function fail.
@ -254,7 +255,7 @@ uc_err uc_close(struct uc_struct *uc);
@return: error code of uc_err enum type (UC_ERR_*, see above)
*/
UNICORN_EXPORT
uc_err uc_errno(struct uc_struct *uc);
uc_err uc_errno(ucengine *uc);
/*
Return a string describing given error code.
@ -278,7 +279,7 @@ const char *uc_strerror(uc_err code);
for detailed error).
*/
UNICORN_EXPORT
uc_err uc_reg_write(struct uc_struct *uc, int regid, const void *value);
uc_err uc_reg_write(ucengine *uc, int regid, const void *value);
/*
Read register value.
@ -291,7 +292,7 @@ uc_err uc_reg_write(struct uc_struct *uc, int regid, const void *value);
for detailed error).
*/
UNICORN_EXPORT
uc_err uc_reg_read(struct uc_struct *uc, int regid, void *value);
uc_err uc_reg_read(ucengine *uc, int regid, void *value);
/*
Write to a range of bytes in memory.
@ -307,7 +308,7 @@ uc_err uc_reg_read(struct uc_struct *uc, int regid, void *value);
for detailed error).
*/
UNICORN_EXPORT
uc_err uc_mem_write(struct uc_struct *uc, uint64_t address, const uint8_t *bytes, size_t size);
uc_err uc_mem_write(ucengine *uc, uint64_t address, const uint8_t *bytes, size_t size);
/*
Read a range of bytes in memory.
@ -323,7 +324,7 @@ uc_err uc_mem_write(struct uc_struct *uc, uint64_t address, const uint8_t *bytes
for detailed error).
*/
UNICORN_EXPORT
uc_err uc_mem_read(struct uc_struct *uc, uint64_t address, uint8_t *bytes, size_t size);
uc_err uc_mem_read(ucengine *uc, uint64_t address, uint8_t *bytes, size_t size);
/*
Emulate machine code in a specific duration of time.
@ -340,7 +341,7 @@ uc_err uc_mem_read(struct uc_struct *uc, uint64_t address, uint8_t *bytes, size_
for detailed error).
*/
UNICORN_EXPORT
uc_err uc_emu_start(struct uc_struct *uc, uint64_t begin, uint64_t until, uint64_t timeout, size_t count);
uc_err uc_emu_start(ucengine *uc, uint64_t begin, uint64_t until, uint64_t timeout, size_t count);
/*
Stop emulation (which was started by uc_emu_start() API.
@ -353,7 +354,7 @@ uc_err uc_emu_start(struct uc_struct *uc, uint64_t begin, uint64_t until, uint64
for detailed error).
*/
UNICORN_EXPORT
uc_err uc_emu_stop(struct uc_struct *uc);
uc_err uc_emu_stop(ucengine *uc);
/*
Register callback for a hook event.
@ -371,7 +372,7 @@ uc_err uc_emu_stop(struct uc_struct *uc);
for detailed error).
*/
UNICORN_EXPORT
uc_err uc_hook_add(struct uc_struct *uc, uc_hook_h *hh, uc_hook_t type, void *callback, void *user_data, ...);
uc_err uc_hook_add(ucengine *uc, uc_hook_h *hh, uc_hook_t type, void *callback, void *user_data, ...);
/*
Unregister (remove) a hook callback.
@ -386,7 +387,7 @@ uc_err uc_hook_add(struct uc_struct *uc, uc_hook_h *hh, uc_hook_t type, void *ca
for detailed error).
*/
UNICORN_EXPORT
uc_err uc_hook_del(struct uc_struct *uc, uc_hook_h hh);
uc_err uc_hook_del(ucengine *uc, uc_hook_h hh);
typedef enum uc_prot {
UC_PROT_NONE = 0,
@ -412,7 +413,7 @@ typedef enum uc_prot {
for detailed error).
*/
UNICORN_EXPORT
uc_err uc_mem_map(struct uc_struct *uc, uint64_t address, size_t size, uint32_t perms);
uc_err uc_mem_map(ucengine *uc, uint64_t address, size_t size, uint32_t perms);
#ifdef __cplusplus
}