首页 > 系统相关 >20.5 函数转发器/已知的DLL/DLL重定向/模块的基地址重定位--《Windows核心编程》

20.5 函数转发器/已知的DLL/DLL重定向/模块的基地址重定位--《Windows核心编程》

时间:2022-11-23 11:44:42浏览次数:37  
标签:函数 -- dll Windows 转发器 注册表 DLL

一、函数转发器

函数转发器是D L L的输出节(导出段)中的一个项目,用于将对一个函数的调用转至另一个 DLL中的另一个函数。

可以在DLL中使用函数转发器:

#pragma comment(linker,"/export:SomeFunc=Dll.SomeOtherFunc") // SomeFunc是转发Dll.dll中的SomeOtherFunc函数
#pragma comment(linker,"/export:Index=Dll.SomeOtherIndex") // 序号转发

 

二、已知的DLL

操作系统提供的某些DLL得到了特殊的处理。这些DLL称为已知的DLL。它们与其他DLL基本相同,但是操作系统总是在同一个目录中查找它们,以便对它们进行加载操作。

注册表:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs 存储着这些已知DLL的信息。

当给 LoadLibreay/LoadLibreayEx 传入 "SomeDllName",系统会用正常的搜索规则定位这个DLL。
当给 LoadLibreay/LoadLibreayEx 传入 "SomeDllName.dll",系统会先去掉.dll,用 SomeDllName 对比如上注册表中名称项,
(1)如果没有注册表中相符的项,系统会用正常的搜索规则定位这个DLL。
(2)如果有,系统会去 C:\Windows\System32 目录查找数据项对应的dll并载入,如果未找到,会返回NULL,GetLastError 返回 ERROR_FILE_NOT_FOUND;

 

三、DLL重定向

Windows 2000之后,DLL新增了重定向特性:强制操作系统的加载程序首先从应用程序的目录中加载模块,只有未找到文件的时候,才会在其他的目录中搜索。

 

四、模块的基地址重定位

vs 中可以进行设置

 

标签:函数,--,dll,Windows,转发器,注册表,DLL
From: https://www.cnblogs.com/renleiguanchashi/p/16917784.html

相关文章

  • RtspClient简易音视频解码
     可用于rtsp流检测,独立视频解码,音频解码    namespaceRtspClient_Decode{publicpartialclassMainFrom:Form{//视频Disp......
  • 随想录(软件调试)
       对于很多程序员朋友来说,编写代码要比调试代码快乐的多。似乎创造软件比维护软件更能给人带来成就感。然而,在企业里面维护前人留下的代码也是工作中不可缺少的一项内......
  • 嵌入式操作系统内核原理和开发(系统中断仿真)
       在嵌入式操作系统中,最难模仿的是系统中断的问题。在windows下面,这是没有办法的事情。但是在linux下面,却有一个非常便利的条件,那就是linux的信号处理。因为用户程序处......
  • 嵌入式操作系统内核原理和开发(任务创建和堆栈溢出检查)
       虽然写操作系统的博客要比写普通的技术点要麻烦一些,但是心中还是挺开心的。一方面,通过几行代码就可以说明一些问题,把理论实践化,这本身就很具有挑战性;另外一方面还锻......
  • NOIP 2022 游记
    Day-2近日模拟赛状态:打模拟赛:AK了:这么傻逼的模拟赛不是谁都AK,有什么训练效果吗\(\to\)自闭没AK:挂分了:wdnmd怎么又挂分\(\to\)自闭没挂分:wdnmd怎么就......
  • 嵌入式操作系统内核原理和开发(多线程轮转)
       之前我们也谈到了线程创建,基本上简单的系统就可以跑起来了,但是还没有到多线程运行的地步。所以,我们下面试图所要做的工作就是创建更多的线程,让更多的线程运行起来。......
  • vue中key使用的问题
    前言在vue要求在遍历的时候最好加上key,在使用过程中总有些疑问,在这里做下分析1.不使用key的时候vue是怎么处理的在vue2.x文档中有如下描述key的特殊attribute主要......
  • 嵌入式操作系统内核原理和开发(通用优先级调度)
       相比较其他调度算法而言,时间片的轮转更多的注重公平性。但是,任务与任务之间也是有先后之分的,有的任务我们希望多安排一些时间片,而有的任务我们则希望少安排一些时间......
  • html常用代码记录(方便查阅)
    HTML的基本结构:超文本文档分文档头和文档体两部分,在文档头里,对这个文档进行了一些必要的定义,文档体中才是要显示的各种文档信息。其中<HTML>在最外层,表示这对标记间......
  • 嵌入式操作系统内核原理和开发(改进型优先级调度)
       上面的一篇博客说到了优先级调度,但是那个优先级调度算法比较极端。打个比方说,现在王先生有三个小孩,分别是老大、老二、老三。假设现在到了饭点,王先生需要给三个小孩......