gpt4 book ai didi

delphi - Csrss中Hook进程创建

转载 作者:行者123 更新时间:2023-12-02 03:29:50 25 4
gpt4 key购买 nike

我正在尝试 Hook 进程创建,并在用户打开任何新进程时在我的 Hook 过程中接收“通知”。为了仅 Hook 一个函数,我尝试在 csrss.exe 的 CsrCreateProcess 中执行此操作。但是每次当我在这个进程中注入(inject) DLL 时,我都会遇到 BSOD(蓝屏)。我的注入(inject)代码是:

function Inject(DLL: PAnsiChar; ProcessID: Cardinal):Boolean;
var
lProcess: THandle;
lMem: Pointer;
lLibrary: Pointer;
Bytes: NativeUInt;
lThread: DWORD;
RemoteThread: DWORD;
begin
Result := FALSE;
if FileExists(DLL) then { If Path of DLL is valid }
begin
lProcess:= OpenProcess(PROCESS_ALL_ACCESS,False,ProcessID); { Open process to DLL Inyect }
if lProcess <> 0 then { If Process is opened }
begin
lMem:= VirtualAllocEx(lProcess,nil,Length(DLL),MEM_COMMIT,PAGE_READWRITE); { Reserve virtual space for load DLL }
if (Assigned(lMem)) then
begin
lLibrary:= GetProcAddress(GetModuleHandle('kernel32'),'LoadLibraryA'); { Parameter used for load library DLL in remote process }
WriteProcessMemory(lProcess,lMem,Pointer(DLL),Length(DLL),Bytes); { Write DLL in remote space created with VirtualAllocEx }
RemoteThread:= CreateRemoteThread(lProcess,nil,0,lLibrary,lMem,0,lThread); { Create Remote Thread for run DLL }
if (RemoteThread <> 0) then
begin
WaitForSingleObject(RemoteThread, INFINITE); // Wait for the LoadLibraryA thread to finish
CloseHandle(RemoteThread); { Close handle of Thread }
Result := TRUE;
end;
end;
CloseHandle(lProcess); { Close handle of process opened }
end;
end
end;

我的 DLL 代码是:

procedure DLLMain(dwReason: DWORD);
begin
case dwReason of
DLL_PROCESS_ATTACH:
begin
MessageBoxA(0,'Injected', 'Injected', MB_OK);
//@TrampolineCreateProcess := InterceptCreate(@CsrCreateProcess, @HookCsrCreateProcess);
end;
end;
end;

begin
DLLProc := @DLLMain;
DLLMain(DLL_PROCESS_ATTACH);
end.

尝试在 csrss 中挂接此函数是一个坏主意吗?我开始考虑在 explorer.exe 内注入(inject)并 Hook NtCreateSection,这应该可以解决我的问题,对吗?其他简单问题:是否可以使用 x86 可执行文件在 x64 进程中注入(inject) x64 DLL?

最佳答案

在评论中,您声明您正在尝试从 32 位注入(inject)器将 64 位 DLL 注入(inject)到 64 位目标进程中。使用 CreateRemoteThread 方法无法完成此操作。您需要创建一个 64 位注入(inject)器。

csrss 之上是一个系统完整性关键组件。即使您解决了位数问题,如果不允许注入(inject),我也不会感到惊讶。我绝对建议不要继续尝试注入(inject) csrss

关于delphi - Csrss中Hook进程创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24601669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com