我需要帮助才能理解以下组装说明。在我看来,我正在调用 someUnknownValue += 20994A 的地址?
E8 32F6FFFF - call std::_Init_locks::operator=+20994A
我需要帮助才能理解以下组装说明。在我看来,我正在调用 someUnknownValue += 20994A 的地址?
E8 32F6FFFF - call std::_Init_locks::operator=+20994A
无论您使用什么来获得反汇编,都试图提供帮助,方法是将调用的目标作为它知道的某个符号的偏移量 - 但鉴于偏移量如此之大,它可能会感到困惑。
调用的实际目标可以计算如下:
E8
是call
具有相对偏移量的 a。例如
<some address> E8 32 F6 FF FF call <somewhere>
<some address>+5 (next instruction)
0xFFFFF632
。-0x9CE
.call
指令为<some address>
5 个字节长;下一条指令是在<some address> + 5
。<some address> + 5 - 0x9CE
。如果您使用反汇编程序分析 PE 文件,反汇编程序可能给您错误的代码。大多数恶意软件编写者使用插入 E8 作为反反汇编技术。您可以验证 E8 上面的代码是否是跳转指令,跳转位置在 E8 之后。