![]() |
Alle Moeglichkeiten Prozesse aufzulisten
Hi,
mich würde mal Interessieren welche Moeglichkeiten es gibt alle laufenden Prozesses aufzulisten. Mir wuerde schon der Name der Funktion reichen, also keinen fertigen Source. Hoffe das klar ist was ich meine :P greetz |
Re: Alle Moeglichkeiten Prozesse aufzulisten
uses tlhelp32;
Process32First, Process32Next |
Re: Alle Moeglichkeiten Prozesse aufzulisten
|
Re: Alle Moeglichkeiten Prozesse aufzulisten
Wo bei (EnumProcesses) gesagt werden muss, dass es nicht auf win9x funktioniert.
|
Re: Alle Moeglichkeiten Prozesse aufzulisten
Danke fuer die Antworten, ich guck mir die Funktionen erstmal an,
wenn jemand noch andere Funktionen kennt bitte posten. greetz |
Re: Alle Moeglichkeiten Prozesse aufzulisten
Warum willst du das eigentlich wissen?
@brechi: Nun ja, jetzt wo Vista vor der Tür steht, würde ich nicht mehr umbedingt auf Windows 9x Kompatibilitäöt rücksichtnehmen. ;) |
Re: Alle Moeglichkeiten Prozesse aufzulisten
Kommt drauf an, was du genau wissen willst.
Es gibt noch sowas wie NtQueryProcessInformation oder einfach direkt mit ausprobieren:
Delphi-Quellcode:
mit dem richtigen Wissen kommst so auch an die Dateinamen usw. Ich bastel mir gerade selbst was schönes wie z.b.
procedure ListProcessIDsNT;
var i: DWord; dwProcess: DWord; dwPriv: DWord; begin SetDebugPrivilege(SE_PRIVILEGE_ENABLED,dwPriv); for i := 0 to High(Word) div 4 do begin dwProcess := OpenProcess(PROCESS_ALL_ACCESS,false,i*4); if (dwProcess <> 0) then begin CloseHandle(dwProcess); Writeln(i*4); Writeln(GetExeFileNameAExNT(i*4)); end; end; //Writeln(GetExeFileNameAExNt(FindProcess('explorer'))); SetDebugPrivilege(dwPriv); ReadLn; end;
Delphi-Quellcode:
Aber mehr gibts von mir zur Zeit nicht dazu, da gerade alle Funktionen für 9x und NT nachbaue ;>
function GetExeFileNameAExNt(dwProcessID: DWord): String; stdcall;
var PEB : TPEBNT; dwProcessID2: DWord; LdrData : TLdrData; dwRead : DWord; ModuleEntry : TModuleEntry; begin Result := ''; dwProcessID2 := OpenProcess(PROCESS_ALL_ACCESS,False,dwProcessID); if (dwProcessID2 <> 0) then dwProcessID := dwProcessID2; if ReadProcessMemory(dwProcessID,Pointer($7FFDF000),@PEB,SizeOf(TPEBNT),dwRead) and (dwRead = SizeOf(TPEBNT)) then begin if (PEB.pLdrData = nil) then ReadProcessMemory(dwProcessID,Pointer(PEB.pEventLogSection),@PEB,SizeOf(TPEBNT),dwRead); if (ReadProcessMemory(dwProcessID,PEB.pLdrData,@LdrData,SizeOf(TLdrData),dwRead)) and (dwRead = SizeOf(TLdrData)) then begin if (ReadProcessMemory(dwProcessID,LdrData.InLoadOrderModuleList,@ModuleEntry,SizeOf(TModuleEntry),dwRead)) and (dwRead = SizeOf(TModuleEntry)) then Result := ReadPWideChar(dwProcessID,ModuleEntry.ModuleName); end; end; if (dwProcessID2 <> 0) then CloseHandle(dwProcessID); end; für die, die es unter NT mal testen wollen: ![]() |
Re: Alle Moeglichkeiten Prozesse aufzulisten
Programm A versteckt sich vor Programm B (beides nicht meine Programme) ich moechte Programm A in Programm B sichtbar machen.
Ich habe jetzt folgende funktionen: NtQuerySystemInformation Process32Next Process32NextW EnumProcesses die ich auf API-Hooks teste und diese ,wenn vorhanden, entferne. greetz Edit: NtQuerySystemInformation wird immer aufgerufen, ich glaube alle anderen Funktion basieren auf dieser Funktion, aber sie ist nicht gehooked also muss eine Funktion auf einer niedrigeren ebene gehookt sein. Die Möglichkeit mit der Schleife muss ich mir nochmal angucken, und eventuell OpenProcess hooken. |
Re: Alle Moeglichkeiten Prozesse aufzulisten
Klar wird die Nt Funktionen von der kernel32.dll aufgerufen.
Es wird sich dabei sehr wahrscheinlich um einen Treiber handeln, dazu gibts tausende Beispiele im Internet. Und den wirst du dann garantiert nicht mit Delphi erkennen. Warum schreibst du nicht gleich dein Vorhaben rein, ich hasse solche Fragen. Hätte man dir auch gleich sagen können. Merk dir mal für die anderen Threads die du erstellst, dass du gleich mal dein Vorhaben dazu postest. |
Re: Alle Moeglichkeiten Prozesse aufzulisten
Ich habe mir das mit dem Treiber mal angeguckt, es stimmt. Ich habe in delphi die Processes mit Process32First/Next aufgelistet und da taucht der Process komischer Weise auf, was eigentlich nicht sein dürfte ,oder? ... .
greetz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:10 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