Перехватом функции ZwQuerySystemInformation. Без библиотеки сложно - это надо делать снапшоты процессов в цикле и подзаражать таскменеджер или все процессы.
Запускай дллку из экзешника. Я где то на форуме выкладывал пример запуска экзешника из экзешника без сохранения его на диске, с дллкой тоже самое.
Да нет вот так можно обойтись без либы:
Внедрение в процесс кода функции, связанных с ней данных и запуск потока.
Process - хэндл открытого процесса,
Thread - адрес процедуры потока в текущем контексте,
Info - адрес данных передаваемых потоку
InfoLen - размер данных передаваемых потоку
Results - необходимость возврата результата (возврат назад переданных данных)
}
function InjectThread(Process: dword; Thread: pointer; Info: pointer;
InfoLen: dword; Results: boolean): THandle;
var
pThread, pInfo: pointer;
BytesRead, TID: dword;
begin
pInfo := InjectMemory(Process, Info, InfoLen);
pThread := InjectMemory(Process, Thread, SizeOfProc(Thread));
Result := CreateRemoteThread(Process, nil, 0, pThread, pInfo, 0, TID);
if Results then
begin
WaitForSingleObject(Result, INFINITE);
ReadProcessMemory(Process, pInfo, Info, InfoLen, BytesRead);
end;
end;