From e90ab70190014e7b91c7fd7dcb5ffd033c79fe72 Mon Sep 17 00:00:00 2001 From: Romain Malmain Date: Mon, 3 Jun 2024 09:31:11 +0200 Subject: [PATCH 1/2] rename instruction hooks --- accel/tcg/translator.c | 2 +- libafl/hook.c | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c index d4969d3b91..22370e6ce3 100644 --- a/accel/tcg/translator.c +++ b/accel/tcg/translator.c @@ -168,7 +168,7 @@ void translator_loop(CPUState *cpu, TranslationBlock *tb, int *max_insns, //// --- Begin LibAFL code --- - struct libafl_hook* hk = libafl_search_hook(db->pc_next); + struct libafl_hook* hk = libafl_search_instruction_hook(db->pc_next); if (hk) { TCGv_i64 tmp0 = tcg_constant_i64(hk->data); #if TARGET_LONG_BITS == 32 diff --git a/libafl/hook.c b/libafl/hook.c index 5eba45ee04..a8df7f58a3 100644 --- a/libafl/hook.c +++ b/libafl/hook.c @@ -13,11 +13,11 @@ target_ulong libafl_gen_cur_pc; -struct libafl_hook* libafl_qemu_hooks[LIBAFL_TABLES_SIZE]; +struct libafl_hook* libafl_qemu_instruction_hooks[LIBAFL_TABLES_SIZE]; size_t libafl_qemu_hooks_num = 0; -size_t libafl_qemu_set_hook(target_ulong pc, void (*callback)(uint64_t data, target_ulong pc), - uint64_t data, int invalidate) +size_t libafl_qemu_add_instruction_hooks(target_ulong pc, void (*callback)(uint64_t data, target_ulong pc), + uint64_t data, int invalidate) { CPUState *cpu; @@ -39,18 +39,18 @@ size_t libafl_qemu_set_hook(target_ulong pc, void (*callback)(uint64_t data, tar hk->helper_info.typemask = dh_typemask(void, 0) | dh_typemask(i64, 1) | dh_typemask(tl, 2); // TODO check for overflow hk->num = libafl_qemu_hooks_num++; - hk->next = libafl_qemu_hooks[idx]; - libafl_qemu_hooks[idx] = hk; + hk->next = libafl_qemu_instruction_hooks[idx]; + libafl_qemu_instruction_hooks[idx] = hk; return hk->num; } -size_t libafl_qemu_remove_hooks_at(target_ulong addr, int invalidate) +size_t libafl_qemu_remove_instruction_hooks_at(target_ulong addr, int invalidate) { CPUState *cpu; size_t r = 0; size_t idx = LIBAFL_TABLES_HASH(addr); - struct libafl_hook** hk = &libafl_qemu_hooks[idx]; + struct libafl_hook** hk = &libafl_qemu_instruction_hooks[idx]; while (*hk) { if ((*hk)->addr == addr) { if (invalidate) { @@ -70,13 +70,13 @@ size_t libafl_qemu_remove_hooks_at(target_ulong addr, int invalidate) return r; } -int libafl_qemu_remove_hook(size_t num, int invalidate) +int libafl_qemu_remove_instruction_hook(size_t num, int invalidate) { CPUState *cpu; size_t idx; for (idx = 0; idx < LIBAFL_TABLES_SIZE; ++idx) { - struct libafl_hook** hk = &libafl_qemu_hooks[idx]; + struct libafl_hook** hk = &libafl_qemu_instruction_hooks[idx]; while (*hk) { if ((*hk)->num == num) { if (invalidate) { @@ -97,11 +97,11 @@ int libafl_qemu_remove_hook(size_t num, int invalidate) return 0; } -struct libafl_hook* libafl_search_hook(target_ulong addr) +struct libafl_hook* libafl_search_instruction_hook(target_ulong addr) { size_t idx = LIBAFL_TABLES_HASH(addr); - struct libafl_hook* hk = libafl_qemu_hooks[idx]; + struct libafl_hook* hk = libafl_qemu_instruction_hooks[idx]; while (hk) { if (hk->addr == addr) { return hk; From 40179fd10818dc0a9f737791f92642da44358df7 Mon Sep 17 00:00:00 2001 From: Romain Malmain Date: Mon, 3 Jun 2024 09:32:18 +0200 Subject: [PATCH 2/2] forgot h file --- include/libafl/hook.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/libafl/hook.h b/include/libafl/hook.h index 453d85cc73..dd0bde09ab 100644 --- a/include/libafl/hook.h +++ b/include/libafl/hook.h @@ -31,14 +31,14 @@ struct libafl_hook { struct libafl_hook* next; }; -extern struct libafl_hook* libafl_qemu_hooks[LIBAFL_TABLES_SIZE]; +extern struct libafl_hook* libafl_qemu_instruction_hooks[LIBAFL_TABLES_SIZE]; extern size_t libafl_qemu_hooks_num; -size_t libafl_qemu_set_hook(target_ulong pc, void (*callback)(uint64_t data, target_ulong pc), - uint64_t data, int invalidate); -size_t libafl_qemu_remove_hooks_at(target_ulong addr, int invalidate); -int libafl_qemu_remove_hook(size_t num, int invalidate); -struct libafl_hook* libafl_search_hook(target_ulong addr); +size_t libafl_qemu_add_instruction_hooks(target_ulong pc, void (*callback)(uint64_t data, target_ulong pc), + uint64_t data, int invalidate); +size_t libafl_qemu_remove_instruction_hooks_at(target_ulong addr, int invalidate); +int libafl_qemu_remove_instruction_hook(size_t num, int invalidate); +struct libafl_hook* libafl_search_instruction_hook(target_ulong addr); struct libafl_backdoor_hook { void (*exec)(uint64_t data, CPUArchState* cpu, target_ulong pc);