使用OllyDbg解释寄存器下的EFL是什么以及怎么解释?
什么是NO
,NB
,E
,NE
,BE
,A
,NS
,{{1 }},PO
,GE
,...
示例:
G
我徒劳无功的解读:
EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)
操作:
00000246 => 0000 ... 0010 0100 0110
NO NB E BE NS PE GE LE
0 0 0 0 0 1 1 1 <- I do not know if this is correct.
(Likely not.)
结果:
AND ESI,7FFFFFFF
我的ASCII,(灵感by):
EFL 00000202 (NO,NB,NE,A,NS,PO,GE,G)
帮助有如下说法:
以下EFL是满足条件命令的后缀 目前的旗帜。例如,如果您看到:
EFL 00000A86(O,NB,NE,A,S,PE,GE,G),
这意味着将采用JO和JNE而JB和JPO不会。
我怀疑CPU Flags,FLAGS register等,但无法识别,例如其中任何一个 _---------------------------=> E -> NE
/ _----------------------=> BE -> A
| / _------------=> PE -> PO
| | / _--=> LE -> G
| | | /
| | | |
NO NB NE A NS PO GE G
0000 0000 0000 0000 0000 0010 0100 0110
0 0 0 0 0 1 1 1
。
答案 0 :(得分:1)
EFL
是FLAGS寄存器(扩展为包含EFLAGS
),用于指示奇偶校验,溢出/进位,方向和分支流以及各种CPU模式。
Olly略微扩展寄存器,将公共控制状态位分离出EOL(名为'C P A Z S T D O'的奇异位)。
EFL值旁边的括号中的缩写与当前EFLAGS下可以/不能传递的相关,即:NO代表No-Overflow,切换OF位会将其切换为O以进行溢出。