Assembly x86英特尔汇编中的尖括号

Assembly x86英特尔汇编中的尖括号,assembly,x86,intel,ollydbg,Assembly,X86,Intel,Ollydbg,我是汇编新手,正在阅读一本指南,其中介绍了一个取自Ollydbg的弹球函数示例。我试图理解大多数说明的作用,但以下几行让我完全困惑: 01017455 |. E8 249D0000 CALL <JMP.&msvcrt.??3@YAXPAX@Z> 01017455 |。E8 249D0000呼叫 在这方面,尖括号是什么意思?这个函数的名字有什么意义吗?名称中的“JMP.”也很混乱-它只是函数名的一部分,应该忽略吗?这似乎是对文件中静态链接的.LIB的调用。在Wind

我是汇编新手,正在阅读一本指南,其中介绍了一个取自Ollydbg的弹球函数示例。我试图理解大多数说明的作用,但以下几行让我完全困惑:

01017455  |. E8 249D0000    CALL <JMP.&msvcrt.??3@YAXPAX@Z>
01017455 |。E8 249D0000呼叫

在这方面,尖括号是什么意思?这个函数的名字有什么意义吗?名称中的“JMP.”也很混乱-它只是函数名的一部分,应该忽略吗?

这似乎是对文件中静态链接的
.LIB
的调用。在Windows上,API/库调用是通过在可执行文件的特殊部分调用
JMP
指令来实现的

比如说

CALL <JMP.&msvcrt.??3@YAXPAX@Z>
调用
将返回地址推送到堆栈,然后跳转到本节中的以下
JMP
指令。这个
JMP
不会修改返回地址-因此它实际上就像一个直接的
呼叫

简化:

curEIP:
  CALL <JMP.&msvcrt.??3@YAXPAX@Z>     ; pushes (curEIP+insLen) to the stack and JMPs to (some virtual label named) `msvcrt.??3` in this section named above
  ...
msvcrt.??3:
  JMP YAXPAX@Z                        ; JMPs to `YAXPAX@Z` - address of the real function in the statically linked LIB in memory
  ...
; after the CALL completes...
curEIP:
呼叫将(curEIP+insLen)推送到堆栈,将JMPs推送到(某个名为的虚拟标签)`msvcrt.??3`
...
msvcrt.??3:
JMPYAXPAX@Z                        ; JMPs至`YAXPAX@Z`-内存中静态链接库中实函数的地址
...
; 通话结束后。。。
…它返回先前推送到堆栈的返回值地址(初始EIP+指令长度字节)以继续执行

在这方面,尖括号是什么意思

它们只是向您展示上述计划相关数据的惯例

这个函数的名字有什么意义吗

对。见上文。括号之间的名称因调试器而异

名称中的“JMP.”也很混乱——它只是函数名的一部分,应该被忽略吗


这似乎是对文件中静态链接的
.LIB
的调用。在Windows上,API/库调用是通过在可执行文件的特殊部分调用
JMP
指令来实现的

比如说

CALL <JMP.&msvcrt.??3@YAXPAX@Z>
调用
将返回地址推送到堆栈,然后跳转到本节中的以下
JMP
指令。这个
JMP
不会修改返回地址-因此它实际上就像一个直接的
呼叫

简化:

curEIP:
  CALL <JMP.&msvcrt.??3@YAXPAX@Z>     ; pushes (curEIP+insLen) to the stack and JMPs to (some virtual label named) `msvcrt.??3` in this section named above
  ...
msvcrt.??3:
  JMP YAXPAX@Z                        ; JMPs to `YAXPAX@Z` - address of the real function in the statically linked LIB in memory
  ...
; after the CALL completes...
curEIP:
呼叫将(curEIP+insLen)推送到堆栈,将JMPs推送到(某个名为的虚拟标签)`msvcrt.??3`
...
msvcrt.??3:
JMPYAXPAX@Z                        ; JMPs至`YAXPAX@Z`-内存中静态链接库中实函数的地址
...
; 通话结束后。。。
…它返回先前推送到堆栈的返回值地址(初始EIP+指令长度字节)以继续执行

在这方面,尖括号是什么意思

它们只是向您展示上述计划相关数据的惯例

这个函数的名字有什么意义吗

对。见上文。括号之间的名称因调试器而异

名称中的“JMP.”也很混乱——它只是函数名的一部分,应该被忽略吗


尖括号用于Windows API调用


例如,如果我使用了Kernel32库中的函数,它将使用尖括号调用Kernel32。

尖括号用于Windows API调用

例如,若我使用了一个来自Kernel32库的函数,它会用尖括号调用Kernel32