Jak zablokować uruchamianie procesu

0

Cześć może wiecie jak zablokować uruchamianie konkretnej aplikacji w windows?

0

Hook na odpowiednie funkcje API i reagowanie na nie. Jednak rozwiązanie jest zawodne bo trzeba by hookować wszystkie nowe procesy by przy wykorzystaniu przez nie tych funkcji tam również nastąpiła blokada. Jednak nie oszukujmy się są pewno do tego płatne rozwiązania napisane nie w Delphi z użyciem driverów czy silników programów av. Ja kiedyś pisałem coś takiego z użyciem unitu do hooków na funkcje API w systemach z rodziny NT. Jednak rozwiązanie bazowało na wykryciu funkcji obsługi innej funkcji komunikatów okna czyl zdaje sięi WH_WNDPROC oraz co konieczne dllce z własnym kodem plus loader. Całość napisana tylko w WinAPI. A wiadomo, że może trawić się apka bez okna lub usługa. I wtedy to nie będzie skuteczne.

Ale nawet nie Googlowałeś pewnie sam. Poczekaj do wieczora albo poszukaj unitu, który hookuje również procesy 64 bitowe i o ile pamiętam posiada funkcje aplikującą hooki czy tam ewentualnie injekcje własnej dllki we wszystkie aktualne procesy. Nie pamiętam czy mam to jeszcze na dysku. Teraz nie ogarne, ale powinieneś pokombinować sam ze znalezieniem rozwiązań. Bo nie można postępować na zasadzie dajcie mi gotowca, skompilujcie idealnie za mnie, a ja to sobie wezme i użyje całkowicie jako własne dzieło. Wykaż trochę samodzielności i zaintereswania tematem. Pytania o cokolwiek na jakimkolwoek forum to zawsze powinna być ostateczność.

7

@olesio podszedł do tematu bardziej profesjonalnie niż ja :P. Nie wiem jak pytacza ale mnie wkurzał ten GWX.exe z windowsem 10 więc napisałem sobie usługę w systemie, która co określony czas sprawdza listę uruchomionych procesów i jeśli pojawi się na niej gwx.exe to ubija ten proces. (tak tak wiem, że można tą aktualizację wywalić ale co to by była za frajda od strony programistycznej ;) )

Jeszcze taki jeden link czyli rejestr lub windows policy http://www.howtogeek.com/180803/how-to-block-an-application-or-.exe-from-running-in-windows/

Poniżej gotowy kod, który ubija dowolny proces:

uses TlHelp32;

function KillTask(const ExeFileName: string): integer;
const
  PROCESS_TERMINATE=$0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  while integer(ContinueLoop) <> 0 do begin
    if (StrIComp(PChar(ExtractFileName(FProcessEntry32.szExeFile)), PChar(ExeFileName)) = 0)
       or (StrIComp(FProcessEntry32.szExeFile, PChar(ExeFileName)) = 0)  then
      Result := Integer(TerminateProcess(OpenProcess(
                        PROCESS_TERMINATE, BOOL(0), // BOOL(0) means 'false'
                        FProcessEntry32.th32ProcessID), 0));
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

//wywolanie
procedure TForm1.Button1Click(Sender: TObject);
begin
  KillTask('GWX.exe');
end;

Odpalasz to na timerze i po problemie ;)

0

świetnie! zrobiłem uniwersalny kill tasker teraz nic nie odpalą zdalnie! :-) thanks very much

no proszę pięknie działa -- teraz jestem strzeżony przez mój prywatny guardian.exe:D

4

Nie jesteś strzeżony. Nie dość, że marnujesz zasoby na ciągłe uruchamianie i zabijanie aplikacji, to jeszcze nie zabijasz aplikacji od razu, tylko z pewnym opóźnieniem. W tym czasie uruchomiona apka może zrobić bardzo dużo rzeczy. Przedstawione rozwiązanie przypomina gazetę do zabijania much wpadających otwartym oknem, kiedy okno można po prostu zamknąć albo wstawić w nie moskitierę.
Jeśli możesz edytować uprawnienia do operacji na tym pliku .exe, to zdejmij możliwość uruchamiania go użytkownikowi, na którym chodzi ten proces, ewentualnie wszystkim użytkownikom. A najlepiej znajdź miejsce w systemie, które jest odpowiedzialne za starty aplikacji (serwis, autostart z menu start, harmonogram zadań, autostart z rejestru, ...) i wyłącz.

0

Za pomocą WMI można coś takiego zrobić a nie jakieś timery. Tu jest gotowiec na przykładzie notatnika z Windows (notepad.exe) https://theroadtodelphi.wordpress.com/2011/04/18/delphi-and-wmi-events/

0

ilu ludzi tyle pomysłów

1 użytkowników online, w tym zalogowanych: 0, gości: 1