所以我最近一直在逆转一件恶意软件并且认为我可以使用一个条件断点,只要为特定的jz命令设置了零标志就会中断。我在网上和olly提供的帮助文件中阅读了文档,但是找不到我将如何做的任何示例。在在线文档中,它说EFL或Flags寄存器可用于监视/条件断点表达式,但没有提及如何引用它们。我尝试了一个简单的表达式,如ZF == 1以及ZF = 1(以防万一我错了)并且它没有用。我搜索谷歌像疯了似的没有,所以我希望有人找到一些方法来引用标志寄存器。对于那些想知道为什么我不使用没有标志注册表达式的表达式的人,我更加好奇如何在我真正需要的事件中引用标志寄存器。
提前致谢!
答案 0 :(得分:2)
AFAIK你不能打破EFLAGS的特定旗帜名称,但你可以从EFLAGS获得价值,所以你仍然有多种可能性:
注意:在Ollydbg v2.01上测试
1)打破EFLAGS的整个值(请注意,ollydbg条件语法的EFLAGS寄存器值为EFL
或FLAGS
)。
EFL==0x246
2)打破特定的旗帜
使用位位置作为掩码:
ZF示例(第6位设置为1为0x40):(EFL & 0x40)==0x40
按标志的位置移动标记,仅屏蔽它并测试它:
ZF(第6位)示例:(EFL >> 6) & 1==1