jmpews / Dobby

a lightweight, multi-platform, multi-architecture hook framework.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

x86架构中hook函数崩溃

lbwengineer opened this issue · comments

函数反汇编代码如下:
LOAD:0601D698 push ebx
LOAD:0601D699 push esi
LOAD:0601D69A push eax
LOAD:0601D69B call $+5
LOAD:0601D6A0 pop ebx
LOAD:0601D6A1 add ebx, (offset qword_9B277AC - offset loc_601D6A0)
LOAD:0601D6A7 mov esi, [esp+0Ch+arg_0]
dobby里,一个jmp指令占5个字节,所以call $+5指令被覆盖了,然后保存的时候转换指令错误。
call $+5和pop ebx这两行指令应该作为一起使用的目的是为了获取0601D6A0这个地址,然后用这个地址获取相对偏移量的常量,dobby只是简单的转换了call $+5这行指令但是没有结合pop ebx的意义一起考虑,导致获取到的ebx值不正确

我非常想吐槽一下,dobby用来做inline hook实在是有点多问题,我的一个线上项目使用了dobby的DobbyHook经常出现莫名其妙的卡死问题,还定位不到问题