有没有办法在gdb中维护零标志?

时间:2019-02-12 19:28:36

标签: x86 gdb reverse-engineering

我想对可执行文件进行反向工程,并且由于strcpy函数,在处理过程中我要引起堆栈溢出。当在比较之后反汇编时出现一个jne,当false时,代码会继续执行退出函数并最终退出程序。如果为true,它将跳转并转到使用strcpy的自定义函数。我必须操纵零标志来避免调用退出函数。我的想法是否正确,如果可以,是否在gdb中使用一种技术?谢谢您在此过程中

1 个答案:

答案 0 :(得分:3)

我认为这大约是x86。您可以使用以下方法设置EFLAGS寄存器(包含ZF):

(gdb) set $eflags = 0

这将清除所有实际可以清除的位,包括ZF位。如果只想清除ZF标志,则可以使用其位的值为0x40的事实:

(gdb) set $eflags = $eflags & ~0x40

info reg eflags显示了这种操作的效果。