8 ESIL conditionals can be used
to detect
when a specific address is
9 accessed, or
a register. Those esil conditionals must be evaluated
10 every iteration
to ensure the
register values are updated. Think
11 in DebugESIL as software-watchpoints.
18 #expression can be a number or a range(if..is found)
19 #The <=, >=, ==, <, > comparisons are also supported
35 #define EWPS esil_watchpoints
36 #define ESIL dbg->analysis->esil
43 char *
p = strstr(
e,
"..");
138 char *
p = strstr(
s, sep);
159 #define CURVAL 0){} \
160 rz_str_trim(s);if (!strcmp(regname,s) && regval
314 return rz_list_empty(
EWPS);
const lzma_allocator const uint8_t * in
static RzNumCalcValue expr(RzNum *, RzNumCalc *, int)
RZ_API void rz_cons_break_pop(void)
RZ_API void rz_cons_break_push(RzConsBreak cb, void *user)
RZ_API bool rz_cons_is_breaked(void)
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 int esilbreak_mem_write(RzAnalysisEsil *esil, ut64 addr, const ut8 *buf, int len)
RZ_API ut64 rz_debug_esil_continue(RzDebug *dbg)
RZ_API ut64 rz_debug_esil_step(RzDebug *dbg, ut32 count)
RZ_API int rz_debug_esil_stepi(RzDebug *d)
static int exprmatch(RzDebug *dbg, ut64 addr, const char *expr)
RZ_API void rz_debug_esil_prestep(RzDebug *d, int p)
static int exprmatchreg(RzDebug *dbg, const char *regname, const char *expr)
static int esilbreak_reg_write(RzAnalysisEsil *esil, const char *regname, ut64 *num)
static int exprtoken(RzDebug *dbg, char *s, const char *sep, char **o)
RZ_API void rz_debug_esil_watch_list(RzDebug *dbg)
static int esilbreak_mem_read(RzAnalysisEsil *esil, ut64 addr, ut8 *buf, int len)
static int esilbreak_reg_read(RzAnalysisEsil *esil, const char *regname, ut64 *num, int *size)
static int esilbreak_check_pc(RzDebug *dbg, ut64 pc)
static void ewps_free(EsilBreak *ew)
RZ_API int rz_debug_esil_watch_empty(RzDebug *dbg)
RzList * esil_watchpoints
RZ_API void rz_debug_esil_watch_reset(RzDebug *dbg)
RZ_API void rz_debug_esil_watch(RzDebug *dbg, int rwx, int dev, const char *expr)
RZ_API ut64 rz_debug_reg_get(RzDebug *dbg, const char *name)
RZ_API int rz_debug_reg_sync(RzDebug *dbg, int type, int write)
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 bool rz_analysis_esil_set_pc(RzAnalysisEsil *esil, ut64 addr)
RZ_API bool rz_analysis_esil_parse(RzAnalysisEsil *esil, const char *str)
RZ_API void Ht_() free(HtName_(Ht) *ht)
RZ_API int rz_debug_step(RzDebug *dbg, int steps)
RZ_API RZ_OWN RzList * rz_list_new(void)
Returns a new initialized RzList pointer (free method is not initialized)
RZ_API RZ_BORROW RzListIter * rz_list_append(RZ_NONNULL RzList *list, void *data)
Appends at the end of the list a new element.
RZ_API void rz_list_free(RZ_NONNULL RzList *list)
Empties the list and frees the list pointer.
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
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 dev
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
RZ_API int rz_analysis_op(RzAnalysis *analysis, RzAnalysisOp *op, ut64 addr, const ut8 *data, int len, RzAnalysisOpMask mask)
@ RZ_ANALYSIS_OP_MASK_ESIL
void(* RzListFree)(void *ptr)
RZ_API ut64 rz_num_math(RzNum *num, const char *str)
RZ_API const char * rz_str_rwx_i(int rwx)
RZ_API void rz_str_trim(RZ_NONNULL RZ_INOUT char *str)
Removes whitespace characters (space, tab, newline etc.) from the beginning and end of a string.
#define RZ_STRBUF_SAFEGET(sb)
static struct sockaddr static addrlen static backlog const void static flags void struct sockaddr socklen_t static fromlen const void const struct sockaddr to
char * name[RZ_REG_NAME_LAST]
ut64(WINAPI *w32_GetEnabledXStateFeatures)()
static char * regname(int reg)
static unsigned char * obuf
int read(izstream &zs, T *x, Items items)