CALL <JMP.&KERNEL32.SetUnhandledExceptionFilter>
格式的说明我不是汇编专家。我知道CALL用于调用子例程,而JMP用于跳转到内存中的特定地址,但是将CALL与JMP一起使用会产生什么结果?有人可以澄清吗?即使是指向我可以找到答案的地方的指针也将很有帮助。谢谢。
#1 楼
看到形式为CALL <JMP.&KERNEL32.SetUnhandledExceptionFilter>
的调用,表明该二进制文件是使用Visual C ++的/ INCREMENTAL选项进行编译的,因此是跳转thunk的表。...增量链接的可执行文件(.exe)文件或动态链接库(DLL):
...
可能包含跳转thunk来处理将函数重定位到新地址。
...
#2 楼
没错,可以直接调用它,而不必在调用后跳转。但是,如果仅一次引用该API地址,则更容易,并且该单个引用应为
JMP
(否则会改变堆栈)。因此,仅通过一个
JMP
对该API就有一个内存引用。每次使用该API时,此JMP
都是CALL
-ed,因此透明地传输执行,并且在API末尾,调用方的原始地址仍在堆栈中,该调用方将被透明地返回。 />
评论
这是跳转表的组成部分吗?
–TheRookierLearner
2013年9月29日下午16:45