2

什么是以及如何使用 OllyDbg解释寄存器下的 EFL?

什么是NO, NB, E, NE, BE, A, NS, PO, GE, G, ...</p>

例子:

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,(灵感来自

            _---------------------------=>  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

帮助有以下说法:

EFL 之后是满足当前标志的条件命令的后缀。例如,如果您看到:

EFL 00000A86 (O,NB,NE,A,S,PE,GE,G),

这意味着将采用 JO 和 JNE,而不会采用 JB 和 JPO。


我怀疑CPU FlagsFLAGS register等,但无法识别NO其中任何一个。

4

1 回答 1

2

EFLFLAGS寄存器(扩展为包括EFLAGS),除其他外用于指示奇偶校验、溢出/进位、方向和分支流以及各种 CPU 模式。

Olly 通过分离出 EFL 之上的公共控制状态位的布尔值(名为“CPAZSTD O”的单数位)稍微扩展了寄存器。

EFL 值旁边括号中的缩写与在当前 EFLAGS 下可以/不能通过的内容相关,即:NO 代表 No-Overflow,切换 OF 位会将其切换为 O 以表示溢出。

于 2013-06-22T20:07:11.557 回答