c++ - 覆盖来自 kernel32 的调用

标签 c++ dll overloading dll-injection overriding

可执行文件可能使用 CreateFileA

从磁盘打开一个文件

我想做的是覆盖kernel32.dll

的调用

并给它 stdin/stdout HANDLE

我能做什么:

  • 将我的 winmm.dll 交给它,因为它会从中加载 timeGetTime 以获取时间

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

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

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

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

enter image description here

enter image description here

最佳答案

关于c++ - 覆盖来自 kernel32 的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47569798/

相关文章:

c++ - 视觉 C++ 错误 : function must return a value

python - PyWin32 和 Python 3.8.0

c++ - 为什么不是我可以加载(打开)的所有 DLL 模块?

java - 使用 x86javapath 的 x64 机器上的 x86java 上的 JNI 不满足链接错误

使用 Return void 和 object (string) 的 C# 重载

c# - 使用 params 关键字时,C# 中的方法重载会出现意外行为

c++ - 从二进制文件字节到整数

c++ - 为什么 G++12 vector 插入优化会破坏代码?

c++ - 平台游戏(如马里奥兄弟)的碰撞不起作用

c++ - 为什么不可能重载 CUDA C++ 类的主机/设备成员函数