AppInit_DLLs 和 LoadAppInit_DLLs 尽管禁用了安全启动并设置了正确的 DLL 文件路径,但仍无法在 Windows 11 上运行

问题描述 投票:0回答:1

我创建了一个简单的 DLL 检查:

#include <Windows.h>

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
    MessageBox(0, 0, 0, 0);

    return true;
}

这是注册表:

我已经尝试了所有方法,但我的 DLL 注入不起作用。

预期行为:打开应用程序时,它应该显示空白错误消息

实际行为:什么都没发生。

c++ windows dll windows-11 dll-injection
1个回答
0
投票

自 Windows 7 起,

AppInit_DLLs
加载的 DLL 默认情况下必须进行代码签名,除非您将
RequireSignedAppInit_DLLs
设置为 0。您的屏幕截图中没有
RequireSignedAppInit_DLLs
值。

请参阅 Windows 7 和 Windows Server 2008 R2 中的AppInit_DLLs

另外,注意

MessageBox()
user32.dll
中,Dynamic-Link Library Best Practices明确指出:

你不应该从内部执行以下任务

DllMain

  • ...
  • 调用 User32.dll 或 Gdi32.dll 中的函数。某些函数会加载另一个 DLL,该 DLL 可能未被初始化。
  • ...

您应该改用

OutputDebugString()
,然后使用像SysInternals DebugView这样的工具来查看消息。

© www.soinside.com 2019 - 2024. All rights reserved.