![]() |
Prozess pulverisieren
Hi,
Habe hier mal eine sehr nützliche Procedure falls man einen Prozess beenden will:
Delphi-Quellcode:
Gruß
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; Neutral General |
Re: Prozess pulverisieren
Hallo!
Warum heisst das so komisch? :shock: Und du kannst es sicher noch viermal schneller machen :gruebel: Liebe grüsse Laufi |
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 ... |
Re: Prozess pulverisieren
Zitat:
Habs verbessert :) |
Re: Prozess pulverisieren
Was ist der Unterschied zu TerminateProcess?
|
Re: Prozess pulverisieren
Delphi-Quellcode:
so sieht's doch besser auch:
const Kilobyte = 1024*1024; // das ist aber ein Megabyte !
Delphi-Quellcode:
procedure PulverizeProcess(hProcess: THandle);
const BUFSIZE = 4096; |
Re: Prozess pulverisieren
oh Mist, stimmt...
|
Re: Prozess pulverisieren
Zitat:
IMO macht ein solcher Beitrag keinen Sinn, wenn nur eine Funktion ohne irgendwelche Erklärung gepostet wird, oder? |
Re: Prozess pulverisieren
Zitat:
*PUSH* |
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.
|
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 |
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
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. |
Re: Prozess pulverisieren
Verschiebeding Selbst der Autor erklärt seinen Code für verrückt. :mrgreen: Sorry, aber :mrgreen: :lol: *SCNR* |
Re: Prozess pulverisieren
[OT] Wäre doch mal eine Idee für eine neue Rubrik: Verrückte Codes :lol: :roteyes: [/OT]
|
Re: Prozess pulverisieren
Da wäre Michael #1 :mrgreen:
:duck: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz