首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助理解E8 asm call instruction x86

需要帮助理解E8 asm call instruction x86
EN

Stack Overflow用户
提问于 2012-04-30 07:04:56
回答 2查看 14.3K关注 0票数 17

我需要帮助才能理解下面的汇编说明。我好像在呼叫someUnknownValue += 20994A的地址?

代码语言:javascript
复制
E8 32F6FFFF - call std::_Init_locks::operator=+20994A
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-30 07:31:41

无论您使用什么来获得反汇编,都试图通过将调用的目标作为它所知道的某个符号的偏移量来提供帮助--但是考虑到偏移量如此之大,它可能会感到困惑。

调用的实际目标可以计算如下:

  • E8是具有相对偏移量的偏移量。
  • 在32位代码段中,偏移量被指定为有符号的32位值。
  • 此值采用小端字节顺序。
  • 偏移量是从以下instruction.

的地址开始测量的

例如:

代码语言:javascript
复制
<some address>       E8 32 F6 FF FF         call <somewhere>
<some address>+5     (next instruction)

下一条指令是<some address> + 5.

  • So,调用的目标地址是<some address> + 5 - 0x9CE.

  • 的偏移量是一个带符号的32位值,this is call指令是<some address>,长度是5字节长
票数 59
EN

Stack Overflow用户

发布于 2013-07-13 14:25:01

如果您使用反汇编程序分析PE文件,则反汇编程序可能给您提供了错误的代码。大多数恶意软件编写器使用插入E8作为反汇编技术。您可以验证E8上面的代码是否是跳转位置在E8之后的跳转指令。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10376787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档