Я написал простейшую из возможных инъекций 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. После этого я ожидаю увидеть файл «D: \ test.txt», когда я запускаю другие приложения (например, notepad.exe), но это не так.Я не понимаюЕсть еще одна .dll, которая очень старая и написана в visual studio '97 (, которую я пытаюсь заменить ), которая прекрасно работает, когда я устанавливаю в AppInit_DLLs указатель на нее и запускаю произвольное приложение.,Я могу сказать, что он загружается при запуске других приложений.
Я не уверен, что здесь происходит, но это должно работать, не так ли?Это не может быть проще.Я использую VS 2010, но, по-моему, я создал очень плоскую версию Jane .dll, поэтому я не думаю, что какие-либо настройки проекта должны быть не в порядке, но я не совсем уверен в этом.Что мне здесь не хватает?
Информация о настройке
- ОС: Windows 7 64-битная
- Версия ОС: 6.1.7601 с пакетом обновления 1, сборка 7601
- IDE: Visual Studio 2010
- Версия IDE: 10.0.40219.1 SP1Rel