我已经编写了最简单的注入 dll。这是完整的代码:
#include "stdafx.h"
#include <stdio.h>
BOOL APIENTRY DllMain(HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
{
FILE * File = fopen("D:\\test.txt", "w");
if(File != NULL)
{
fclose(File);
}
return TRUE;
}
超级简单对吧?好吧,我什至无法让它工作。此代码编译为 dll,我已将此 dll 的路径放在注册表中 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs] 下。我还应该提到 LoadAppInit_DLLs 注册表值设置为 1。通过这样做,我希望在启动其他应用程序(如 notepad.exe)时看到文件“D:\test.txt”出现,但事实并非如此。我不明白。还有另一个 .dll,它非常古老,是用 Visual Studio '97 编写的(我正在尝试替换它),当我将 AppInit_DLLs 设置为指向它并启动任意应用程序时,它工作得很好。我可以说它在其他应用程序启动时正在加载。
我不确定这里发生了什么,但这应该有效,不是吗?再简单不过了。我正在使用 VS 2010,我认为我已经创建了一个非常平面的 Jane .dll,所以我认为任何项目设置都不应该出现问题,但我对此并不完全确定。我在这里想念什么?
设置信息
- 操作系统:Windows 7 64 位
- 操作系统版本:6.1.7601 Service Pack 1 Build 7601
- IDE:Visual Studio 2010
- IDE 版本:10.0.40219.1 SP1Rel