我需要帮助才能理解以下汇编指令。在我看来,我在someUnknownValue + = 20994A调用地址?
E8 32F6FFFF - call std::_Init_locks::operator=+20994A
答案 0 :(得分:49)
无论你使用什么来获得反汇编,都试图通过将调用的目标作为它所知道的某个符号的偏移量来提供帮助 - 但是考虑到偏移是如此之大,它可能会混淆。
可以按如下方式计算呼叫的实际目标:
E8
是call
,具有相对偏移。e.g。
<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
。答案 1 :(得分:-2)
如果您使用反汇编程序分析PE文件,反汇编程序可能会给您错误的代码。大多数恶意软件编写者使用插入E8作为反拆卸技术。您可以验证E8以上的代码是否是跳转位置在E8之后的跳转指令。