Получил привелегии, но сообщение при атаче библиотеке так и не получил, не могу понять почему. Вроде инжект прошел успешно и права получены. Быть может библиотека изначально должна быть в процессе, чтобы из нее что-то сработало.
Собсвенно сама библиотека:
Код:
library httpHook;
uses
SysUtils,
Classes,
Windows, Messages, Variants, Graphics, Controls, Forms, WinSock, WinSock2,
Dialogs, advApiHook in 'advapihook.pas',
NativeAPI in 'nativeapi.pas';
{$R *.res}
procedure DLLEntryPoint(dwReason: DWord);
begin
case dwReason of
DLL_PROCESS_ATTACH: begin
ShowMessage('DLL attached to process');
end;
DLL_PROCESS_DETACH: begin
ShowMessage('DLL detached');
end;
end;
end;
begin
DllProc := @DLLEntryPoint;
DLLEntryPoint(DLL_PROCESS_ATTACH);
ShowMessage(' Hooked :) ');
end.
И "Внедряльщик":
Код:
var processId:Dword;
processHandle:THandle;
begin
processId := GetProcessId('opera.exe');
processHandle := OpenProcess(PROCESS_ALL_ACCESS,False,processId);
if (EnableDebugPrivilege)
then
ShowMessage('Получены DEBUG привелегии')
else
ShowMessage('DEBUG привелегии не получены');
if ( InjectDll(processHandle,'dlls\httpHook.dll') )
then
ShowMessage('InjectDLL() сработал')
else
ShowMessage('InjectDLL() не сработал для PID '+IntToStr(processId));
end;
При исполнении пишет, что привелегии получил и длл вставил, но сама ДЛЛ ничего об этом видимо не знает, ибо сообщений от нее никаких не поступает. Хотя если сделать все то же, но через CreateProcess - т.е. создать процесс самим и внего внедрить эту самую DLL, то она начинает выполняться.