覆盖来自 kernel32 的调用

Overriding calls from kernel32

一个可执行文件可能使用 CreateFileA

从磁盘打开一个 文件

我想做的是覆盖来自 kernel32.dll

的调用

然后给它 stdin/stdout HANDLE

我能做什么:

当我试图覆盖我的 DLL 中的 CreateFileA 调用时,编译器就是不让我编译,因为 kernel32.dll 已经有了它的引用

winmm.cpp(56): warning C4273: 'CreateFileA': inconsistent dll linkage
C:\Program Files (x86)\Windows Kits.1\Include\um\fileapi.h(122): note: see previous definition of 'CreateFileA'

有没有办法让我制作的 DLL 做到这一点?

PS: 我不太了解汇编,但这是程序扫描我作为参数提供的文件时的反汇编

您应该尝试 API 挂钩。查看这些链接-

https://www.apriorit.com/dev-blog/160-apihooks

https://www.codeproject.com/Articles/2082/API-hooking-revealed