aboutsummaryrefslogtreecommitdiff
path: root/frida_mode/src/stats
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2021-07-19 10:31:56 +0200
committerGitHub <noreply@github.com>2021-07-19 10:31:56 +0200
commit939729e504ea269dd6d7252c363b160e01d1be1a (patch)
tree808710139e53d9958cdb660d61680d48e64e8c3a /frida_mode/src/stats
parent458eb0813a6f7d63eed97f18696bca8274533123 (diff)
parent18fd97fc5ffc5ad94e735cfbfa0d500463dcb585 (diff)
downloadafl++-939729e504ea269dd6d7252c363b160e01d1be1a.tar.gz
Merge pull request #1023 from AFLplusplus/dev
push to stable
Diffstat (limited to 'frida_mode/src/stats')
-rw-r--r--frida_mode/src/stats/stats.c6
-rw-r--r--frida_mode/src/stats/stats_x64.c18
2 files changed, 21 insertions, 3 deletions
diff --git a/frida_mode/src/stats/stats.c b/frida_mode/src/stats/stats.c
index 0dd8be70..91a58741 100644
--- a/frida_mode/src/stats/stats.c
+++ b/frida_mode/src/stats/stats.c
@@ -178,10 +178,12 @@ void stats_write(void) {
}
-static void stats_maybe_write(void) {
+void stats_on_fork(void) {
guint64 current_time;
+ if (stats_filename == NULL) { return; }
+
if (stats_interval == 0) { return; }
current_time = g_get_monotonic_time();
@@ -208,7 +210,5 @@ void stats_collect(const cs_insn *instr, gboolean begin) {
stats_collect_arch(instr);
- stats_maybe_write();
-
}
diff --git a/frida_mode/src/stats/stats_x64.c b/frida_mode/src/stats/stats_x64.c
index 7c3a90d7..11464a2a 100644
--- a/frida_mode/src/stats/stats_x64.c
+++ b/frida_mode/src/stats/stats_x64.c
@@ -31,6 +31,9 @@ typedef struct {
guint64 num_rip_relative;
+ guint64 num_rip_relative_type[X86_INS_ENDING];
+ char name_rip_relative_type[X86_INS_ENDING][CS_MNEMONIC_SIZE];
+
} stats_data_arch_t;
gboolean stats_is_supported_arch(void) {
@@ -136,6 +139,18 @@ void stats_write_arch(void) {
stats_data_arch->num_rip_relative,
(stats_data_arch->num_rip_relative * 100 / num_instructions));
+ for (size_t i = 0; i < X86_INS_ENDING; i++) {
+
+ if (stats_data_arch->num_rip_relative_type[i] != 0) {
+
+ stats_print(" %10d %s\n",
+ stats_data_arch->num_rip_relative_type[i],
+ stats_data_arch->name_rip_relative_type[i]);
+
+ }
+
+ }
+
stats_print("\n");
stats_print("\n");
@@ -256,6 +271,9 @@ static void stats_collect_rip_relative_arch(const cs_insn *instr) {
if (rm != 5) { return; }
stats_data_arch->num_rip_relative++;
+ stats_data_arch->num_rip_relative_type[instr->id]++;
+ memcpy(stats_data_arch->name_rip_relative_type[instr->id], instr->mnemonic,
+ CS_MNEMONIC_SIZE);
}