首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么体育需要原始的第一堂(OFT)?

为什么体育需要原始的第一堂(OFT)?
EN

Stack Overflow用户
提问于 2017-02-23 11:04:35
回答 3查看 4.6K关注 0票数 8

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

但是当PE使用OFT的时候?

体育需要它吗?

EN

Stack Overflow用户

发布于 2018-06-05 09:17:40

让我在这里为你总结很多事情。例如,当您加载一个库,然后尝试从类似于Milad.dll的库调用一个函数时,windows操作系统的动态加载程序必须解析MPrint函数的地址,然后调用它。操作系统如何解析该函数的地址?

窗户经过一些非常复杂的东西,我想用简单的舌头告诉你这些步骤。windows OS中解析DLL中函数地址的动态加载程序必须检查Import (INT)、(IOT)和Import (IAT)表。这些表由AddressOfNames、AddressOfNamesOrdinal和AddressOfFunction成员在导出目录中指向PE结构.

操作系统在目标进程的地址空间中加载Milad.dll后,利用LoadLibrary在进程的目标地址空间中填充INT、IOT和IAT表,并进行计算。

流程结构中有一个包含OriginalFirstThunk、TimeDateStamp、ForwarderChain、Name、FirstThunk的important数组,这些成员指向一些重要的地址。

  1. name in Import (Image_Import_Data)指向进程试图调用的DLL的名称,在本例中,此DLL为Milad.dll。
  2. OriginalFirstThunk指向Import表,它包含由Milad.Dll导出的函数的名称。这个表中的函数有一个唯一的索引,加载器获取该索引,然后转到下一步,并引用带有该索引的,并将存在的值输入到的索引中,它是另一个整数值。
  3. FirstThunk是另一个指向IAT的重要成员。在前面的步骤中,动态加载器通过IOT获取一个整数值。此值是一个索引号,动态加载程序使用该值引用IAT。在本表中,动态加载器从IOT获取的索引值中有一个地址。在这些步骤之后,当动态加载器找到函数的正确地址时,它将该地址放到MPrint函数的Import表中。因此进程可以用其地址调用该函数。

这是一个简单的解释,复杂的东西,装载机所做的解决地址在DLL中通过名称,OFT(INT)和FT成员在Image_Import_Data。

票数 4
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42413937

复制
相关文章

相似问题

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