░▒▓████████████████████████████████▓▒░ ░▒▓█ ▓▒░ ░▒▓█ ~ S W A M P ~ ▓▒░ ░▒▓█ ▓▒░ ░▒▓████████████████████████████████▓▒░
pplmvsvm
LOCATION:
/usr/src/microsoft-dependency-agent-9.10.16/src/common/arch/x86
☗ ROOT
↻ REFRESH
✎ CARVE FLESH
EDITING: hooking.c
#include "../../osapi.h" #include "../../supertramp.h" #include "../../debug.h" ///////////////////////////////////////////////////////////////////// // Hooking techniques // Function pointers // Function descriptors (POWER only) ///////////////////////////////////////////////////////////////////// int hook_function_pointer(trampoline_t* tramp) { // Intercept address is a function pointer tramp->original_funcptr = *(void**)tramp->intercept_addr; if (force_atomic_exchange(tramp->intercept_addr, (unsigned long)tramp->trampoline_vaddr, (unsigned long)tramp->original_funcptr) != 0) { err_msg("Hook funcptr failure at %p\n", tramp->intercept_addr); tramp->original_funcptr = NULL; return ERR_HOOK_FAILURE; } else { dbg_msg("Hook funcptr at %p: (%p) to (%p)\n", tramp->intercept_addr, tramp->original_funcptr, tramp->trampoline_vaddr); return SUPERTRAMP_OK; } } int unhook_function_pointer(trampoline_t* tramp) { if (force_atomic_exchange(tramp->intercept_addr, (unsigned long)tramp->original_funcptr, (unsigned long)tramp->trampoline_vaddr) != 0) { info_msg("Unhook trampoline[%d] @ %p failed. Expected=%lx Actual=%lx\n", tramp->id, tramp->intercept_addr, (unsigned long)tramp->trampoline_vaddr, *(unsigned long*)tramp->intercept_addr); return ERR_UNHOOK_FAILURE; } return SUPERTRAMP_OK; } int hook_function_descriptor(trampoline_t* tramp) { return ERR_HOOK_FAILURE; } int unhook_function_descriptor(trampoline_t* tramp) { return ERR_HOOK_FAILURE; }
CANCEL
Name
Type
Size
Modified
Actions
↩ ..
DIR
—
—
📄 asm_utils.h
H
849 B
2023-06-26 03:19
EDIT
📄 hooking.c
C
1.5 KB
2023-06-26 03:19
EDIT