29 #define esilprintf(op, fmt, ...) rz_strbuf_setf(&op->esil, fmt, ##__VA_ARGS__)
85 #define RZ_ANALYSIS_ADDR_TYPE_EXEC 1
86 #define RZ_ANALYSIS_ADDR_TYPE_READ 1 << 1
87 #define RZ_ANALYSIS_ADDR_TYPE_WRITE 1 << 2
88 #define RZ_ANALYSIS_ADDR_TYPE_FLAG 1 << 3
89 #define RZ_ANALYSIS_ADDR_TYPE_FUNC 1 << 4
90 #define RZ_ANALYSIS_ADDR_TYPE_HEAP 1 << 5
91 #define RZ_ANALYSIS_ADDR_TYPE_STACK 1 << 6
92 #define RZ_ANALYSIS_ADDR_TYPE_REG 1 << 7
93 #define RZ_ANALYSIS_ADDR_TYPE_PROGRAM 1 << 8
94 #define RZ_ANALYSIS_ADDR_TYPE_LIBRARY 1 << 9
95 #define RZ_ANALYSIS_ADDR_TYPE_ASCII 1 << 10
96 #define RZ_ANALYSIS_ADDR_TYPE_SEQUENCE 1 << 11
98 #define RZ_ANALYSIS_ARCHINFO_MIN_OP_SIZE 0
99 #define RZ_ANALYSIS_ARCHINFO_MAX_OP_SIZE 1
100 #define RZ_ANALYSIS_ARCHINFO_ALIGN 2
101 #define RZ_ANALYSIS_ARCHINFO_DATA_ALIGN 4
105 #define RZ_ANALYSIS_GET_OFFSET(x, y, z) \
106 (x && x->binb.bin && x->binb.get_offset) ? x->binb.get_offset(x->binb.bin, y, z) : -1
108 #define RZ_ANALYSIS_GET_NAME(x, y, z) \
109 (x && x->binb.bin && x->binb.get_name) ? x->binb.get_name(x->binb.bin, y, z) : NULL
189 #define RZ_ANALYSIS_CC_MAXARG 16
202 #define RZ_ANALYSIS_DIFF_THRESHOLD (0.5)
326 On
x86 according
to Wikipedia
333 0x2E: CS segment
override
334 0x36: SS segment
override
335 0x3E: DS segment
override
336 0x26: ES segment
override
337 0x64: FS segment
override
338 0x65: GS segment
override
339 0x2E: Branch not taken (hinting)
358 #define RZ_ANALYSIS_OP_TYPE_MASK 0x8000ffff
359 #define RZ_ANALYSIS_OP_HINT_MASK 0xf0000000
434 RZ_ANALYSIS_OP_TYPE_PRIV = 40,
435 RZ_ANALYSIS_OP_TYPE_FPU = 41,
504 #define RZ_ANALYSIS_ESIL_GOTO_LIMIT 4096
708 #define VARPREFIX "var"
709 #define ARGPREFIX "arg"
854 #define RZ_TYPE_COND_SINGLE(x) (!x->arg[1] || x->arg[0] == x->arg[1])
975 #define ESIL_INTERNAL_PREFIX '$'
976 #define ESIL_STACK_NAME "esil.ram"
977 #define ANALYSIS_ESIL struct rz_analysis_esil_t
1290 typedef bool (*RzAnalysisAddrCb)(
ut64 addr,
void *user);
1310 return (
a->addr +
a->size) ==
b->addr;
1526 RZ_IL_TRACE_OP_READ,
1527 RZ_IL_TRACE_OP_WRITE
1532 RzILTraceOpType behavior;
1538 const char *reg_name;
1539 RzILTraceOpType behavior;
1544 RZ_IL_TRACE_INS_HAS_MEM_R = 0x1U,
1545 RZ_IL_TRACE_INS_HAS_MEM_W = 0x2U,
1546 RZ_IL_TRACE_INS_HAS_REG_R = 0x4U,
1547 RZ_IL_TRACE_INS_HAS_REG_W = 0x8U
1559 } RzILTraceInstruction;
1630 #define RZ_ANALYSIS_FCN_VARKIND_LOCAL 'v'
1709 typedef struct rz_analysis_fcn_vars_cache {
1713 } RzAnalysisFcnVarsCache;
1753 #define RZ_ANALYSIS_THRESHOLDFCN 0.7F
1754 #define RZ_ANALYSIS_THRESHOLDBB 0.7F
1787 typedef struct rz_jmptable_params_t {
1797 } RzAnalysisJmpTableParams;
1834 typedef struct rz_analysis_data_t {
1867 return rz_meta_item_size(node->
start, node->
end);
2016 typedef struct vtable_info_t {
2021 typedef struct vtable_method_info_t {
2024 } RVTableMethodInfo;
2056 RZ_ANALYSIS_CLASS_METHOD_DEFAULT = 0,
2057 RZ_ANALYSIS_CLASS_METHOD_VIRTUAL,
2058 RZ_ANALYSIS_CLASS_METHOD_VIRTUAL_DESTRUCTOR,
2059 RZ_ANALYSIS_CLASS_METHOD_DESTRUCTOR,
2060 RZ_ANALYSIS_CLASS_METHOD_CONSTRUCTOR
2061 } RzAnalysisMethodType;
2063 typedef struct rz_analysis_method_t {
2068 RzAnalysisMethodType method_type;
2071 typedef struct rz_analysis_base_class_t {
2075 } RzAnalysisBaseClass;
2077 typedef struct rz_analysis_vtable_t {
2085 RZ_ANALYSIS_CLASS_ERR_SUCCESS = 0,
2086 RZ_ANALYSIS_CLASS_ERR_CLASH,
2087 RZ_ANALYSIS_CLASS_ERR_NONEXISTENT_ATTR,
2088 RZ_ANALYSIS_CLASS_ERR_NONEXISTENT_CLASS,
2089 RZ_ANALYSIS_CLASS_ERR_OTHER
2090 } RzAnalysisClassErr;
2143 typedef void *RzSerializeAnalDiffParser;
2153 typedef void *RzSerializeAnalGlobalVarParser;
2165 typedef void *RzSerializeAnalVarParser;
2174 typedef struct analysis_bytes_t {
RZ_API void rz_analysis_diff_free(RzAnalysisDiff *diff)
RZ_API size_t rz_analysis_diff_fingerprint_fcn(RzAnalysis *analysis, RzAnalysisFunction *fcn)
RZ_API int rz_analysis_diff_fingerprint_bb(RzAnalysis *analysis, RzAnalysisBlock *bb)
RZ_API RZ_OWN RzAnalysisDiff * rz_analysis_diff_new(void)
RZ_API int rz_analysis_diff_eval(RzAnalysis *analysis)
RZ_API void rz_analysis_diff_setup(RzAnalysis *analysis, int doops, double thbb, double thfcn)
RZ_API void rz_analysis_diff_setup_i(RzAnalysis *analysis, int doops, int thbb, int thfcn)
RZ_API int rz_analysis_diff_fcn(RzAnalysis *analysis, RzList *fcns1, RzList *fcns2)
RZ_API bool rz_analysis_diff_bb(RzAnalysis *analysis, RzAnalysisFunction *fcn, RzAnalysisFunction *fcn2)
RZ_API RZ_OWN char * rz_analysis_function_name_guess(RzTypeDB *typedb, RZ_NONNULL char *name)
Checks if varions function name variations present in the database.
RZ_API void rz_analysis_function_add_block(RzAnalysisFunction *fcn, RzAnalysisBlock *bb)
RZ_API RZ_BORROW RzList * rz_analysis_function_list(RzAnalysis *analysis)
RZ_API bool rz_analysis_function_is_autonamed(RZ_NONNULL char *name)
Checks if the function name was generated by Rizin automatically.
RZ_API RzAnalysisFunction * rz_analysis_get_function_at(RzAnalysis *analysis, ut64 addr)
RZ_API ut64 rz_analysis_function_max_addr(RzAnalysisFunction *fcn)
RZ_API ut64 rz_analysis_function_size_from_entry(RzAnalysisFunction *fcn)
RZ_API RzList * rz_analysis_get_functions_in(RzAnalysis *analysis, ut64 addr)
RZ_API bool rz_analysis_function_relocate(RzAnalysisFunction *fcn, ut64 addr)
RZ_API ut64 rz_analysis_function_linear_size(RzAnalysisFunction *fcn)
RZ_API void rz_analysis_function_remove_block(RzAnalysisFunction *fcn, RzAnalysisBlock *bb)
RZ_API ut64 rz_analysis_function_realsize(const RzAnalysisFunction *fcn)
RZ_API bool rz_analysis_add_function(RzAnalysis *analysis, RzAnalysisFunction *fcn)
RZ_API bool rz_analysis_function_was_modified(RzAnalysisFunction *fcn)
RZ_API bool rz_analysis_function_rename(RzAnalysisFunction *fcn, const char *name)
RZ_API RzAnalysisFunction * rz_analysis_function_new(RzAnalysis *analysis)
RZ_API RzAnalysisFunction * rz_analysis_create_function(RzAnalysis *analysis, const char *name, ut64 addr, int type, RzAnalysisDiff *diff)
RZ_API bool rz_analysis_function_delete(RzAnalysisFunction *fcn)
RZ_API ut64 rz_analysis_function_min_addr(RzAnalysisFunction *fcn)
RZ_API void rz_analysis_function_free(void *_fcn)
RZ_API bool rz_analysis_function_contains(RzAnalysisFunction *fcn, ut64 addr)
RZ_API char * rz_analysis_value_to_string(RzAnalysisValue *value)
RZ_API ut64 rz_analysis_value_to_ut64(RzAnalysis *analysis, RzAnalysisValue *val)
RZ_API int rz_analysis_value_set_ut64(RzAnalysis *analysis, RzAnalysisValue *val, ut64 num)
RZ_API void rz_analysis_value_free(RzAnalysisValue *value)
RZ_API RzAnalysisValue * rz_analysis_value_new_from_string(const char *str)
RZ_API RzAnalysisValue * rz_analysis_value_new(void)
RZ_API RzAnalysisValue * rz_analysis_value_copy(RzAnalysisValue *ov)
RZ_API bool rz_analysis_noreturn_at_addr(RzAnalysis *analysis, ut64 addr)
RZ_API RzList * rz_analysis_noreturn_functions(RzAnalysis *analysis)
RZ_API void rz_analysis_unset_limits(RzAnalysis *analysis)
RZ_API void rz_analysis_set_cpu(RzAnalysis *analysis, const char *cpu)
RZ_API int rz_analysis_add(RzAnalysis *analysis, RzAnalysisPlugin *p)
RZ_API ut8 * rz_analysis_mask(RzAnalysis *analysis, ut32 size, const ut8 *data, ut64 at)
RZ_API RzAnalysis * rz_analysis_free(RzAnalysis *a)
RZ_API bool rz_analysis_set_triplet(RzAnalysis *analysis, const char *os, const char *arch, int bits)
RZ_API RzList * rz_analysis_preludes(RzAnalysis *analysis)
RZ_API void rz_analysis_add_import(RzAnalysis *analysis, const char *imp)
RZ_API void rz_analysis_bind(RzAnalysis *analysis, RzAnalysisBind *b)
RZ_API bool rz_analysis_is_prelude(RzAnalysis *analysis, const ut8 *data, int len)
RZ_API void rz_analysis_purge_imports(RzAnalysis *analysis)
RZ_API bool rz_analysis_set_bits(RzAnalysis *analysis, int bits)
RZ_API RzAnalysis * rz_analysis_new(void)
RZ_API void rz_analysis_trace_bb(RzAnalysis *analysis, ut64 addr)
RZ_API void rz_analysis_purge(RzAnalysis *analysis)
RZ_API int rz_analysis_archinfo(RzAnalysis *analysis, int query)
RZ_API int rz_analysis_get_address_bits(RzAnalysis *analysis)
The actual size of an address in bits.
RZ_API RzAnalysisOp * rz_analysis_op_hexstr(RzAnalysis *analysis, ut64 addr, const char *str)
RZ_API bool rz_analysis_noreturn_add(RzAnalysis *analysis, const char *name, ut64 addr)
RZ_API void rz_analysis_set_limits(RzAnalysis *analysis, ut64 from, ut64 to)
RZ_API bool rz_analysis_set_reg_profile(RzAnalysis *analysis)
RZ_API bool rz_analysis_noreturn_drop(RzAnalysis *analysis, const char *expr)
RZ_API RzList * rz_analysis_get_fcns(RzAnalysis *analysis)
RZ_API void rz_analysis_remove_import(RzAnalysis *analysis, const char *imp)
RZ_API int rz_analysis_set_big_endian(RzAnalysis *analysis, int bigend)
RZ_API bool rz_analysis_use(RzAnalysis *analysis, const char *name)
RZ_API bool rz_analysis_op_is_eob(RzAnalysisOp *op)
RZ_API char * rz_analysis_get_reg_profile(RzAnalysis *analysis)
RZ_API bool rz_analysis_noreturn_at(RzAnalysis *analysis, ut64 addr)
RZ_API bool rz_analysis_set_os(RzAnalysis *analysis, const char *os)
RzAnalysisPlugin rz_analysis_plugin_6502
RzAnalysisPlugin rz_analysis_plugin_8051
RzAnalysisPlugin rz_analysis_plugin_amd29k
RzAnalysisPlugin rz_analysis_plugin_arc
RzAnalysisPlugin rz_analysis_plugin_arm_cs
RzAnalysisPlugin rz_analysis_plugin_avr
RzAnalysisPlugin rz_analysis_plugin_bf
RzAnalysisPlugin rz_analysis_plugin_chip8
RzAnalysisPlugin rz_analysis_plugin_cil
RzAnalysisPlugin rz_analysis_plugin_cr16
RzAnalysisPlugin rz_analysis_plugin_cris
RzAnalysisPlugin rz_analysis_plugin_dalvik
RzAnalysisPlugin rz_analysis_plugin_ebc
RzAnalysisPlugin rz_analysis_plugin_gb
RzAnalysisPlugin rz_analysis_plugin_h8300
RzAnalysisPlugin rz_analysis_plugin_hexagon
RzAnalysisPlugin rz_analysis_plugin_i4004
RzAnalysisPlugin rz_analysis_plugin_i8080
RZ_API void rz_analysis_il_vm_cleanup(RzAnalysis *analysis)
RZ_API void rz_analysis_il_vm_sync_from_reg(RzAnalysisILVM *vm, RZ_NONNULL RzReg *reg)
RZ_API void rz_analysis_il_config_add_label(RZ_NONNULL RzAnalysisILConfig *cfg, RZ_NONNULL RZ_OWN RzILEffectLabel *label)
RZ_API void rz_analysis_il_init_state_free(RzAnalysisILInitState *state)
RZ_API RZ_OWN RzAnalysisILConfig * rz_analysis_il_config_new(ut32 pc_size, bool big_endian, ut32 mem_key_size)
RZ_API bool rz_analysis_il_vm_sync_to_reg(RzAnalysisILVM *vm, RZ_NONNULL RzReg *reg)
RZ_API void rz_analysis_il_config_free(RzAnalysisILConfig *cfg)
RZ_API RZ_OWN RzAnalysisILVM * rz_analysis_il_vm_new(RzAnalysis *a, RZ_NULLABLE RzReg *init_state_reg)
RZ_API bool rz_analysis_il_vm_setup(RzAnalysis *analysis)
RZ_API RzAnalysisILInitState * rz_analysis_il_init_state_new()
RZ_API RzAnalysisILStepResult rz_analysis_il_vm_step(RZ_NONNULL RzAnalysis *analysis, RZ_NONNULL RzAnalysisILVM *vm, RZ_NULLABLE RzReg *reg)
RZ_API void rz_analysis_il_vm_free(RZ_NULLABLE RzAnalysisILVM *vm)
RZ_API void rz_analysis_il_init_state_set_var(RZ_NONNULL RzAnalysisILInitState *state, RZ_NONNULL const char *name, RZ_NONNULL RZ_OWN RzILVal *val)
RZ_API RzAnalysisRzilTrace * rz_analysis_rzil_trace_new(RzAnalysis *analysis, RZ_NONNULL RzAnalysisILVM *rzil)
RZ_API void rz_analysis_rzil_trace_op(RzAnalysis *analysis, RZ_NONNULL RzAnalysisILVM *rzil, RZ_NONNULL RzAnalysisLiftedILOp op)
RZ_API void rz_analysis_rzil_trace_free(RzAnalysisEsilTrace *trace)
RzAnalysisPlugin rz_analysis_plugin_java
RzAnalysisPlugin rz_analysis_plugin_luac
RzAnalysisPlugin rz_analysis_plugin_m680x_cs
RzAnalysisPlugin rz_analysis_plugin_m68k_cs
RzAnalysisPlugin rz_analysis_plugin_malbolge
RzAnalysisPlugin rz_analysis_plugin_mcore
RzAnalysisPlugin rz_analysis_plugin_mips_cs
RzAnalysisPlugin rz_analysis_plugin_mips_gnu
RzAnalysisPlugin rz_analysis_plugin_msp430
RzAnalysisPlugin rz_analysis_plugin_nios2
RzAnalysisPlugin rz_analysis_plugin_null
RzAnalysisPlugin rz_analysis_plugin_or1k
RzAnalysisPlugin rz_analysis_plugin_pic
RzAnalysisPlugin rz_analysis_plugin_ppc_cs
RzAnalysisPlugin rz_analysis_plugin_propeller
RzAnalysisPlugin rz_analysis_plugin_pyc
RzAnalysisPlugin rz_analysis_plugin_riscv
RzAnalysisPlugin rz_analysis_plugin_riscv_cs
RzAnalysisPlugin rz_analysis_plugin_rsp
RzAnalysisPlugin rz_analysis_plugin_sh
RzAnalysisPlugin rz_analysis_plugin_snes
RzAnalysisPlugin rz_analysis_plugin_sparc_cs
RzAnalysisPlugin rz_analysis_plugin_sparc_gnu
RzAnalysisPlugin rz_analysis_plugin_spc700
RzAnalysisPlugin rz_analysis_plugin_sysz
RzAnalysisPlugin rz_analysis_plugin_tms320
RzAnalysisPlugin rz_analysis_plugin_tricore
RzAnalysisPlugin rz_analysis_plugin_v810
RzAnalysisPlugin rz_analysis_plugin_v850
RzAnalysisPlugin rz_analysis_plugin_vax
RzAnalysisPlugin rz_analysis_plugin_wasm
RzAnalysisPlugin rz_analysis_plugin_x86_cs
RzAnalysisPlugin rz_analysis_plugin_xap
RzAnalysisPlugin rz_analysis_plugin_xcore_cs
RzAnalysisPlugin rz_analysis_plugin_xtensa
RzAnalysisPlugin rz_analysis_plugin_z80
static RzILOpEffect * cls(cs_insn *insn)
int bits(struct state *s, int need)
RZ_API void rz_analysis_block_set_size(RzAnalysisBlock *block, ut64 size)
RZ_API bool rz_analysis_block_was_modified(RzAnalysisBlock *block)
RZ_API void rz_analysis_blocks_foreach_intersect(RzAnalysis *analysis, ut64 addr, ut64 size, RzAnalysisBlockCb cb, void *user)
RZ_API void rz_analysis_delete_block(RzAnalysisBlock *bb)
RZ_API RzAnalysisBlock * rz_analysis_block_chop_noreturn(RzAnalysisBlock *block, ut64 addr)
RZ_API RzList * rz_analysis_block_recurse_list(RzAnalysisBlock *block)
RZ_API bool rz_analysis_block_relocate(RzAnalysisBlock *block, ut64 addr, ut64 size)
RZ_API bool rz_analysis_block_set_op_offset(RzAnalysisBlock *block, size_t i, ut16 v)
RZ_API void rz_analysis_block_ref(RzAnalysisBlock *bb)
RZ_API void rz_analysis_block_update_hash(RzAnalysisBlock *block)
RZ_API bool rz_analysis_block_recurse_depth_first(RzAnalysisBlock *block, RzAnalysisBlockCb cb, RZ_NULLABLE RzAnalysisBlockCb on_exit, void *user)
RZ_API bool rz_analysis_blocks_foreach_in(RzAnalysis *analysis, ut64 addr, RzAnalysisBlockCb cb, void *user)
RZ_API RzAnalysisBlock * rz_analysis_get_block_at(RzAnalysis *analysis, ut64 addr)
RZ_API bool rz_analysis_block_recurse_followthrough(RzAnalysisBlock *block, RzAnalysisBlockCb cb, void *user)
RZ_API ut64 rz_analysis_block_get_op_size(RzAnalysisBlock *bb, size_t i)
RZ_API ut64 rz_analysis_block_get_op_addr(RzAnalysisBlock *block, size_t i)
RZ_API void rz_analysis_block_unref(RzAnalysisBlock *bb)
RZ_API void rz_analysis_block_add_switch_case(RzAnalysisBlock *block, ut64 switch_addr, ut64 case_value, ut64 case_addr)
RZ_API RzList * rz_analysis_get_blocks_in(RzAnalysis *analysis, ut64 addr)
RZ_API RzAnalysisBlock * rz_analysis_create_block(RzAnalysis *analysis, ut64 addr, ut64 size)
RZ_API ut64 rz_analysis_block_get_op_addr_in(RzAnalysisBlock *bb, ut64 off)
RZ_API RzList * rz_analysis_get_blocks_intersect(RzAnalysis *analysis, ut64 addr, ut64 size)
RZ_API bool rz_analysis_block_merge(RzAnalysisBlock *a, RzAnalysisBlock *b)
RZ_API RzAnalysisBlock * rz_analysis_block_split(RzAnalysisBlock *bbi, ut64 addr)
RZ_API RzAnalysisBlock * rz_analysis_find_most_relevant_block_in(RzAnalysis *analysis, ut64 off)
RZ_API bool rz_analysis_block_recurse(RzAnalysisBlock *block, RzAnalysisBlockCb cb, void *user)
RZ_API bool rz_analysis_block_successor_addrs_foreach(RzAnalysisBlock *block, RzAnalysisAddrCb cb, void *user)
RZ_API RZ_NULLABLE RzList * rz_analysis_block_shortest_path(RzAnalysisBlock *block, ut64 dst)
RZ_API ut16 rz_analysis_block_get_op_offset(RzAnalysisBlock *block, size_t i)
RZ_API void rz_analysis_block_analyze_ops(RzAnalysisBlock *block)
RZ_API bool rz_analysis_block_op_starts_at(RzAnalysisBlock *bb, ut64 addr)
RZ_API void rz_analysis_block_automerge(RzList *blocks)
static RzNumCalcValue expr(RzNum *, RzNumCalc *, int)
RZ_API bool rz_analysis_add_device_peripheral_map(RzBinObject *o, RzAnalysis *analysis)
Maps the device peripherals as sections.
RZ_API const char * rz_analysis_syscc_default(RzAnalysis *analysis)
RZ_API void rz_analysis_set_syscc_default(RzAnalysis *analysis, const char *cc)
RZ_API const char * rz_analysis_cc_func(RzAnalysis *analysis, const char *func_name)
RZ_API void rz_analysis_cc_del(RzAnalysis *analysis, const char *name)
RZ_API char * rz_analysis_cc_get(RzAnalysis *analysis, const char *name)
RZ_API bool rz_analysis_cc_set(RzAnalysis *analysis, const char *expr)
RZ_API void rz_analysis_cc_set_error(RzAnalysis *analysis, const char *convention, const char *error)
RZ_API const char * rz_analysis_cc_arg(RzAnalysis *analysis, const char *convention, int n)
RZ_API bool rz_analysis_cc_exist(RzAnalysis *analysis, const char *convention)
RZ_API void rz_analysis_cc_set_self(RzAnalysis *analysis, const char *convention, const char *self)
RZ_API const char * rz_analysis_cc_self(RzAnalysis *analysis, const char *convention)
RZ_API const char * rz_analysis_cc_default(RzAnalysis *analysis)
RZ_API int rz_analysis_cc_max_arg(RzAnalysis *analysis, const char *cc)
RZ_API const char * rz_analysis_cc_error(RzAnalysis *analysis, const char *convention)
RZ_API RzList * rz_analysis_calling_conventions(RzAnalysis *analysis)
RZ_API const char * rz_analysis_cc_ret(RzAnalysis *analysis, const char *convention)
RZ_API void rz_analysis_set_cc_default(RzAnalysis *analysis, const char *cc)
RZ_API RzVector * rz_analysis_class_base_get_all(RzAnalysis *analysis, const char *class_name)
RZ_API void rz_analysis_class_method_recover(RzAnalysis *analysis, RzBinClass *cls, RzList *methods)
RZ_API bool rz_analysis_class_method_exists_by_addr(RzAnalysis *analysis, const char *class_name, ut64 addr)
RZ_API RzAnalysisClassErr rz_analysis_class_vtable_delete(RzAnalysis *analysis, const char *class_name, const char *vtable_id)
RZ_API RzAnalysisClassErr rz_analysis_class_method_rename(RzAnalysis *analysis, const char *class_name, const char *old_meth_name, const char *new_meth_name)
RZ_API RzAnalysisClassErr rz_analysis_class_base_set(RzAnalysis *analysis, const char *class_name, RzAnalysisBaseClass *base)
RZ_API RzVector * rz_analysis_class_method_get_all(RzAnalysis *analysis, const char *class_name)
RZ_API void rz_analysis_class_base_fini(RzAnalysisBaseClass *base)
RZ_API bool rz_analysis_class_exists(RzAnalysis *analysis, const char *name)
RZ_API void rz_analysis_class_recover_all(RzAnalysis *analysis)
RZ_API void rz_analysis_class_vtable_fini(RzAnalysisVTable *vtable)
RZ_API RzAnalysisClassErr rz_analysis_class_rename(RzAnalysis *analysis, const char *old_name, const char *new_name)
RZ_API RzAnalysisClassErr rz_analysis_class_method_delete(RzAnalysis *analysis, const char *class_name, const char *meth_name)
RZ_API RzAnalysisClassErr rz_analysis_class_base_delete(RzAnalysis *analysis, const char *class_name, const char *base_id)
RZ_API RzAnalysisClassErr rz_analysis_class_method_get(RzAnalysis *analysis, const char *class_name, const char *meth_name, RzAnalysisMethod *meth)
RZ_API void rz_analysis_class_recover_from_rzbin(RzAnalysis *analysis)
RZ_API RzGraph * rz_analysis_class_get_inheritance_graph(RzAnalysis *analysis)
Creates RzGraph from class inheritance information where each node has RzGraphNodeInfo as generic dat...
RZ_API RzAnalysisClassErr rz_analysis_class_vtable_set(RzAnalysis *analysis, const char *class_name, RzAnalysisVTable *vtable)
RZ_API RzAnalysisClassErr rz_analysis_class_method_set(RzAnalysis *analysis, const char *class_name, RzAnalysisMethod *meth)
RZ_API SdbList * rz_analysis_class_get_all(RzAnalysis *analysis, bool sorted)
RZ_API void rz_analysis_class_method_fini(RzAnalysisMethod *meth)
RZ_API RzVector * rz_analysis_class_vtable_get_all(RzAnalysis *analysis, const char *class_name)
RZ_API void rz_analysis_class_foreach(RzAnalysis *analysis, SdbForeachCallback cb, void *user)
RZ_API RzAnalysisClassErr rz_analysis_class_create(RzAnalysis *analysis, const char *name)
RZ_API bool rz_analysis_class_method_exists(RzAnalysis *analysis, const char *class_name, const char *meth_name)
RZ_API RzAnalysisClassErr rz_analysis_class_base_get(RzAnalysis *analysis, const char *class_name, const char *base_id, RzAnalysisBaseClass *base)
RZ_API RzAnalysisClassErr rz_analysis_class_method_get_by_addr(RzAnalysis *analysis, const char *class_name, ut64 addr, RzAnalysisMethod *method)
RZ_API void rz_analysis_class_delete(RzAnalysis *analysis, const char *name)
RZ_API RzAnalysisClassErr rz_analysis_class_vtable_get(RzAnalysis *analysis, const char *class_name, const char *vtable_id, RzAnalysisVTable *vtable)
RZ_API RzAnalysisCond * rz_analysis_cond_new_from_string(const char *str)
RZ_API RzAnalysisCond * rz_analysis_cond_new_from_op(RzAnalysisOp *op)
RZ_API int rz_analysis_cond_eval(RzAnalysis *analysis, RzAnalysisCond *cond)
RZ_API RzAnalysisCond * rz_analysis_cond_new(void)
RZ_API void rz_analysis_cond_fini(RzAnalysisCond *c)
RZ_API void rz_analysis_cond_free(RzAnalysisCond *c)
RZ_API char * rz_analysis_cond_to_string(RzAnalysisCond *cond)
RZ_API void rz_analysis_cycle_frame_free(RzAnalysisCycleFrame *cf)
RZ_API RzAnalysisCycleFrame * rz_analysis_cycle_frame_new(void)
static static fork const void static count static fd const char const char static newpath const char static path const char path
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void count
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len static semflg const void static shmflg const struct timespec struct timespec static rem const char static group const void start
RZ_API RzAnalysisData * rz_analysis_data_new(ut64 addr, int type, ut64 n, const ut8 *buf, int len)
RZ_API const char * rz_analysis_datatype_to_string(RzAnalysisDataType t)
RZ_API RzAnalysisData * rz_analysis_data(RzAnalysis *analysis, ut64 addr, const ut8 *buf, int size, int wordsize)
RZ_API const char * rz_analysis_data_kind(RzAnalysis *a, ut64 addr, const ut8 *buf, int len)
RZ_API RzAnalysisData * rz_analysis_data_new_string(ut64 addr, const char *p, int len, int type)
RZ_API void rz_analysis_data_free(RzAnalysisData *d)
RZ_API char * rz_analysis_data_to_string(RzAnalysisData *d, RzConsPrintablePalette *pal)
RZ_API void rz_analysis_dwarf_process_info(const RzAnalysis *analysis, RzAnalysisDwarfContext *ctx)
Parses type and function information out of DWARF entries and stores them to the sdb for further use.
RZ_API void rz_analysis_dwarf_integrate_functions(RzAnalysis *analysis, RzFlag *flags, Sdb *dwarf_sdb)
Use parsed DWARF function info from Sdb in the function analysis XXX right now we only save parsed na...
RZ_API void rz_analysis_esil_stack_free(RzAnalysisEsil *esil)
RZ_API RzAnalysisEsil * rz_analysis_esil_new(int stacksize, int iotrap, unsigned int addrsize)
RZ_API int rz_analysis_esil_get_parm(RzAnalysisEsil *esil, const char *str, ut64 *num)
RZ_API bool rz_analysis_esil_pushnum(RzAnalysisEsil *esil, ut64 num)
RZ_API int rz_analysis_esil_condition(RzAnalysisEsil *esil, const char *str)
RZ_API bool rz_analysis_esil_set_pc(RzAnalysisEsil *esil, ut64 addr)
RZ_API const char * rz_analysis_esil_trapstr(int type)
RZ_API int rz_analysis_esil_mem_write(RzAnalysisEsil *esil, ut64 addr, const ut8 *buf, int len)
RZ_API int rz_analysis_esil_reg_read(RzAnalysisEsil *esil, const char *regname, ut64 *num, int *size)
RZ_API bool rz_analysis_esil_set_op(RzAnalysisEsil *esil, const char *op, RzAnalysisEsilOpCb code, ut32 push, ut32 pop, ut32 type)
RZ_API int rz_analysis_esil_reg_write(RzAnalysisEsil *esil, const char *dst, ut64 num)
RZ_API char * rz_analysis_esil_pop(RzAnalysisEsil *esil)
RZ_API bool rz_analysis_esil_setup(RzAnalysisEsil *esil, RzAnalysis *analysis, int romem, int stats, int nonull)
RZ_API bool rz_analysis_esil_parse(RzAnalysisEsil *esil, const char *str)
RZ_API bool rz_analysis_esil_push(RzAnalysisEsil *esil, const char *str)
RZ_API void rz_analysis_esil_free(RzAnalysisEsil *esil)
RZ_API int rz_analysis_esil_get_parm_type(RzAnalysisEsil *esil, const char *str)
RZ_API int rz_analysis_esil_mem_read(RzAnalysisEsil *esil, ut64 addr, ut8 *buf, int len)
RZ_API bool rz_analysis_esil_runword(RzAnalysisEsil *esil, const char *word)
RZ_API bool rz_analysis_esil_load_interrupts(RzAnalysisEsil *esil, RzAnalysisEsilInterruptHandler *handlers[], ut32 src_id)
RZ_API RzAnalysisEsilInterrupt * rz_analysis_esil_interrupt_new(RzAnalysisEsil *esil, ut32 src_id, RzAnalysisEsilInterruptHandler *ih)
RZ_API bool rz_analysis_esil_load_interrupts_from_lib(RzAnalysisEsil *esil, const char *path)
RZ_API void rz_analysis_esil_interrupts_init(RzAnalysisEsil *esil)
RZ_API bool rz_analysis_esil_set_interrupt(RzAnalysisEsil *esil, RzAnalysisEsilInterrupt *intr)
RZ_API int rz_analysis_esil_fire_interrupt(RzAnalysisEsil *esil, ut32 intr_num)
RZ_API void rz_analysis_esil_interrupt_free(RzAnalysisEsil *esil, RzAnalysisEsilInterrupt *intr)
RZ_API void rz_analysis_esil_interrupts_fini(RzAnalysisEsil *esil)
RZ_API void rz_analysis_esil_mem_ro(RzAnalysisEsil *esil, int mem_readonly)
RZ_API void rz_analysis_esil_stats(RzAnalysisEsil *esil, int enable)
RZ_API RzAnalysisEsilTrace * rz_analysis_esil_trace_new(RzAnalysisEsil *esil)
RZ_API void rz_analysis_esil_trace_restore(RzAnalysisEsil *esil, int idx)
RZ_API void rz_analysis_esil_trace_list(RzAnalysisEsil *esil)
RZ_API void rz_analysis_esil_trace_free(RzAnalysisEsilTrace *trace)
RZ_API void rz_analysis_esil_trace_op(RzAnalysisEsil *esil, RZ_NONNULL RzAnalysisOp *op)
RZ_API void rz_analysis_esil_trace_show(RzAnalysisEsil *esil, int idx)
RZ_API RZ_BORROW RzILTraceInstruction * rz_analysis_esil_get_instruction_trace(RZ_NONNULL RzAnalysisEsilTrace *etrace, int idx)
RZ_API RzAnalysisBlock * rz_analysis_fcn_bbget_at(RzAnalysis *analysis, RzAnalysisFunction *fcn, ut64 addr)
RZ_API RZ_OWN RzPVector * rz_analysis_function_args(RzAnalysis *a, RzAnalysisFunction *fcn)
Returns vector of all function arguments.
RZ_API void rz_analysis_fcn_invalidate_read_ahead_cache(void)
RZ_API RzAnalysisFunction * rz_analysis_fcn_next(RzAnalysis *analysis, ut64 addr)
RZ_API int rz_analysis_function_resize(RzAnalysisFunction *fcn, int newsize)
RZ_API int rz_analysis_run_tasks(RZ_NONNULL RzVector *tasks)
Runs analysis on the task items.
RZ_API int rz_analysis_fcn_del(RzAnalysis *a, ut64 addr)
RZ_API ut32 rz_analysis_function_cost(RzAnalysisFunction *fcn)
RZ_API int rz_analysis_function_loops(RzAnalysisFunction *fcn)
RZ_DEPRECATE RZ_API RzAnalysisFunction * rz_analysis_get_fcn_in(RzAnalysis *analysis, ut64 addr, int type)
RZ_API bool rz_analysis_function_purity(RzAnalysisFunction *fcn)
RZ_API char * rz_analysis_function_get_json(RzAnalysisFunction *function)
RZ_API RzAnalysisFunction * rz_analysis_get_function_byname(RzAnalysis *a, const char *name)
RZ_API bool rz_analysis_task_item_new(RZ_NONNULL RzAnalysis *analysis, RZ_NONNULL RzVector *tasks, RZ_NONNULL RzAnalysisFunction *fcn, RZ_NULLABLE RzAnalysisBlock *block, ut64 address)
Adds a new task item to the tasks parameter.
RZ_API bool rz_analysis_fcn_add_bb(RzAnalysis *a, RzAnalysisFunction *fcn, ut64 addr, ut64 size, ut64 jump, ut64 fail, RZ_BORROW RzAnalysisDiff *diff)
RZ_DEPRECATE RZ_API RzAnalysisFunction * rz_analysis_get_fcn_in_bounds(RzAnalysis *analysis, ut64 addr, int type)
RZ_API int rz_analysis_function_count_edges(const RzAnalysisFunction *fcn, RZ_NULLABLE int *ebbs)
RZ_API bool rz_analysis_function_set_type_str(RzAnalysis *a, RZ_NONNULL RzAnalysisFunction *f, RZ_NONNULL const char *sig)
Parses the function type and sets it for the given function.
RZ_API int rz_analysis_fcn_count(RzAnalysis *analysis, ut64 from, ut64 to)
RZ_API size_t rz_analysis_function_arg_count(RzAnalysis *a, RzAnalysisFunction *fcn)
Returns the argument count of a function.
RZ_API void rz_analysis_function_update_analysis(RzAnalysisFunction *fcn)
RZ_API void rz_analysis_del_jmprefs(RzAnalysis *analysis, RzAnalysisFunction *fcn)
RZ_API void rz_analysis_update_analysis_range(RzAnalysis *analysis, ut64 addr, int size)
RZ_API const char * rz_analysis_fcntype_tostring(int type)
RZ_API int rz_analysis_fcn(RzAnalysis *analysis, RzAnalysisFunction *fcn, ut64 addr, ut64 len, int reftype)
RZ_API bool rz_analysis_check_fcn(RzAnalysis *analysis, ut8 *buf, ut16 bufsz, ut64 addr, ut64 low, ut64 high)
RZ_API void rz_analysis_function_check_bp_use(RzAnalysisFunction *fcn)
RZ_API void rz_analysis_trim_jmprefs(RzAnalysis *analysis, RzAnalysisFunction *fcn)
RZ_API RZ_OWN RzCallable * rz_analysis_function_derive_type(RzAnalysis *analysis, RzAnalysisFunction *f)
Derives the RzCallable type for the given function.
RZ_API RzAnalysisBlock * rz_analysis_fcn_bbget_in(const RzAnalysis *analysis, RzAnalysisFunction *fcn, ut64 addr)
RZ_API RZ_OWN RzList * rz_analysis_types_from_fcn(RzAnalysis *analysis, RzAnalysisFunction *fcn)
RZ_API bool rz_analysis_function_set_type(RzAnalysis *a, RZ_NONNULL RzAnalysisFunction *f, RZ_NONNULL RzCallable *callable)
Sets the RzCallable type for the given function.
RZ_API int rz_analysis_fcn_del_locs(RzAnalysis *analysis, ut64 addr)
RZ_API int rz_analysis_function_complexity(RzAnalysisFunction *fcn)
RZ_API RZ_OWN char * rz_analysis_function_get_signature(RZ_NONNULL RzAnalysisFunction *function)
unsigned short prefix[65536]
RZ_API void rz_analysis_hint_set_val(RzAnalysis *a, ut64 addr, ut64 v)
RZ_API void rz_analysis_hint_set_nword(RzAnalysis *a, ut64 addr, int nword)
RZ_API void rz_analysis_hint_unset_nword(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_set_newbits(RzAnalysis *a, ut64 addr, int bits)
RZ_API RZ_NULLABLE const RzVector * rz_analysis_addr_hints_at(RzAnalysis *analysis, ut64 addr)
RZ_API RzAnalysisHint * rz_analysis_hint_get(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_set_high(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_clear(RzAnalysis *a)
RZ_API void rz_analysis_hint_unset_stackframe(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_unset_newbits(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_unset_type(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_addr_hints_foreach(RzAnalysis *analysis, RzAnalysisAddrHintRecordsCb cb, void *user)
RZ_API void rz_analysis_hint_set_stackframe(RzAnalysis *a, ut64 addr, ut64 size)
RZ_API void rz_analysis_hint_unset_fail(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_set_ret(RzAnalysis *a, ut64 addr, ut64 val)
RZ_API void rz_analysis_hint_unset_offset(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_unset_size(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_unset_syntax(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_unset_jump(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_set_jump(RzAnalysis *a, ut64 addr, ut64 jump)
RZ_API void rz_analysis_hint_unset_arch(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_set_opcode(RzAnalysis *a, ut64 addr, const char *opcode)
RZ_API void rz_analysis_arch_hints_foreach(RzAnalysis *analysis, RzAnalysisArchHintCb cb, void *user)
RZ_API void rz_analysis_hint_set_bits(RzAnalysis *a, ut64 addr, int bits)
RZ_API void rz_analysis_hint_free(RzAnalysisHint *h)
RZ_API void rz_analysis_hint_set_syntax(RzAnalysis *a, ut64 addr, const char *syn)
RZ_API int rz_analysis_hint_bits_at(RzAnalysis *analysis, ut64 addr, RZ_NULLABLE ut64 *hint_addr)
RZ_API void rz_analysis_hint_del(RzAnalysis *a, ut64 addr, ut64 size)
RZ_API RZ_NULLABLE RZ_BORROW const char * rz_analysis_hint_arch_at(RzAnalysis *analysis, ut64 addr, RZ_NULLABLE ut64 *hint_addr)
RZ_API void rz_analysis_bits_hints_foreach(RzAnalysis *analysis, RzAnalysisBitsHintCb cb, void *user)
RZ_API void rz_analysis_hint_set_fail(RzAnalysis *a, ut64 addr, ut64 fail)
RZ_API void rz_analysis_hint_unset_opcode(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_unset_esil(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_set_esil(RzAnalysis *a, ut64 addr, const char *esil)
RZ_API void rz_analysis_hint_unset_immbase(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_unset_bits(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_unset_ret(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_unset_high(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_set_arch(RzAnalysis *a, ut64 addr, RZ_NULLABLE const char *arch)
RZ_API void rz_analysis_hint_set_offset(RzAnalysis *a, ut64 addr, const char *typeoff)
RZ_API void rz_analysis_hint_set_immbase(RzAnalysis *a, ut64 addr, int base)
RZ_API void rz_analysis_hint_set_type(RzAnalysis *a, ut64 addr, int type)
RZ_API void rz_analysis_hint_unset_val(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_unset_pointer(RzAnalysis *a, ut64 addr)
RZ_API void rz_analysis_hint_set_pointer(RzAnalysis *a, ut64 addr, ut64 ptr)
RZ_API void rz_analysis_hint_set_size(RzAnalysis *a, ut64 addr, ut64 size)
RZ_API RzILTraceMemOp * rz_analysis_il_get_mem_op_trace(RzILTraceInstruction *trace, ut64 addr, RzILTraceOpType op_type)
RZ_API bool rz_analysis_il_mem_trace_contains(RzILTraceInstruction *trace, ut64 addr, RzILTraceOpType op_type)
RZ_API RzILTraceInstruction * rz_analysis_il_trace_instruction_new(ut64 addr)
RZ_API bool rz_analysis_il_trace_add_mem(RzILTraceInstruction *trace, RzILTraceMemOp *mem)
RZ_API bool rz_analysis_il_reg_trace_contains(RzILTraceInstruction *trace, const char *regname, RzILTraceOpType op_type)
RZ_API void rz_analysis_il_trace_instruction_free(RzILTraceInstruction *instruction)
RZ_API bool rz_analysis_il_trace_add_reg(RzILTraceInstruction *trace, RzILTraceRegOp *reg)
RZ_API RzILTraceRegOp * rz_analysis_il_get_reg_op_trace(RzILTraceInstruction *trace, const char *regname, RzILTraceOpType op_type)
RZ_API bool rz_analysis_walkthrough_arm_jmptbl_style(RZ_NONNULL RzAnalysis *analysis, RZ_NONNULL RzAnalysisFunction *fcn, RZ_NONNULL RzAnalysisBlock *block, RZ_NONNULL RzAnalysisJmpTableParams *params)
Marks for analysis ARM specific jump table cases.
RZ_API bool rz_analysis_get_jmptbl_info(RZ_NONNULL RzAnalysis *analysis, RZ_NONNULL RzAnalysisFunction *fcn, RZ_NONNULL RzAnalysisBlock *block, ut64 jmp_address, RZ_NONNULL RzAnalysisJmpTableParams *params)
Gets some necessary information about a jump table to perform analysis on.
RZ_API bool rz_analysis_walkthrough_jmptbl(RZ_NONNULL RzAnalysis *analysis, RZ_NONNULL RzAnalysisFunction *fcn, RZ_NONNULL RzAnalysisBlock *block, RZ_NONNULL RzAnalysisJmpTableParams *params)
Marks the jump table cases for analysis.
RZ_API bool rz_analysis_get_delta_jmptbl_info(RZ_NONNULL RzAnalysis *analysis, RZ_NONNULL RzAnalysisFunction *fcn, ut64 jmp_address, ut64 lea_address, RZ_NONNULL RzAnalysisJmpTableParams *params)
Gets some necessary information about a jump table to perform analysis on.
RZ_API bool rz_analysis_jmptbl(RzAnalysis *analysis, RzAnalysisFunction *fcn, RzAnalysisBlock *block, ut64 jmpaddr, ut64 table, ut64 tablesize, ut64 default_addr)
RZ_API bool rz_analysis_walkthrough_casetbl(RZ_NONNULL RzAnalysis *analysis, RZ_NONNULL RzAnalysisFunction *fcn, RZ_NONNULL RzAnalysisBlock *block, RZ_NONNULL RzAnalysisJmpTableParams *params)
Marks for analysis jump table cases with a space optimization for multiple cases corresponding to the...
RZ_API bool rz_analysis_function_delete_label(RzAnalysisFunction *fcn, const char *name)
RZ_API const char * rz_analysis_function_get_label_at(RzAnalysisFunction *fcn, ut64 addr)
RZ_API ut64 rz_analysis_function_get_label(RzAnalysisFunction *fcn, const char *name)
RZ_API bool rz_analysis_function_delete_label_at(RzAnalysisFunction *fcn, ut64 addr)
RZ_API bool rz_analysis_function_set_label(RzAnalysisFunction *fcn, const char *name, ut64 addr)
static void list(RzEgg *egg)
static static fork const void static count static fd const char const char static newpath char char char static envp time_t static t const char static mode static whence const char static dir time_t static t unsigned static seconds const char struct utimbuf static buf static inc static sig const char static mode static oldfd struct tms static buf static getgid static geteuid const char static filename static arg static mask struct ustat static ubuf static getppid static setsid static egid sigset_t static set struct timeval struct timezone static tz fd_set fd_set fd_set struct timeval static timeout const char char static bufsiz const char static swapflags void static offset const char static length static mode static who const char struct statfs static buf unsigned unsigned num
RZ_API int rz_analysis_op_reg_delta(RzAnalysis *analysis, ut64 addr, const char *name)
RZ_API void rz_analysis_op_free(void *op)
RZ_API bool rz_analysis_op_fini(RzAnalysisOp *op)
RZ_API char * rz_analysis_op_to_string(RzAnalysis *analysis, RzAnalysisOp *op)
RZ_API int rz_analysis_op_hint(RzAnalysisOp *op, RzAnalysisHint *hint)
RZ_API const char * rz_analysis_optype_to_string(int type)
RZ_API bool rz_analysis_op_nonlinear(int t)
RZ_API int rz_analysis_optype_from_string(RZ_NONNULL const char *name)
RZ_API RzAnalysisOp * rz_analysis_op_new(void)
RZ_API void rz_analysis_op_init(RzAnalysisOp *op)
RZ_API int rz_analysis_op_family_from_string(RZ_NONNULL const char *name)
RZ_API const char * rz_analysis_stackop_tostring(int s)
RZ_API int rz_analysis_op(RzAnalysis *analysis, RzAnalysisOp *op, ut64 addr, const ut8 *data, int len, RzAnalysisOpMask mask)
RZ_API const char * rz_analysis_op_family_to_string(int id)
RZ_API bool rz_analysis_op_ismemref(int t)
RZ_API RzList * rz_analysis_op_list_new(void)
RZ_API void rz_analysis_reflines_str_free(RzAnalysisRefStr *refstr)
RZ_API RzList * rz_analysis_reflines_get(RzAnalysis *analysis, ut64 addr, const ut8 *buf, ut64 len, int nlines, int linesout, int linescall)
RZ_API RzAnalysisRefStr * rz_analysis_reflines_str(void *_core, ut64 addr, int opts)
RZ_API int rz_analysis_reflines_middle(RzAnalysis *a, RzList *list, ut64 addr, int len)
RZ_API char * rz_analysis_rtti_demangle_class_name(RzAnalysis *analysis, const char *name)
RZ_API void rz_analysis_rtti_print_at_vtable(RzAnalysis *analysis, ut64 addr, RzOutputMode mode)
RZ_API void rz_analysis_rtti_print_all(RzAnalysis *analysis, RzOutputMode mode)
RZ_API void rz_analysis_rtti_recover_all(RzAnalysis *analysis)
RZ_API void rz_analysis_rtti_itanium_recover_all(RVTableContext *context, RzList *vtables)
RZ_API char * rz_analysis_rtti_itanium_demangle_class_name(RVTableContext *context, const char *name)
RZ_API bool rz_analysis_rtti_itanium_print_at_vtable(RVTableContext *context, ut64 addr, RzOutputMode mode)
RZ_API void rz_analysis_rtti_msvc_print_base_class_descriptor(RVTableContext *context, ut64 addr, int mode)
RZ_API void rz_analysis_rtti_msvc_print_type_descriptor(RVTableContext *context, ut64 addr, int mode)
RZ_API void rz_analysis_rtti_msvc_recover_all(RVTableContext *vt_context, RzList *vtables)
RZ_API void rz_analysis_rtti_msvc_print_complete_object_locator(RVTableContext *context, ut64 addr, int mode)
RZ_API char * rz_analysis_rtti_msvc_demangle_class_name(RVTableContext *context, const char *name)
RZ_API void rz_analysis_rtti_msvc_print_class_hierarchy_descriptor(RVTableContext *context, ut64 addr, int mode)
RZ_API bool rz_analysis_rtti_msvc_print_at_vtable(RVTableContext *context, ut64 addr, RzOutputMode mode, bool strict)
RZ_API void rz_analysis_esil_sources_fini(ANALYSIS_ESIL *esil)
struct rz_analysis_esil_basic_block_t RzAnalysisEsilBB
int(* RzAnalysisDiffBBCallback)(RzAnalysis *analysis, RzAnalysisFunction *fcn, RzAnalysisFunction *fcn2)
RZ_API bool rz_analysis_esil_claim_source(ANALYSIS_ESIL *esil, ut32 src_id)
RZ_LIB_VERSION_HEADER(rz_analysis)
struct rz_analysis_il_init_state_t RzAnalysisILInitState
Description of an initial state of an RzAnalysisILVM.
@ RZ_ANALYSIS_VAR_SCOPE_LOCAL
RZ_DEPRECATE struct rz_analysis_var_field_t RzAnalysisVarField
struct rz_analysis_esil_source_t RzAnalysisEsilSource
@ RZ_ANALYSIS_ESIL_PARM_NUM
@ RZ_ANALYSIS_ESIL_PARM_INVALID
@ RZ_ANALYSIS_ESIL_PARM_REG
bool(* RzAnalysisEsilOpCb)(RzAnalysisEsil *esil)
struct rz_analysis_esil_trace_t RzAnalysisEsilTrace
struct rz_analysis_plugin_t RzAnalysisPlugin
bool(* RzAnalysisEsilInterruptCB)(ANALYSIS_ESIL *esil, ut32 interrupt, void *user)
struct rz_analysis_ref_t RzAnalysisXRef
struct rz_analysis_esil_change_mem_t RzAnalysisEsilMemChange
@ RZ_ANALYSIS_IL_STEP_IL_RUNTIME_ERROR
@ RZ_ANALYSIS_IL_STEP_INVALID_OP
@ RZ_ANALYSIS_IL_STEP_RESULT_SUCCESS
@ RZ_ANALYSIS_IL_STEP_RESULT_NOT_SET_UP
RzILOpEffect * RzAnalysisLiftedILOp
struct rz_analysis_var_t RzAnalysisVar
@ RZ_ANALYSIS_FQUALIFIER_VIRTUAL
@ RZ_ANALYSIS_FQUALIFIER_STATIC
@ RZ_ANALYSIS_FQUALIFIER_INLINE
@ RZ_ANALYSIS_FQUALIFIER_VOLATILE
@ RZ_ANALYSIS_FQUALIFIER_NAKED
@ RZ_ANALYSIS_FQUALIFIER_NONE
struct rz_analysis_bind_t RzAnalysisBind
struct rz_analysis_il_init_state_var_t RzAnalysisILInitStateVar
Description of the contents of a single IL variable.
@ RZ_ANALYSIS_DIFF_TYPE_MATCH
@ RZ_ANALYSIS_DIFF_TYPE_UNMATCH
@ RZ_ANALYSIS_DIFF_TYPE_NULL
@ RZ_ANALYSIS_FCN_TYPE_INT
@ RZ_ANALYSIS_FCN_TYPE_SYM
@ RZ_ANALYSIS_FCN_TYPE_IMP
@ RZ_ANALYSIS_FCN_TYPE_ANY
@ RZ_ANALYSIS_FCN_TYPE_LOC
@ RZ_ANALYSIS_FCN_TYPE_NULL
@ RZ_ANALYSIS_FCN_TYPE_ROOT
@ RZ_ANALYSIS_FCN_TYPE_FCN
@ RZ_ANALYSIS_STACK_RESET
@ RZ_ANALYSIS_STACK_ALIGN
@ RZ_ANALYSIS_XREF_TYPE_CODE
@ RZ_ANALYSIS_XREF_TYPE_NULL
@ RZ_ANALYSIS_XREF_TYPE_STRING
@ RZ_ANALYSIS_XREF_TYPE_CALL
@ RZ_ANALYSIS_XREF_TYPE_DATA
rz_analysis_addr_hint_type_t
@ RZ_ANALYSIS_ADDR_HINT_TYPE_SYNTAX
@ RZ_ANALYSIS_ADDR_HINT_TYPE_PTR
@ RZ_ANALYSIS_ADDR_HINT_TYPE_SIZE
@ RZ_ANALYSIS_ADDR_HINT_TYPE_STACKFRAME
@ RZ_ANALYSIS_ADDR_HINT_TYPE_HIGH
@ RZ_ANALYSIS_ADDR_HINT_TYPE_ESIL
@ RZ_ANALYSIS_ADDR_HINT_TYPE_NEW_BITS
@ RZ_ANALYSIS_ADDR_HINT_TYPE_TYPE_OFFSET
@ RZ_ANALYSIS_ADDR_HINT_TYPE_JUMP
@ RZ_ANALYSIS_ADDR_HINT_TYPE_OPTYPE
@ RZ_ANALYSIS_ADDR_HINT_TYPE_RET
@ RZ_ANALYSIS_ADDR_HINT_TYPE_IMMBASE
@ RZ_ANALYSIS_ADDR_HINT_TYPE_NWORD
@ RZ_ANALYSIS_ADDR_HINT_TYPE_FAIL
@ RZ_ANALYSIS_ADDR_HINT_TYPE_OPCODE
@ RZ_ANALYSIS_ADDR_HINT_TYPE_VAL
struct rz_analysis_op_t RzAnalysisOp
struct rz_analysis_task_item RzAnalysisTaskItem
RZ_API const char * rz_analysis_ref_type_tostring(RzAnalysisXRefType t)
struct rz_analysis_type_var_t RzAnalysisTypeVar
struct rz_analysis_cond_t RzAnalysisCond
struct rz_analysis_type_array_t RzAnalysisTypeArray
struct rz_analysis_type_union_t RzAnalysisTypeUnion
@ RZ_ANALYSIS_CPP_ABI_ITANIUM
@ RZ_ANALYSIS_CPP_ABI_MSVC
@ RZ_ANALYSIS_TRAP_UNHANDLED
@ RZ_ANALYSIS_TRAP_EXEC_ERR
@ RZ_ANALYSIS_TRAP_DIVBYZERO
@ RZ_ANALYSIS_TRAP_INVALID
@ RZ_ANALYSIS_TRAP_WRITE_ERR
@ RZ_ANALYSIS_TRAP_READ_ERR
@ RZ_ANALYSIS_TRAP_UNALIGNED
@ RZ_ANALYSIS_TRAP_BREAKPOINT
struct rz_analysis_ref_char RzAnalysisRefStr
struct rz_analysis_function_t RzAnalysisFunction
@ RZ_ANALYSIS_OP_FAMILY_FPU
@ RZ_ANALYSIS_OP_FAMILY_THREAD
@ RZ_ANALYSIS_OP_FAMILY_LAST
@ RZ_ANALYSIS_OP_FAMILY_CRYPTO
@ RZ_ANALYSIS_OP_FAMILY_SSE
@ RZ_ANALYSIS_OP_FAMILY_UNKNOWN
@ RZ_ANALYSIS_OP_FAMILY_PRIV
@ RZ_ANALYSIS_OP_FAMILY_CPU
@ RZ_ANALYSIS_OP_FAMILY_MMX
@ RZ_ANALYSIS_OP_FAMILY_VIRT
@ RZ_ANALYSIS_OP_FAMILY_IO
@ RZ_ANALYSIS_OP_FAMILY_SECURITY
struct rz_analysis_type_alloca_t RzAnalysisTypeAlloca
struct rz_analysis_refline_t RzAnalysisRefline
struct rz_analysis_hint_t RzAnalysisHint
struct rz_analysis_cycle_frame_t RzAnalysisCycleFrame
struct rz_analysis_esil_change_reg_t RzAnalysisEsilRegChange
RzAnalysisHint *(* RzAnalysisGetHint)(RzAnalysis *analysis, ut64 addr)
struct rz_analysis_t RzAnalysis
struct rz_analysis_esil_expr_offset_t RzAnalysisEsilEOffset
struct rz_analysis_callbacks_t RzAnalysisCallbacks
RzAnalysisFunction *(* RzAnalysisGetFcnIn)(RzAnalysis *analysis, ut64 addr, int type)
@ RZ_ANALYSIS_ESIL_OP_TYPE_MATH
@ RZ_ANALYSIS_ESIL_OP_TYPE_MEM_WRITE
@ RZ_ANALYSIS_ESIL_OP_TYPE_UNKNOWN
@ RZ_ANALYSIS_ESIL_OP_TYPE_CONTROL_FLOW
@ RZ_ANALYSIS_ESIL_OP_TYPE_MEM_READ
@ RZ_ANALYSIS_ESIL_OP_TYPE_REG_WRITE
@ RZ_ANALYSIS_ESIL_OP_TYPE_CUSTOM
int(* RzAnalysisOpCallback)(RzAnalysis *a, RzAnalysisOp *op, ut64 addr, const ut8 *data, int len, RzAnalysisOpMask mask)
@ RZ_ANALYSIS_DATA_TYPE_INVALID
@ RZ_ANALYSIS_DATA_TYPE_PATTERN
@ RZ_ANALYSIS_DATA_TYPE_UNKNOWN
@ RZ_ANALYSIS_DATA_TYPE_NUMBER
@ RZ_ANALYSIS_DATA_TYPE_STRING
@ RZ_ANALYSIS_DATA_TYPE_WIDE_STRING
@ RZ_ANALYSIS_DATA_TYPE_HEADER
@ RZ_ANALYSIS_DATA_TYPE_POINTER
@ RZ_ANALYSIS_DATA_TYPE_SEQUENCE
@ RZ_ANALYSIS_DATA_TYPE_NULL
struct rz_analysis_options_t RzAnalysisOptions
int(* RzAnalysisEsilCB)(RzAnalysisEsil *esil)
struct rz_analysis_var_global_t RzAnalysisVarGlobal
Global variables.
RZ_API void rz_analysis_esil_release_source(ANALYSIS_ESIL *esil, ut32 src_id)
int(* RzAnalysisEsilHookRegWriteCB)(ANALYSIS_ESIL *esil, const char *name, ut64 *val)
struct rz_analysis_cycle_hook_t RzAnalysisCycleHook
bool(* RzAnalysisRegProfCallback)(RzAnalysis *a)
RzAnalysisEsilTrace RzAnalysisRzilTrace
struct rz_analysis_bb_t RzAnalysisBlock
struct rz_analysis_case_obj_t RzAnalysisCaseOp
@ RZ_ANALYSIS_OP_PREFIX_HWLOOP_END
@ RZ_ANALYSIS_OP_PREFIX_REP
@ RZ_ANALYSIS_OP_PREFIX_UNLIKELY
@ RZ_ANALYSIS_OP_PREFIX_COND
@ RZ_ANALYSIS_OP_PREFIX_LOCK
@ RZ_ANALYSIS_OP_PREFIX_LIKELY
@ RZ_ANALYSIS_OP_PREFIX_REPNE
int(* RzAnalysisFPBBCallback)(RzAnalysis *a, RzAnalysisBlock *bb)
struct rz_analysis_func_arg_t RzAnalysisFuncArg
@ RZ_ANALYSIS_OP_DIR_READ
@ RZ_ANALYSIS_OP_DIR_EXEC
@ RZ_ANALYSIS_OP_DIR_WRITE
RzAnalysisEsilMemChange RzAnalysisRzilMemChange
enum rz_analysis_addr_hint_type_t RzAnalysisAddrHintType
struct rz_analysis_il_config_t RzAnalysisILConfig
Description of the global context of an RzAnalysisILVM.
@ RZ_ANALYSIS_DATATYPE_FLOAT
@ RZ_ANALYSIS_DATATYPE_INT64
@ RZ_ANALYSIS_DATATYPE_STRING
@ RZ_ANALYSIS_DATATYPE_NULL
@ RZ_ANALYSIS_DATATYPE_INT32
@ RZ_ANALYSIS_DATATYPE_ARRAY
@ RZ_ANALYSIS_DATATYPE_CLASS
@ RZ_ANALYSIS_DATATYPE_BOOLEAN
@ RZ_ANALYSIS_DATATYPE_OBJECT
@ RZ_ANALYSIS_DATATYPE_INT16
RzAnalysisILConfig *(* RzAnalysisILConfigCB)(RzAnalysis *analysis)
RZ_API ut32 rz_analysis_esil_load_source(ANALYSIS_ESIL *esil, const char *path)
@ RZ_ANALYSIS_VAR_ACCESS_TYPE_READ
@ RZ_ANALYSIS_VAR_ACCESS_TYPE_WRITE
@ RZ_ANALYSIS_VAR_ACCESS_TYPE_PTR
struct rz_analysis_esil_interrupt_t RzAnalysisEsilInterrupt
RZ_API void * rz_analysis_esil_get_source(ANALYSIS_ESIL *esil, ut32 src_id)
@ RZ_ANALYSIS_OP_MASK_DISASM
@ RZ_ANALYSIS_OP_MASK_ALL
@ RZ_ANALYSIS_OP_MASK_BASIC
@ RZ_ANALYSIS_OP_MASK_VAL
@ RZ_ANALYSIS_OP_MASK_OPEX
@ RZ_ANALYSIS_OP_MASK_ESIL
@ RZ_ANALYSIS_OP_MASK_HINT
char *(* RzAnalysisRegProfGetCallback)(RzAnalysis *a)
struct rz_analysis_var_access_t RzAnalysisVarAccess
enum rz_analysis_data_type_t RzAnalysisDataType
@ RZ_ANALYSIS_ESIL_FLAG_SIGN
@ RZ_ANALYSIS_ESIL_FLAG_ZERO
@ RZ_ANALYSIS_ESIL_FLAG_CARRY
@ RZ_ANALYSIS_ESIL_FLAG_OVERFLOW
@ RZ_ANALYSIS_ESIL_FLAG_PARITY
int(* RzAnalysisEsilTrapCB)(RzAnalysisEsil *esil, int trap_type, int trap_code)
@ RZ_ANALYSIS_ACC_UNKNOWN
@ RZ_ANALYSIS_REFLINE_TYPE_MIDDLE_BEFORE
@ RZ_ANALYSIS_REFLINE_TYPE_MIDDLE_AFTER
@ RZ_ANALYSIS_REFLINE_TYPE_WIDE
@ RZ_ANALYSIS_REFLINE_TYPE_UTF8
struct rz_analysis_hint_cb_t RHintCb
struct rz_analysis_meta_item_t RzAnalysisMetaItem
struct rz_analysis_esil_callbacks_t RzAnalysisEsilCallbacks
int(* RzAnalysisDiffFcnCallback)(RzAnalysis *analysis, RzList *fcns, RzList *fcns2)
struct rz_analysis_fcn_meta_t RzAnalysisFcnMeta
struct rz_analysis_diff_t RzAnalysisDiff
struct rz_analysis_esil_word_t RzAnalysisEsilWord
RzAnalysisEsilBlockEnterType
@ RZ_ANALYSIS_ESIL_BLOCK_ENTER_FALSE
@ RZ_ANALYSIS_ESIL_BLOCK_ENTER_TRUE
@ RZ_ANALYSIS_ESIL_BLOCK_ENTER_NORMAL
@ RZ_ANALYSIS_ESIL_BLOCK_ENTER_GLUE
RZ_API void rz_analysis_esil_sources_init(ANALYSIS_ESIL *esil)
@ RZ_ANALYSIS_VAR_KIND_REG
@ RZ_ANALYSIS_VAR_KIND_SPV
@ RZ_ANALYSIS_VAR_KIND_BPV
struct rz_analysis_esil_operation_t RzAnalysisEsilOp
int(* RzAnalysisEsilLoopCB)(RzAnalysisEsil *esil, RzAnalysisOp *op)
@ RZ_ANALYSIS_OP_TYPE_CMP
@ RZ_ANALYSIS_OP_TYPE_SUB
@ RZ_ANALYSIS_OP_TYPE_ICALL
@ RZ_ANALYSIS_OP_TYPE_LOAD
@ RZ_ANALYSIS_OP_TYPE_CRYPTO
@ RZ_ANALYSIS_OP_TYPE_UNK
@ RZ_ANALYSIS_OP_TYPE_MUL
@ RZ_ANALYSIS_OP_TYPE_ROL
@ RZ_ANALYSIS_OP_TYPE_CASE
@ RZ_ANALYSIS_OP_TYPE_JMP
@ RZ_ANALYSIS_OP_TYPE_REP
@ RZ_ANALYSIS_OP_TYPE_AND
@ RZ_ANALYSIS_OP_TYPE_SAL
@ RZ_ANALYSIS_OP_TYPE_SYNC
@ RZ_ANALYSIS_OP_TYPE_MOD
@ RZ_ANALYSIS_OP_TYPE_UPUSH
@ RZ_ANALYSIS_OP_TYPE_RPUSH
@ RZ_ANALYSIS_OP_TYPE_UJMP
@ RZ_ANALYSIS_OP_TYPE_NOR
@ RZ_ANALYSIS_OP_TYPE_IJMP
@ RZ_ANALYSIS_OP_TYPE_UCCALL
@ RZ_ANALYSIS_OP_TYPE_MJMP
@ RZ_ANALYSIS_OP_TYPE_ROR
@ RZ_ANALYSIS_OP_TYPE_SWI
@ RZ_ANALYSIS_OP_TYPE_SAR
@ RZ_ANALYSIS_OP_TYPE_ABS
@ RZ_ANALYSIS_OP_TYPE_IND
@ RZ_ANALYSIS_OP_TYPE_NULL
@ RZ_ANALYSIS_OP_TYPE_CMOV
@ RZ_ANALYSIS_OP_TYPE_LEAVE
@ RZ_ANALYSIS_OP_TYPE_TRAP
@ RZ_ANALYSIS_OP_TYPE_XCHG
@ RZ_ANALYSIS_OP_TYPE_MEM
@ RZ_ANALYSIS_OP_TYPE_CCALL
@ RZ_ANALYSIS_OP_TYPE_CALL
@ RZ_ANALYSIS_OP_TYPE_ADD
@ RZ_ANALYSIS_OP_TYPE_SWITCH
@ RZ_ANALYSIS_OP_TYPE_STORE
@ RZ_ANALYSIS_OP_TYPE_CPL
@ RZ_ANALYSIS_OP_TYPE_REG
@ RZ_ANALYSIS_OP_TYPE_RCJMP
@ RZ_ANALYSIS_OP_TYPE_CRET
@ RZ_ANALYSIS_OP_TYPE_PUSH
@ RZ_ANALYSIS_OP_TYPE_SHR
@ RZ_ANALYSIS_OP_TYPE_IRJMP
@ RZ_ANALYSIS_OP_TYPE_POP
@ RZ_ANALYSIS_OP_TYPE_RJMP
@ RZ_ANALYSIS_OP_TYPE_CJMP
@ RZ_ANALYSIS_OP_TYPE_DIV
@ RZ_ANALYSIS_OP_TYPE_CSWI
@ RZ_ANALYSIS_OP_TYPE_COND
@ RZ_ANALYSIS_OP_TYPE_CAST
@ RZ_ANALYSIS_OP_TYPE_UCJMP
@ RZ_ANALYSIS_OP_TYPE_MOV
@ RZ_ANALYSIS_OP_TYPE_SHL
@ RZ_ANALYSIS_OP_TYPE_ILL
@ RZ_ANALYSIS_OP_TYPE_UCALL
@ RZ_ANALYSIS_OP_TYPE_NOT
@ RZ_ANALYSIS_OP_TYPE_RET
@ RZ_ANALYSIS_OP_TYPE_NOP
@ RZ_ANALYSIS_OP_TYPE_ACMP
@ RZ_ANALYSIS_OP_TYPE_LEA
@ RZ_ANALYSIS_OP_TYPE_RCALL
@ RZ_ANALYSIS_OP_TYPE_XOR
@ RZ_ANALYSIS_OP_TYPE_NEW
@ RZ_ANALYSIS_OP_TYPE_LENGTH
@ RZ_ANALYSIS_OP_TYPE_MCJMP
@ RZ_ANALYSIS_OP_TYPE_IRCALL
int(* RzAnalysisDiffEvalCallback)(RzAnalysis *analysis)
struct rz_analysis_type_ptr_t RzAnalysisTypePtr
struct rz_analysis_esil_t RzAnalysisEsil
struct rz_analysis_esil_interrupt_handler_t RzAnalysisEsilInterruptHandler
struct rz_analysis_dwarf_context RzAnalysisDwarfContext
int(* RzAnalysisFPFcnCallback)(RzAnalysis *a, RzAnalysisFunction *fcn)
RzAnalysisEsilRegChange RzAnalysisRzilRegChange
struct rz_analysis_value_t RzAnalysisValue
struct rz_analysis_range_t RzAnalysisRange
struct rz_analysis_switch_obj_t RzAnalysisSwitchOp
struct rz_analysis_addr_hint_record_t RzAnalysisAddrHintRecord
RzFlagItem *(* RzFlagSet)(RzFlag *f, const char *name, ut64 addr, ut32 size)
RzFlagItem *(* RzFlagGetAtAddr)(RzFlag *f, ut64)
RzFlagItem *(* RzFlagGet)(RzFlag *f, const char *name)
int(* RzListComparator)(const void *value, const void *list_data)
RzTypeCond
Type Conditions.
RzOutputMode
Enum to describe the way data are printed.
bool(* SdbForeachCallback)(void *user, const char *k, const char *v)
RZ_API bool rz_serialize_analysis_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RZ_NULLABLE RzSerializeResultInfo *res)
RZ_API RZ_NULLABLE RzAnalysisVar * rz_serialize_analysis_var_load(RZ_NONNULL RzAnalysisFunction *fcn, RZ_NONNULL RzSerializeAnalVarParser parser, RZ_NONNULL const RzJson *json)
RZ_API void rz_serialize_analysis_case_op_save(RZ_NONNULL PJ *j, RZ_NONNULL RzAnalysisCaseOp *op)
RZ_API bool rz_serialize_analysis_hints_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RZ_NULLABLE RzSerializeResultInfo *res)
RZ_API bool rz_serialize_analysis_cc_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RZ_NULLABLE RzSerializeResultInfo *res)
RZ_API void rz_serialize_analysis_imports_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis)
RZ_API RzAnalysisSwitchOp * rz_serialize_analysis_switch_op_load(RZ_NONNULL const RzJson *json)
RZ_API bool rz_serialize_analysis_blocks_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RzSerializeAnalDiffParser diff_parser, RZ_NULLABLE RzSerializeResultInfo *res)
RZ_API bool rz_serialize_analysis_imports_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RZ_NULLABLE RzSerializeResultInfo *res)
RZ_API void rz_serialize_analysis_diff_save(RZ_NONNULL PJ *j, RZ_NONNULL RzAnalysisDiff *diff)
RZ_API void rz_serialize_analysis_hints_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis)
RZ_API bool rz_serialize_analysis_global_var_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RZ_NULLABLE RzSerializeResultInfo *res)
RZ_API void rz_serialize_analysis_global_var_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *anal)
RZ_API void rz_serialize_analysis_switch_op_save(RZ_NONNULL PJ *j, RZ_NONNULL RzAnalysisSwitchOp *op)
RZ_API void rz_serialize_analysis_classes_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis)
RZ_API void rz_serialize_analysis_function_noreturn_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis)
RZ_API RzSerializeAnalDiffParser rz_serialize_analysis_diff_parser_new(void)
RZ_API RZ_NULLABLE RzAnalysisDiff * rz_serialize_analysis_diff_load(RZ_NONNULL RzSerializeAnalDiffParser parser, RZ_NONNULL const RzJson *json)
RZ_API RzSerializeAnalVarParser rz_serialize_analysis_var_parser_new(void)
RZ_API void rz_serialize_analysis_functions_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis)
RZ_API void rz_serialize_analysis_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis)
RZ_API void rz_serialize_analysis_var_parser_free(RzSerializeAnalVarParser parser)
RZ_API RzSerializeAnalGlobalVarParser rz_serialize_analysis_global_var_parser_new(void)
RZ_API bool rz_serialize_analysis_classes_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RZ_NULLABLE RzSerializeResultInfo *res)
RZ_API bool rz_serialize_analysis_types_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RZ_NULLABLE RzSerializeResultInfo *res)
RZ_API void rz_serialize_analysis_diff_parser_free(RzSerializeAnalDiffParser parser)
RZ_API void rz_serialize_analysis_types_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis)
RZ_API bool rz_serialize_analysis_xrefs_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RZ_NULLABLE RzSerializeResultInfo *res)
RZ_API void rz_serialize_analysis_global_var_parser_free(RzSerializeAnalGlobalVarParser parser)
RZ_API bool rz_serialize_analysis_functions_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RzSerializeAnalDiffParser diff_parser, RZ_NULLABLE RzSerializeResultInfo *res)
RZ_API void rz_serialize_analysis_cc_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis)
RZ_API bool rz_serialize_analysis_meta_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RZ_NULLABLE RzSerializeResultInfo *res)
RZ_API bool rz_serialize_analysis_function_noreturn_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RZ_NULLABLE RzSerializeResultInfo *res)
RZ_API void rz_serialize_analysis_xrefs_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis)
RZ_API void rz_serialize_analysis_blocks_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis)
RZ_API void rz_serialize_analysis_meta_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis)
RZ_API bool rz_serialize_typelinks_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzAnalysis *analysis, RZ_NULLABLE RzSerializeResultInfo *res)
Loads the type links from SDB.
RZ_API void rz_serialize_typelinks_save(RZ_NONNULL Sdb *db, RZ_NONNULL const RzAnalysis *analysis)
Saves the type links into SDB.
static struct sockaddr static addrlen static backlog const void static flags void struct sockaddr from
static struct sockaddr static addrlen static backlog const void static flags void struct sockaddr socklen_t static fromlen const void const struct sockaddr to
static struct sockaddr static addrlen static backlog const void static flags void flags
static struct sockaddr static addrlen static backlog const void msg
#define cond(bop, top, mask, flags)
RzAnalysisAddrHintType type
RzAnalysisSwitchOp * switch_op
RzAnalysisGetFcnIn get_fcn_in
RzAnalysisGetHint get_hint
int(* on_fcn_delete)(struct rz_analysis_t *, void *user, RzAnalysisFunction *fcn)
int(* on_fcn_rename)(struct rz_analysis_t *, void *user, RzAnalysisFunction *fcn, const char *oldname)
int(* on_fcn_bb_new)(struct rz_analysis_t *, void *user, RzAnalysisFunction *fcn, struct rz_analysis_bb_t *bb)
int(* on_fcn_new)(struct rz_analysis_t *, void *user, RzAnalysisFunction *fcn)
struct rz_analysis_cycle_frame_t * prev
const RzBinDwarfDebugInfo * info
RzAnalysisEsilBlockEnterType enter
RzAnalysisEsilEOffset first
RzAnalysisEsilEOffset last
int(* mem_write)(ANALYSIS_ESIL *esil, ut64 addr, const ut8 *buf, int len)
int(* hook_mem_read)(ANALYSIS_ESIL *esil, ut64 addr, ut8 *buf, int len)
int(* mem_read)(ANALYSIS_ESIL *esil, ut64 addr, ut8 *buf, int len)
int(* hook_command)(ANALYSIS_ESIL *esil, const char *op)
int(* reg_read)(ANALYSIS_ESIL *esil, const char *name, ut64 *res, int *size)
int(* hook_reg_read)(ANALYSIS_ESIL *esil, const char *name, ut64 *res, int *size)
int(* hook_mem_write)(ANALYSIS_ESIL *esil, ut64 addr, const ut8 *buf, int len)
int(* reg_write)(ANALYSIS_ESIL *esil, const char *name, ut64 val)
int(* hook_flag_read)(ANALYSIS_ESIL *esil, const char *flag, ut64 *num)
RzAnalysisEsilHookRegWriteCB hook_reg_write
RzAnalysisEsilInterruptCB cb
RzAnalysisEsilInterruptHandler * handler
RzAnalysisEsilCallbacks cb
RzAnalysisEsilTrace * trace
bool(* cmd)(ANALYSIS_ESIL *esil, const char *name, ut64 a0, ut64 a1)
RzRegArena * arena[RZ_REG_TYPE_LAST]
struct rz_analysis_t * analysis
void(* on_bits)(struct rz_analysis_t *a, ut64 addr, int bits, bool set)
Description of the global context of an RzAnalysisILVM.
ut32 pc_size
size of the program counter in bits
RZ_NULLABLE RzAnalysisILInitState * init_state
optional, initial contents for variables/registers, etc.
RzPVector labels
global labels, primarily for syscall/hook callbacks
ut32 mem_key_size
address size for memory 0, bound against IO
RZ_NULLABLE const char ** reg_bindings
Description of an initial state of an RzAnalysisILVM.
RzVector vars
Contents of global variables.
Description of the contents of a single IL variable.
RZ_NONNULL const char * name
High-level RzIL vm to emulate disassembled code.
RZ_NONNULL RzILRegBinding * reg_binding
specifies which (global) variables are bound to registers
RZ_NONNULL RzILVM * vm
low-level vm to execute IL code
RZ_NONNULL RzBuffer * io_buf
buffer to use for memory 0 (io)
RzAnalysisOpFamily family
RzAnalysisValue analysis_vals[6]
RzAnalysisSwitchOp * switch_op
RzAnalysisStackOp stackop
RzAnalysisOpPrefix prefix
RzAnalysisLiftedILOp il_op
RzAnalysisDataType datatype
RzAnalysisOpDirection direction
RzAnalysisRegProfGetCallback get_reg_profile
RzAnalysisEsilCB esil_fini
RzAnalysisEsilTrapCB esil_trap
bool(* init)(void **user)
RzAnalysisDiffEvalCallback diff_eval
RzAnalysisFPBBCallback fingerprint_bb
RzAnalysisEsilCB esil_init
int(* address_bits)(RzAnalysis *analysis, int bits)
RzAnalysisDiffFcnCallback diff_fcn
RzAnalysisEsilLoopCB esil_post_loop
RzAnalysisDiffBBCallback diff_bb
RzAnalysisFPFcnCallback fingerprint_fcn
RzAnalysisILConfigCB il_config
return an IL config to execute lifted code of the given analysis' arch/cpu/bits
int(* archinfo)(RzAnalysis *analysis, int query)
RzListComparator columnSort
RzPlatformTarget * arch_target
bool(* read_at)(struct rz_analysis_t *analysis, ut64 addr, ut8 *buf, int len)
struct rz_analysis_plugin_t * cur
struct rz_analysis_esil_t * esil
RzPlatformTargetIndex * platform_target
RzAnalysisILVM * il_vm
user-faced VM, NEVER use this for any analysis passes!
union rz_analysis_type_array_t::@244 value
union rz_analysis_type_ptr_t::@243 value
union rz_analysis_type_var_t::@242 value
RzAnalysisValueAccess access
RZ_BORROW RzAnalysis * analysis
analysis pertaining to this global variable
RzType * type
type of the variable
ut64 addr
address of the global variable
RBNode rb
RBTree node for address management.
char * name
name of the variable
Low-level VM to execute raw IL code.
type constrained by the type conditions
void on_exit(uv_process_t *req, int64_t exit_status, int term_signal)
RZ_API void rz_analysis_switch_op_free(RzAnalysisSwitchOp *swop)
RZ_API RzAnalysisSwitchOp * rz_analysis_switch_op_new(ut64 addr, ut64 min_val, ut64 max_val, ut64 def_val)
RZ_API RzAnalysisCaseOp * rz_analysis_switch_op_add_case(RzAnalysisSwitchOp *swop, ut64 addr, ut64 value, ut64 jump)
RZ_API void rz_parse_pdb_types(const RzTypeDB *typedb, const RzPdb *pdb)
Saves PDB types from TPI stream into the type database.
RZ_API bool rz_analysis_type_unlink(RzAnalysis *analysis, ut64 addr)
Removes the type link given the address.
RZ_API RZ_BORROW RzType * rz_analysis_type_link_at(RzAnalysis *analysis, ut64 addr)
Returns the RzType linked to the given address.
RZ_API bool rz_analysis_type_unlink_all(RzAnalysis *analysis)
Removes all type links.
RZ_API bool rz_analysis_type_link_exists(RzAnalysis *analysis, ut64 addr)
Checks if the RzType linked to the given address.
RZ_API RZ_OWN RzList * rz_analysis_type_links(RzAnalysis *analysis)
Returns the list of all linked types.
RZ_API RZ_OWN RzList * rz_analysis_type_links_by_offset(RzAnalysis *analysis, ut64 offset)
Returns the list of all structured types that are linked and have members matching the offset.
RZ_API RZ_OWN RzList * rz_analysis_type_paths_by_address(RzAnalysis *analysis, ut64 addr)
Returns the list of all type paths that are linked to some address and have suitable offset.
RZ_API bool rz_analysis_type_set_link(RzAnalysis *analysis, RZ_BORROW RzType *type, ut64 addr)
Links the given RzType to the address.
void error(const char *msg)
RZ_API RZ_OWN char * rz_analysis_function_autoname_var(RzAnalysisFunction *fcn, char kind, const char *pfx, int ptr)
RZ_API void rz_analysis_var_clear_accesses(RzAnalysisVar *var)
RZ_API void rz_analysis_extract_rarg(RzAnalysis *analysis, RzAnalysisOp *op, RzAnalysisFunction *fcn, int *reg_set, int *count)
RZ_API void rz_analysis_fcn_vars_cache_fini(RzAnalysisFcnVarsCache *cache)
RZ_API void rz_analysis_var_resolve_overlaps(RzAnalysisVar *var)
RZ_API void rz_analysis_function_delete_unused_vars(RzAnalysisFunction *fcn)
RZ_API RZ_BORROW RzAnalysisVar * rz_analysis_function_get_var(RzAnalysisFunction *fcn, char kind, int delta)
RZ_API void rz_analysis_function_delete_all_vars(RzAnalysisFunction *fcn)
RZ_API int rz_analysis_var_count(RzAnalysis *a, RzAnalysisFunction *fcn, int kind, int type)
RZ_API void rz_analysis_extract_vars(RzAnalysis *analysis, RzAnalysisFunction *fcn, RzAnalysisOp *op)
RZ_API ut64 rz_analysis_var_addr(RzAnalysisVar *var)
RZ_API void rz_analysis_var_set_access(RzAnalysisVar *var, const char *reg, ut64 access_addr, int access_type, st64 stackptr)
RZ_API bool rz_analysis_function_rebase_vars(RzAnalysis *a, RzAnalysisFunction *fcn)
RZ_API RzList * rz_analysis_var_list(RzAnalysis *a, RzAnalysisFunction *fcn, int kind)
RZ_API void rz_analysis_var_remove_access_at(RzAnalysisVar *var, ut64 address)
RZ_API char * rz_analysis_var_get_constraints_readable(RzAnalysisVar *var)
RZ_API void rz_analysis_function_delete_vars_by_kind(RzAnalysisFunction *fcn, RzAnalysisVarKind kind)
RZ_API RZ_BORROW RzPVector * rz_analysis_function_get_vars_used_at(RzAnalysisFunction *fcn, ut64 op_addr)
RZ_API RZ_BORROW RzAnalysisVar * rz_analysis_function_set_var(RzAnalysisFunction *fcn, int delta, char kind, RZ_BORROW RZ_NULLABLE const RzType *type, int size, bool isarg, RZ_NONNULL const char *name)
RZ_DEPRECATE RZ_API RzList * rz_analysis_var_all_list(RzAnalysis *analysis, RzAnalysisFunction *fcn)
RZ_API void rz_analysis_var_add_constraint(RzAnalysisVar *var, RZ_BORROW RzTypeConstraint *constraint)
RZ_API st64 rz_analysis_function_get_var_stackptr_at(RzAnalysisFunction *fcn, st64 delta, ut64 addr)
RZ_API char * rz_analysis_fcn_format_sig(RZ_NONNULL RzAnalysis *analysis, RZ_NONNULL RzAnalysisFunction *fcn, RZ_NULLABLE char *fcn_name, RZ_NULLABLE RzAnalysisFcnVarsCache *reuse_cache, RZ_NULLABLE const char *fcn_name_pre, RZ_NULLABLE const char *fcn_name_post)
RZ_API void rz_analysis_fcn_vars_add_types(RzAnalysis *analysis, RZ_NONNULL RzAnalysisFunction *fcn)
Updates the types database for function arguments.
RZ_API int rz_analysis_var_get_argnum(RzAnalysisVar *var)
RZ_API bool rz_analysis_var_rename(RzAnalysisVar *var, const char *new_name, bool verbose)
RZ_API RZ_BORROW RzAnalysisVar * rz_analysis_function_get_var_byname(RzAnalysisFunction *fcn, const char *name)
RZ_API void rz_analysis_var_delete(RzAnalysisVar *var)
RZ_API RzAnalysisVar * rz_analysis_var_get_dst_var(RzAnalysisVar *var)
RZ_API const char * rz_analysis_function_get_var_reg_at(RzAnalysisFunction *fcn, st64 delta, ut64 addr)
RZ_API RzAnalysisVarAccess * rz_analysis_var_get_access_at(RzAnalysisVar *var, ut64 addr)
RZ_API void rz_analysis_function_delete_var(RzAnalysisFunction *fcn, RzAnalysisVar *var)
RZ_API void rz_analysis_var_set_type(RzAnalysisVar *var, RZ_OWN RzType *type, bool resolve_overlaps)
RZ_API void rz_analysis_fcn_vars_cache_init(RzAnalysis *analysis, RzAnalysisFcnVarsCache *cache, RzAnalysisFunction *fcn)
RZ_DEPRECATE RZ_API RzList * rz_analysis_function_get_var_fields(RzAnalysisFunction *fcn, int kind)
RZ_DEPRECATE RZ_API RzAnalysisVar * rz_analysis_get_used_function_var(RzAnalysis *analysis, ut64 addr)
RZ_API RZ_OWN char * rz_analysis_var_global_get_constraints_readable(RzAnalysisVarGlobal *glob)
Get the pritable string of global variable constraints.
RZ_API void rz_analysis_var_global_set_type(RzAnalysisVarGlobal *glob, RZ_NONNULL RZ_BORROW RzType *type)
Set the type of the global variable.
RZ_API RZ_BORROW RzAnalysisVarGlobal * rz_analysis_var_global_get_byaddr_at(RzAnalysis *analysis, ut64 addr)
Get the instance of global variable at the address.
RZ_API RZ_OWN RzAnalysisVarGlobal * rz_analysis_var_global_new(RZ_NONNULL const char *name, ut64 addr)
Create a new instance of global variable.
RZ_API bool rz_analysis_var_global_delete_byaddr_at(RzAnalysis *analysis, ut64 addr)
Same as rz_analysis_var_global_delete_byname at the address.
RZ_API bool rz_analysis_var_global_delete(RZ_NONNULL RzAnalysis *analysis, RZ_NONNULL RzAnalysisVarGlobal *glob)
Delete and free the global variable.
RZ_API RZ_OWN RzList * rz_analysis_var_global_get_all(RzAnalysis *analysis)
Get all of the added global variables.
RZ_API RZ_BORROW RzAnalysisVarGlobal * rz_analysis_var_global_get_byname(RzAnalysis *analysis, RZ_NONNULL const char *name)
Get the instance of global variable by its name.
RZ_API void rz_analysis_var_global_free(RzAnalysisVarGlobal *glob)
Free the global variable instance.
RZ_API bool rz_analysis_var_global_delete_byname(RzAnalysis *analysis, RZ_NONNULL const char *name)
Delete and free the global variable by its name.
RZ_API bool rz_analysis_var_global_delete_byaddr_in(RzAnalysis *analysis, ut64 addr)
Same as rz_analysis_var_global_delete_byname in the address.
RZ_API RZ_OWN bool rz_analysis_var_global_add(RzAnalysis *analysis, RZ_NONNULL RzAnalysisVarGlobal *global_var)
Add the global variable into hashtable.
RZ_API RZ_NULLABLE RzFlagItem * rz_analysis_var_global_get_flag_item(RzAnalysisVarGlobal *glob)
Get the flag item corresponding to the given variable.
RZ_API RZ_BORROW RzAnalysisVarGlobal * rz_analysis_var_global_get_byaddr_in(RzAnalysis *analysis, ut64 addr)
Get the instance of global variable contains the address.
RZ_API bool rz_analysis_var_global_rename(RzAnalysis *analysis, RZ_NONNULL const char *old_name, RZ_NONNULL const char *newname)
Rename the global variable.
RZ_API void rz_analysis_var_global_add_constraint(RzAnalysisVarGlobal *glob, RzTypeConstraint *constraint)
Add a constaint to global variable.
RZ_API void rz_analysis_list_vtables(RzAnalysis *analysis, RzOutputMode mode)
RZ_API ut64 rz_analysis_vtable_info_get_size(RVTableContext *context, RVTableInfo *vtable)
RZ_API void rz_analysis_vtable_info_free(RVTableInfo *vtable)
RZ_API RVTableInfo * rz_analysis_vtable_parse_at(RVTableContext *context, ut64 addr)
RZ_API RzList * rz_analysis_vtable_search(RVTableContext *context)
RZ_API bool rz_analysis_vtable_begin(RzAnalysis *analysis, RVTableContext *context)
ut64(WINAPI *w32_GetEnabledXStateFeatures)()
static char * regname(int reg)
RZ_API RZ_OWN RzList * rz_analysis_xrefs_list(RzAnalysis *analysis)
Get list of all xrefs.
RZ_API RzList * rz_analysis_xref_list_new()
RZ_API RzList * rz_analysis_xrefs_get_from(RzAnalysis *analysis, ut64 addr)
RZ_API RzList * rz_analysis_xrefs_get_to(RzAnalysis *analysis, ut64 addr)
RZ_API RzList * rz_analysis_function_get_xrefs_to(RzAnalysisFunction *fcn)
RZ_API ut64 rz_analysis_xrefs_count(RzAnalysis *analysis)
RZ_API bool rz_analysis_xrefs_init(RzAnalysis *analysis)
RZ_API const char * rz_analysis_xrefs_type_tostring(RzAnalysisXRefType type)
RZ_API bool rz_analysis_xrefs_set(RzAnalysis *analysis, ut64 from, ut64 to, RzAnalysisXRefType type)
RZ_API bool rz_analysis_xrefs_deln(RzAnalysis *analysis, ut64 from, ut64 to, RzAnalysisXRefType type)
RZ_API bool rz_analysis_xref_del(RzAnalysis *analysis, ut64 from, ut64 to)
RZ_API RzList * rz_analysis_function_get_xrefs_from(RzAnalysisFunction *fcn)
RZ_API RzAnalysisXRefType rz_analysis_xrefs_type(char ch)