为什么 Ida 伪代码将测试翻译为 AND?

逆向工程 艾达 部件 x86 六线谱
2021-06-30 09:42:51

在 IDA 中反汇编 x86 EXE 文件时有一行

test byte ptr [ebp+XXX], cl

在此行cl的值为0x11

Hex-Rays 反编译器插件将其翻译为if (v10 &0x11).

为什么是test反编译之类的and

1个回答

test基本上是一条and指令,除了它不更新左操作数。另一方面,除了不更新左操作数外,它cmpsub指令等效

总结:

if (v & n)

编译为test指令。

if (v == n)

被编译为cmp指令(或test reg, regn 为 0x0)

v = a & n

编译为and指令。