diff options
author | Zeex <zeex@rocketmail.com> | 2014-10-04 17:33:01 +0700 |
---|---|---|
committer | Zeex <zeex@rocketmail.com> | 2014-10-04 17:38:10 +0700 |
commit | 9e84a215c19ee2d632af0aca642af8aa6779d00c (patch) | |
tree | f6979c6abaa8b5cc2f646fca6b2fe8830c18be19 /subhook_x86.c | |
parent | 6f864d4877f0b864e3f9b9144e6778e2f5406149 (diff) | |
download | subhook-9e84a215c19ee2d632af0aca642af8aa6779d00c.zip subhook-9e84a215c19ee2d632af0aca642af8aa6779d00c.tar.gz subhook-9e84a215c19ee2d632af0aca642af8aa6779d00c.tar.bz2 |
Small refactoring & cleanup
Diffstat (limited to 'subhook_x86.c')
-rw-r--r-- | subhook_x86.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/subhook_x86.c b/subhook_x86.c index 18ba6c5..a8d9a43 100644 --- a/subhook_x86.c +++ b/subhook_x86.c @@ -72,15 +72,21 @@ SUBHOOK_EXPORT int SUBHOOK_API subhook_install(subhook_t hook) { return -EINVAL; if (!hook->unlocked) { - subhook_unprotect(hook->src, sizeof(jmp_instr)); - hook->unlocked = 1; + subhook_unlock(hook->src, sizeof(jmp_instr)); + hook->unlocked = 1; } - memcpy(((struct subhook_x86 *)hook)->code, hook->src, sizeof(jmp_instr)); - memcpy(hook->src, &jmp_instr, sizeof(jmp_instr)); + memcpy(((struct subhook_x86 *)hook)->code, + hook->src, + sizeof(jmp_instr)); + memcpy(hook->src, + &jmp_instr, + sizeof(jmp_instr)); - offset = (intptr_t)hook->dst - ((intptr_t)hook->src + sizeof(jmp_instr)); - memcpy((void *)((intptr_t)hook->src + sizeof(jmp_opcode)), &offset, + offset = (intptr_t)hook->dst - ( + (intptr_t)hook->src + sizeof(jmp_instr)); + memcpy((void *)((intptr_t)hook->src + sizeof(jmp_opcode)), + &offset, sizeof(jmp_instr) - sizeof(jmp_opcode)); hook->installed = 1; @@ -91,7 +97,8 @@ SUBHOOK_EXPORT int SUBHOOK_API subhook_remove(subhook_t hook) { if (!hook->installed) return -EINVAL; - memcpy(hook->src, ((struct subhook_x86 *)hook)->code, + memcpy(hook->src, + ((struct subhook_x86 *)hook)->code, sizeof(jmp_instr)); hook->installed = 0; @@ -106,7 +113,8 @@ SUBHOOK_EXPORT void *SUBHOOK_API subhook_read_dst(void *src) { if (opcode != jmp_opcode) return NULL; - memcpy(&offset, (void *)((intptr_t)src + sizeof(jmp_opcode)), + memcpy(&offset, + (void *)((intptr_t)src + sizeof(jmp_opcode)), sizeof(offset)); return (void *)(offset + (intptr_t)src + sizeof(jmp_instr)); } |