diff --git a/subhook.h b/subhook.h index 03d9b5f..61e363f 100644 --- a/subhook.h +++ b/subhook.h @@ -124,6 +124,12 @@ SUBHOOK_EXPORT int SUBHOOK_API subhook_remove(subhook_t hook); */ SUBHOOK_EXPORT void *SUBHOOK_API subhook_read_dst(void *src); +/* + * Returns the length of the first instruction in src. You can replace it with + * a custom function via subhook_set_disasm_handler. + */ +SUBHOOK_EXPORT int SUBHOOK_API subhook_disasm(void *src, int *reloc_op_offset); + /* * Sets a custom disassmbler function to use in place of the default one * (subhook_disasm). diff --git a/subhook_x86.c b/subhook_x86.c index 7c36b82..95c1f24 100644 --- a/subhook_x86.c +++ b/subhook_x86.c @@ -88,7 +88,7 @@ struct subhook_jmp64 { extern subhook_disasm_handler_t subhook_disasm_handler; -static int subhook_disasm(void *src, int *reloc_op_offset) { +SUBHOOK_EXPORT int SUBHOOK_API subhook_disasm(void *src, int *reloc_op_offset) { enum flags { MODRM = 1, PLUS_R = 1 << 1,