gpt4 book ai didi

c++ - PE 文件中的跳转 stub

转载 作者:可可西里 更新时间:2023-11-01 13:51:28 27 4
gpt4 key购买 nike

最近反汇编了一个DLL(c/c++写的),发现代码段里面有很多“跳转 stub ”。这些 stub 除了跳转到 DLL 内部的函数外什么都不做。

例如:

jmp foo() 
jmp foo2()
...

为什么编译器 (Visual studio 2012) 在二进制文件中包含这些函数 stub ?

谢谢!

最佳答案

在所有 stub 之后是否有一大堆 0xCC 字节?如果是这样,您正在查看的代码是在启用增量链接的情况下编译的(调试版本的默认设置)。

在为增量链接进行编译时,编译器会为每个函数创建一个 stub ,并确保所有调用都通过 stub 进行。如果需要用更新的代码替换函数,可以在末尾添加新代码,只需要修补 jump thunk——所有现有调用都将重定向到新代码。额外的 CC 保留用于更多 stub ,以防添加新功能。

有关更多背景信息,see MSDN .

关于c++ - PE 文件中的跳转 stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16957813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com