【发布时间】:2012-05-09 17:53:42
【问题描述】:
我需要帮助才能理解以下组装说明。在我看来,我正在调用 someUnknownValue += 20994A 的地址?
E8 32F6FFFF - call std::_Init_locks::operator=+20994A
【问题讨论】:
标签: assembly x86 disassembly
我需要帮助才能理解以下组装说明。在我看来,我正在调用 someUnknownValue += 20994A 的地址?
E8 32F6FFFF - call std::_Init_locks::operator=+20994A
【问题讨论】:
标签: assembly x86 disassembly
无论您使用什么来获得反汇编,都试图提供帮助,方法是将调用的目标作为它知道的某个符号的偏移量 - 但鉴于偏移量如此之大,它可能会感到困惑。
调用的实际目标可以计算如下:
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。【讨论】:
mov reg, imm64; call reg。
如果您使用反汇编程序分析 PE 文件,反汇编程序可能给您错误的代码。大多数恶意软件编写者使用插入 E8 作为反反汇编技术。您可以验证 E8 上面的代码是否是跳转指令,跳转位置在 E8 之后。
【讨论】: