function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall; var addrMap: PDWORD; ptr2: PBOOL; begin mypid := 0; result := false; hFirstMapHandle := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, 8, 'NtHideFileMapping'); if hFirstMapHandle = 0 then exit; addrMap := MapViewOfFile(hFirstMapHandle, FILE_MAP_WRITE, 0, 0, 8); if addrMap = nil then begin CloseHandle(hFirstMapHandle); exit; end; addrMap^ := pid; ptr2 := PBOOL(DWORD(addrMap) + 4); ptr2^ := HideOnlyFromTaskManager; UnmapViewOfFile(addrMap); InstallHook; result := true; end;
exports HideProcess;
var hmap: THandle;
procedure LibraryProc(Reason: Integer); begin if Reason = DLL_PROCESS_DETACH then if mypid > 0 then UninterceptFunctions() else CloseHandle(hFirstMapHandle); end;
begin hmap := OpenFileMapping(FILE_MAP_READ, false, 'NtHideFileMapping'); if hmap = 0 then exit; try mapaddr := MapViewOfFile(hmap, FILE_MAP_READ, 0, 0, 0); if mapaddr = nil then exit; mypid := mapaddr^; hideOnlyTaskMan := PBOOL(DWORD(mapaddr) + 4); if hideOnlyTaskMan^ then begin fname := allocMem(MAX_PATH + 1); GetModuleFileName(GetModuleHandle(nil), fname, MAX_PATH + 1); // if not (ExtractFileName(fname)='taskmgr.exe') then exit; end; InterceptFunctions; finally UnmapViewOfFile(mapaddr); CloseHandle(Hmap); DLLProc := @LibraryProc; end; end.
Текст програмки, прячущей саму себя:
Код
program HideProj;
uses windows, messages;
function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall; external 'hide.dll';
function ProcessMessage(var Msg: TMsg): Boolean; var Handled: Boolean; begin Result := False; begin Result := True; if Msg.Message <> WM_QUIT then begin Handled := False; begin TranslateMessage(Msg); DispatchMessage(Msg); end; end end; end;
procedure ProcessMessages; var Msg: TMsg; begin while ProcessMessage(Msg) do {loop} ; end;
begin HideProcess(GetCurrentProcessId, false); while true do begin ProcessMessages; end; end.
Помощь в оформлении визы: оформление виз. Нет времени на оформление визы?