C++ mid-function hook: get register values and jump back [x86 assembly on windows] -
there int value in register ebp
, string in ebx
. need values these registers in own function, operations on them , jump code below.
i jmp
@ 0x46aa17
function called jmphook
.
void jmphook() { char *mystring; _asm mov mystring, ebx printf("value: %s", mystring); _asm { jmp [0x46aa87] } }
as can see, trying move string @ ebx
mystring
, @ end jump 0x46aa87
located lines below jmp jmphook
.
printf
being called , mystring being output seems untidy in ollydbg. unable ebp
it's being overwritten @ beginning of jmphook
(saw in ollydbg). jmp
@ end of jmphook
not work:
so question how jump own function, save 2 registers there in variables , after operations jump original code.
thank you!
you can value of last ebp stack.
it first value pushed on stack when call function. if not mistaken @ [ebp].
as jump, can make instead of jumping hook, call it? after function returns code continue next address.
the reason getting error because never reach end of function. function contains prologue , epilogue, stack pointers saved , retrieved.
prologue:
push ebp mov ebp, esp
epilogue:
pop ebp
since never reach end of function, pop not called, , stack corrupted.
the error getting jump because jumping location pointed memory in address 0x46aa87. wanted jump address, brackets unnecessary.
Comments
Post a Comment