我想对可执行文件进行逆向工程,并且由于strcpy函数,我希望在堆栈溢出过程中。当反汇编时,比较后有一个jne,什么时候是假代码继续退出函数,结果退出程序。如果是真的它会跳转到自定义函数,使用strcpy。我在想我必须操纵零标志,以避免调用退出函数。我的想法是正确的,如果有的话,在gdb中有一个技术可以使用吗?谢谢你的过程
我假设这是关于x86。您可以使用以下方法设置EFLAGS寄存器(包含ZF):
(gdb) set $eflags = 0
这将清除所有可以实际清除的位,包括ZF位。如果您只想清除ZF标志,可以使用其位为0x40的事实:
(gdb) set $eflags = $eflags & ~0x40
info reg eflags
展示了这种操纵的效果。