首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以通过创建dll并将其放在应用程序旁边来修补kernel32.dll函数?

是否可以通过创建dll并将其放在应用程序旁边来修补kernel32.dll函数?
EN

Stack Overflow用户
提问于 2017-10-27 10:30:48
回答 1查看 944关注 0票数 0

我正在查看旧修补程序中的旧软件:http://cc.embarcadero.com/item/21475

对该修补程序的完整描述如下:

BDE“磁盘空间不足”问题的修补程序。(4Gb倍数术语:无特殊术语名称: Reinaldo电子邮件: ryaayr@yahoo.com网址:无摘要: BDE的修补程序“磁盘空间不足”)--当磁盘空闲空间接近4Gb时,使用BDE时可能发生错误。描述:此单元为著名的4Gb BDE Bug补丁。它的构建是为了修复“磁盘空间不足”--当磁盘空闲空间接近4Gb的倍数时,使用BDE时可能会出现错误。有关更多信息,请参见质量中心的BDE report# 7089。 BDE错误的原因显然是idapi32.dll在计算空闲磁盘空间时的错误。the使用由kernel32.dll导出的名为GetDiskFreeSpaceA的api函数。 解决方案是在kernel32.dll中为当前进程“修补”GetDiskFreeSpaceA,对该函数的每次调用都被重定向到一个新例程(NewGetDiskFreeSpaceA)。 该修补程序的源代码包括在内。如果使用另一种编程语言(即不使用Delphi),则还包括预编译DLL (FIX4GBug.dll)。(如果可以编译包含的单元,则不需要分发DLL) 产品:德尔福(4-7)修复比赛:无上传: 25-Feb-04 10:03:08 AM最后更新22-3月-04 6:44:49下午

我想知道:如果MyApplication.exe或bdeidpi32.dll调用kernel32.dll函数GetDiskFreeSpaceA,那么如何将调用重定向到kernerl32.dll/GetDiskFreeSpaceA到FIX4GBug.dll/GetDiskFreeSpaceA,只需将FIX4GBug.dll放在MyApplication.exe旁边或idapi32.dll旁边?

也就是说,除了应用程序将包含相同功能(同名和相同签名)的dll简单地放置到本地dll中,而不是位于Windows系统目录中的内核32.dll之外,应用程序是否将该应用程序推送到使用函数?

EN

回答 1

Stack Overflow用户

发布于 2017-10-27 10:51:07

除了应用程序将包含相同函数(相同名称和相同签名)的dll简单地放置在本地dll中,而不是位于Windows系统目录中的内核32.dll之外,应用程序是否将该应用程序推送到使用函数?

不,这还不够。您的可执行文件没有理由加载该DLL。

您需要将GetDiskFreeSpaceA API函数从您的流程中挂起。所提供的源代码就能做到这一点。或者,如果您通过调用LoadLibrary将DLL加载到进程中,则我怀疑所提供的DLL也会这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46973001

复制
相关文章

相似问题

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