【问题标题】:Overriding calls from kernel32覆盖来自 kernel32 的调用
【发布时间】:2017-11-30 09:19:40
【问题描述】:

一个可执行文件可能使用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:我不太了解汇编,但这是程序扫描我作为参数提供的文件时的反汇编

【问题讨论】:

  • 使用正确的 c++ 并将 std::basic_ostream 传递给您的代码...现在您可以写入文件、标准输出或字符串...
  • 我不是文件的来源。我只想将标准输入/标准输出句柄传递给它以制作包装器。
  • 拦截另一个进程对操作系统的调用是一个高级主题。这个问题可能超出了 Stack Overflow 格式的范围。

标签: c++ dll overloading dll-injection overriding


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 2012-02-08
相关资源
最近更新 更多