什么是以及如何使用 OllyDbg 解释寄存器下的 EFL?
什么是NO
、NB
、E
、NE
、BE
、 A
、NS
、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
结果:
EFL 00000202 (NO,NB,NE,A,NS,PO,GE,G)
我的 ASCII,(灵感 by ):
_---------------------------=> 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
帮助有以下内容:
Following EFL are the suffixes of conditional commands that satisfy current flags. If, for example, you see:
EFL 00000A86 (O,NB,NE,A,S,PE,GE,G),
this means that JO and JNE will be taken whereas JB and JPO not.
我怀疑CPU Flags , FLAGS register等等,但无法识别,例如其中任何一个都没有。
最佳答案
EFL
是 FLAGS寄存器(扩展为包括EFLAGS
),用于指示奇偶校验、溢出/进位、方向和分支流以及各种 CPU 模式。
Olly 通过分离出 EFL 之上公共(public)控制状态位的 bool 值(名为“C P A Z S T D O”的单数位)来稍微扩展寄存器。
EFL 值旁边括号中的缩写与当前 EFLAGS 下可以/不能通过的内容相关,即:NO 代表无溢出,切换 OF 位会将其切换为 O 表示溢出。
关于debugging - 如何解释 OllyDbg 中的 EFL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17254634/