我需要帮助理解以下汇编指令。在我看来,我正在调用一个地址,该地址的值为 someUnknownValue += 20994A?
E8 32F6FFFF - call std::_Init_locks::operator=+20994A
我需要帮助理解以下汇编指令。在我看来,我正在调用一个地址,该地址的值为 someUnknownValue += 20994A?
E8 32F6FFFF - call std::_Init_locks::operator=+20994A
你用来获取反汇编代码的工具试图通过给出调用目标作为从已知符号偏移的方式来提供帮助,但考虑到偏移量如此之大,它可能会感到困惑。
实际的调用目标可以按以下方式计算:
E8
是一个相对偏移的 call
命令。例如:
<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之后。