LEA 组装说明

逆向工程 拆卸 部件 x86
2021-07-04 07:58:19

我正在阅读“实用恶意软件分析”一书,并阅读了第 74 页,其中说:

lea ebx, [eax*4+4]ebx = (eax+1)* 5 where eaxis a number的功能等价物

由于我的理解,lea ebx, [eax*4 + 4]应该乘以eax4的值,加上4,然后将其存回ebx,这比不同(eax+1) * 5

这是一个错字吗?还是我做错了?

我觉得应该是: ebx = (eax+1) * 4

1个回答

这是一个错字。指令lea ebx,[eax*4+4]将设置ebx4*eax+44*(eax+1)

我相信我在网上找到了该书的修订版,其中包含:

例如,经常看到像lea ebx, [eax*5+5]这样的指令,其中eax是一个数字,而不是一个内存地址。该指令的功能等效于 ebx = (eax+1)*5, ...

所以它似乎在某个时候得到了纠正。请注意,从技术上讲,lea ebx, [eax*5+5]它实际上是作为lea ebx, [eax*4+eax+5].