2022-07-12 09:04:54 +02:00

61 lines
1.2 KiB
C

#ifndef _STATS_H
#define _STATS_H
#include "frida-gumjs.h"
typedef struct {
guint64 stats_time;
guint64 total;
guint64 call_imm;
guint64 call_reg;
guint64 call_mem;
guint64 excluded_call_reg;
guint64 ret_slow_path;
guint64 ret;
guint64 post_call_invoke;
guint64 excluded_call_imm;
guint64 jmp_imm;
guint64 jmp_reg;
guint64 jmp_mem;
guint64 jmp_cond_imm;
guint64 jmp_cond_mem;
guint64 jmp_cond_reg;
guint64 jmp_cond_jcxz;
guint64 jmp_cond_cc;
guint64 jmp_cond_cbz;
guint64 jmp_cond_cbnz;
guint64 jmp_cond_tbz;
guint64 jmp_cond_tbnz;
guint64 jmp_continuation;
} stats_t;
typedef struct {
/* transitions */
stats_t curr;
stats_t prev;
} stats_data_t;
#define GUM_TYPE_AFL_STALKER_STATS (gum_afl_stalker_stats_get_type())
G_DECLARE_FINAL_TYPE(GumAflStalkerStats, gum_afl_stalker_stats, GUM,
AFL_STALKER_STATS, GObject)
extern char *stats_filename;
extern guint64 stats_interval;
void stats_config(void);
void stats_init(void);
void stats_collect(const cs_insn *instr, gboolean begin);
void stats_print(char *format, ...);
void starts_arch_init(void);
void stats_collect_arch(const cs_insn *instr, gboolean begin);
void stats_write_arch(stats_data_t *data);
void stats_on_fork(void);
#endif