Показать сообщение отдельно
  #6  
Старый 21.02.2012, 20:25
PRStudio PRStudio вне форума
Прохожий
 
Регистрация: 18.02.2012
Сообщения: 13
Репутация: 143
По умолчанию

Спасибо всем, с этим, я думаю, проблем не возникнет.

Но вот сейчас я застрял на injectDll()
Как я уже говорил, если процесс создан не мной (если его создал не я через CreateProcess), то DLL как бы подгружается (функция injectDll возвращает TRUE), но ничего не делает, будто бы и не подгружалась.

В DLL прописано выводить сообщение при подгрузке и отгрузке, а также в основании.

Вот небольшой пример, как я пытаюсь инжектировать DLL:

- - - - - - - - - - Рабочий пример (с CreateProcess из примеров модуля):
Код:
var StartInfo: TStartupInfo;
     ProcInfo: TProcessInformation;

ZeroMemory(@StartInfo, SizeOf(TStartupInfo));
StartInfo.cb := SizeOf(TStartupInfo);
CreateProcess(nil, 'notepad.exe', nil, nil, False, 0,nil, nil, StartInfo, ProcInfo);

InjectDll(ProcInfo.hProcess, 'dll_name.dll');

Такая конструкция работает и при запуске notepad.exe я получаю все сообщения, прописанные в DLL.

Но вот беда, мне абсолютно бесполезно создавать собственный процесс и в него внедрять свои же DLL. Хотелось бы внедрить библиотеку в чужой процесс.

- - - - - - - Теперь то, как я пытаюсь вбить библиотеку в уже запущенный процесс.

Код:
var processId:Dword;
     processHandle:THandle;

// Пускай жертвой будет тот же самый notepad, только уже запущенный
processId := GetProcessId('notepad.exe');
processHandle := OpenProcess(PROCESS_ALL_ACCESS,false,processId);
if (InjectDll(processHandle ,'moja_dll.dll')) then ShowMessage('Как бы инжект') else ShowMessage('Ошибка при инжектировании');

Этот код как бы работает, но не до конца. Мне пишет, что библиотека инжектирована, но при этом не запускаются сообщения из самой библиотеки, будто она не инжектировалась.

Собственно, прошу помощи, где косяк
Ответить с цитированием