AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Alle Moeglichkeiten Prozesse aufzulisten
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Moeglichkeiten Prozesse aufzulisten

Ein Thema von Win32.API · begonnen am 15. Mär 2006 · letzter Beitrag vom 16. Mär 2006
Antwort Antwort
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#1

Alle Moeglichkeiten Prozesse aufzulisten

  Alt 15. Mär 2006, 13:47
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

greetz
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#2

Re: Alle Moeglichkeiten Prozesse aufzulisten

  Alt 15. Mär 2006, 13:49
uses tlhelp32;

Process32First, Process32Next
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Alle Moeglichkeiten Prozesse aufzulisten

  Alt 15. Mär 2006, 13:52
MSDN-Library durchsuchenEnumProcesses.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#4

Re: Alle Moeglichkeiten Prozesse aufzulisten

  Alt 15. Mär 2006, 14:22
Wo bei (EnumProcesses) gesagt werden muss, dass es nicht auf win9x funktioniert.
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#5

Re: Alle Moeglichkeiten Prozesse aufzulisten

  Alt 15. Mär 2006, 14:24
Danke fuer die Antworten, ich guck mir die Funktionen erstmal an,
wenn jemand noch andere Funktionen kennt bitte posten.

greetz
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Alle Moeglichkeiten Prozesse aufzulisten

  Alt 15. Mär 2006, 14:26
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#7

Re: Alle Moeglichkeiten Prozesse aufzulisten

  Alt 15. Mär 2006, 14:34
Kommt drauf an, was du genau wissen willst.

Es gibt noch sowas wie NtQueryProcessInformation

oder einfach direkt mit ausprobieren:

Delphi-Quellcode:
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;
mit dem richtigen Wissen kommst so auch an die Dateinamen usw. Ich bastel mir gerade selbst was schönes wie z.b.

Delphi-Quellcode:
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;
Aber mehr gibts von mir zur Zeit nicht dazu, da gerade alle Funktionen für 9x und NT nachbaue ;>

für die, die es unter NT mal testen wollen:
http://uall.overclock.ch/public/GetExeFileNameAEx.exe
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#8

Re: Alle Moeglichkeiten Prozesse aufzulisten

  Alt 15. Mär 2006, 14:38
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.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#9

Re: Alle Moeglichkeiten Prozesse aufzulisten

  Alt 15. Mär 2006, 14:50
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.
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#10

Re: Alle Moeglichkeiten Prozesse aufzulisten

  Alt 16. Mär 2006, 05:54
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 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