gpt4 book ai didi

windows - 为什么PE需要Original First Thunk(OFT)?

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

有“First Thunk”(FT),加载程序在执行后用正确的地址覆盖它。

但是PE什么时候用OFT呢?

PE 还需要它吗?

最佳答案

如果导入已绑定(bind)但导入的 .DLL 不匹配,则需要原始的第一个 thunk。

在新的未打补丁版本的 Windows 上,基础 .DLL(ntdll、kernel32、user32 等)中所有函数的所有地址都是已知的。以shell32为例,它链接到kernel32!CreateProcessCreateProcess的真实地址可以直接存储在shell32中。这称为 import binding,它让加载器跳过查找导入函数的所有地址的步骤。

如果导入的 .DLL 没有加载到它的首选地址,或者 .DLL 已经更改(安全更新等),这将不起作用。如果发生这种情况,则加载程序必须“以正常方式”查找函数,并且必须使用原始的第一个 thunk 数组,因为这是存储函数名称的 RVA 的唯一位置。

如果不使用导入绑定(bind),那么原始的第一个 thunk 数组是可选的,可能不存在。

ASLR 可能使此优化变得无关紧要。

关于windows - 为什么PE需要Original First Thunk(OFT)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42413937/

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