jmp 1f
push %eax
1:
movl $100, (%eax)
call __debugbreak
int3
ret
假设我们要在push%eax指令上放置一个断点。我们能做到吗 通过用调用debugbreak重写推%eax吗?上述方法有什么问题?为什么在这种情况下用int3重写是可行的?
答案 0 :(得分:2)
int3
是单字节指令(在这种情况下push
也是如此)。 call
不是。如果您用jmp
而不是call
覆盖push
,那么您call
将跳到int3
的“中间”。
但是,除非有一种方法可以到达push
(在跳转/调用之前没有标签),否则在push
上设置断点是没有用的,不是吗?