Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Prozess pulverisieren (https://www.delphipraxis.net/111682-prozess-pulverisieren.html)

Neutral General 7. Apr 2008 19:51


Prozess pulverisieren
 
Hi,

Habe hier mal eine sehr nützliche Procedure falls man einen Prozess beenden will:

Delphi-Quellcode:
procedure PulverizeProcess(hProcess: THandle);
const BUFFERSIZE = 4096;
var c,i: Cardinal;
    buffer: Pointer;
begin
  GetMem(buffer,Kilobyte*4);
  FillChar(buffer,BUFFERSIZE ,0);
  i := 0;
  while i < $FFFFFF do
  begin
    WriteProcessMemory(hProcess,Pointer(i),buffer,BUFFERSIZE ,c);
    inc(i,BUFFERSIZE);
  end;
  FreeMem(buffer);
end;

procedure PulverisizeWindow(WindowName: String);
var wnd: hWnd;
     id: Cardinal;
  hProc: THandle
begin
  wnd := FindWindow(nil,PChar(WindowName));
  GetWindowThreadProcessId(wnd,id);
  hProc := OpenProcess(PROCESS_ALL_ACCESS,false,id);
  PulverizeProcess(hProc);
  CloseHandle(hProc);
end;
Gruß
Neutral General

Laufi 7. Apr 2008 19:55

Re: Prozess pulverisieren
 
Hallo!

Warum heisst das so komisch? :shock:

Und du kannst es sicher noch viermal schneller machen :gruebel:

Liebe grüsse
Laufi

BenBE 7. Apr 2008 21:02

Re: Prozess pulverisieren
 
Warum Byteweise schreiben, wenn Windows eh immer Pageweise schreibt?

D.h. 4KB-Puffer anlegen und den mit FillChar nullen. Danach gleich den gesamten 4-KB-Puffer schreiben ...

Neutral General 8. Apr 2008 16:43

Re: Prozess pulverisieren
 
Zitat:

Zitat von BenBE
Warum Byteweise schreiben, wenn Windows eh immer Pageweise schreibt?

D.h. 4KB-Puffer anlegen und den mit FillChar nullen. Danach gleich den gesamten 4-KB-Puffer schreiben ...

Hi,

Habs verbessert :)

toms 8. Apr 2008 16:46

Re: Prozess pulverisieren
 
Was ist der Unterschied zu TerminateProcess?

shmia 8. Apr 2008 16:54

Re: Prozess pulverisieren
 
Delphi-Quellcode:
const Kilobyte = 1024*1024; // das ist aber ein Megabyte !
so sieht's doch besser auch:
Delphi-Quellcode:
procedure PulverizeProcess(hProcess: THandle);
const BUFSIZE = 4096;

Neutral General 8. Apr 2008 16:57

Re: Prozess pulverisieren
 
oh Mist, stimmt...

toms 9. Apr 2008 19:34

Re: Prozess pulverisieren
 
Zitat:

Zitat von toms
Was ist der Unterschied zu TerminateProcess?

@Neutral General: Könntest du nun mal den Sinn resp. Unterschied zu TerminateProcess erklären?
IMO macht ein solcher Beitrag keinen Sinn, wenn nur eine Funktion ohne irgendwelche Erklärung gepostet wird, oder?

toms 12. Apr 2008 15:00

Re: Prozess pulverisieren
 
Zitat:

Zitat von toms
Zitat:

Zitat von toms
Was ist der Unterschied zu TerminateProcess?

@Neutral General: Könntest du nun mal den Sinn resp. Unterschied zu TerminateProcess erklären?
IMO macht ein solcher Beitrag keinen Sinn, wenn nur eine Funktion ohne irgendwelche Erklärung gepostet wird, oder?


*PUSH*

wido 12. Apr 2008 15:04

Re: Prozess pulverisieren
 
Er überschreibt einige Kontrollstrukturen. Dadurch zwingt er Windows den Prozess zu terminieren, weil sie ungültig sind. Wirklichen Sinn machts aber nicht. Wobei ich mir nicht mal sicher bin, daß er das wirklich vor hatte. Weil dann hätte er die Adressen direkt ermittelt, statt einfach wie wild die ersten 16 MB des Prozesses zu überschreiben.

Neutral General 12. Apr 2008 16:37

Re: Prozess pulverisieren
 
Hi^^

Also ehrlichgesagt hatte ich erwartet das ihr mich von Anfang an für verrückt erklärt und die Sache erst gar nicht ernst nehmt :mrgreen:
Das ganze war eigentlich auch nicht so ganz ernst gemeint ;) Wer ist denn so krank und schießt einen Prozess SO ab ? :freak:
Prozesshandle ermitteln und TerminateProcess drauf anwenden und gut ist ;)

Hatte halt irgendwann mal Langeweile und dabei ist sowas rausgekommen :mrgreen: :angel:

:stupid:

Gruß
Neutral General

wido 12. Apr 2008 18:14

Re: Prozess pulverisieren
 
Funktionieren wirds trotzdem. Bei XP und Vista z.B. beginnt der Heap innerhalb des Speicherbereichs den Du dort überschreibst. Und ist der Heap erst ruiniert, crashed es sich ganz ungeniert oder so ähnlich :P.

DP-Maintenance 13. Apr 2008 12:22

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Windows API / MS.NET Framework API" verschoben.
Selbst der Autor erklärt seinen Code für verrückt. :mrgreen:
=> ab in eine andere Rubrik.

Die Muhkuh 13. Apr 2008 12:31

Re: Prozess pulverisieren
 
Verschiebeding
Selbst der Autor erklärt seinen Code für verrückt. :mrgreen:


Sorry, aber :mrgreen: :lol:

*SCNR*

DeddyH 13. Apr 2008 12:36

Re: Prozess pulverisieren
 
[OT] Wäre doch mal eine Idee für eine neue Rubrik: Verrückte Codes :lol: :roteyes: [/OT]

Die Muhkuh 13. Apr 2008 12:37

Re: Prozess pulverisieren
 
Da wäre Michael #1 :mrgreen:

:duck:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz