我想对可执行文件进行逆向工程,并且在过程中我想由于 strcpy 函数而导致堆栈溢出。反汇编时,比较后有一个 jne,当为 false 时,代码继续执行退出函数,从而退出程序。如果为 true,则跳转并转到使用 strcpy 的自定义函数。我在想我必须操纵零标志以避免调用退出函数。我的想法正确吗?如果是,gdb 中有可以使用的技术吗?在此过程中感谢您
最佳答案
我认为这是关于 x86 的。您可以使用以下方法设置 EFLAGS 寄存器(其中包含 ZF):
(gdb) set $eflags = 0
这将清除所有实际可以清除的位,包括 ZF 位。如果您只想清除 ZF 标志,则可以使用其位值为 0x40 的事实:
(gdb) set $eflags = $eflags & ~0x40
info reg eflags
显示此类操作的效果。
关于x86 - 有没有办法在 gdb 中操作零标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54657389/