debugging - 如何解释 OllyDbg 中的 EFL?

标签 debugging assembly ollydbg

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

什么是NONBENEBEANSPOGEG、...

示例:

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等等,但无法识别,例如其中任何一个都没有。

最佳答案

EFLFLAGS寄存器(扩展为包括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/

相关文章:

java - 为什么我的 Netbeans 调试器会进入注释代码行?

Javascript for 循环应该循环两次,为什么只循环一次?

c++ - 从函数结构成员获取函数地址

portable-executable - 当PE头中入口点地址为零时如何找到OEP?

c++ - 如何更改编译单元的版本?

debugging - 在 VS2017 中调试 Aurelia webpack typescript 应用程序

algorithm - 编辑我的 Easy68k(汇编)程序以减去而不是添加

macos - 插入64bit Intel OSX

java - 如何调试 jni dll

c++ - 将 unicode 字符串复制到剪贴板不起作用