Prozesse abfangen

murdi

Erfahrenes Mitglied
Hallo, hab da mal ne frage !
Es geht um Ansi C :)

Ich möchte folgendes realisieren.

wenn zum beispiel jemand ein programm startet zb hl dann wird dasja unter win2k in systemprozesse angezeigt das die hl.exe aktiviert wurde und derzeit abearbeite wird.
wenn diese prozess beginnt soll sich ein weiteres programm öffnen was dann zb eine passwordabfrage macht oder die spieleinstellungen scannt !

mhh hoffe ihr habts des a bissel verstanden was ich da zusammen geschrieben habe :)


kurz gesagt ich möchte auf jede aktivität auf meinem pc in einem programm sehen und darauf dann mit reagieren.

nur leider hab ich bisher keine befehle in meinem buch gefunden wo darauf eingegangen word. vielleicht könnts mir ja helfen.

danke schon mal im vorraus !

tschaui
 
Zuletzt bearbeitet:
ich möchte nur kurz bemerken, dass ansi C und windows 2k bzw winXP total inkompatibel sind und du mit ansi C (ausser natürlich mit ASM) natürlich auch keine systemnahen oder gar API-funktionen aufrufen kannst, die eventuell prozess-steuerung zulassen!
 
Noch eine Anmerkung

Da hier oft ANSI C, VC++, BCB "verwechselt" wird hier mal eine kurze Liste für die die es nicht wissen:

ANSI C: Die vom ANSI-Komitee standarisierte Sprache C. Dazu gehören die Standard-Libraries, Syntax usw.
K&R C: Das "Original-C", ich wüsste nicht, dass es noch irgendwo im Einsatz wäre.
ANSI C++/ISO C++: Die vom jeweils vom ANSI bzw. ISO-Komitee standarisierte Sprache C++.

Visual C++: Eine IDE + Compiler für C & C++ von MS, der Compiler inkludiert MS Extensions, unterstützt allerdings nicht 100%ig ANSI C++ (allerdings in Version 7.0 bereits zu einem sehr großen Teil, es fehlen aber z.b. partial template specialization).
Borland C++ *: Eine IDE + Compiler für C & C++ von Borland, unterstützt wiederum nicht die volle Palette des Standards, und hat AFAIK auch eigene Extensions.

WinAPI: Eine API geschrieben in ANSI C, die die Interaktion mit Windows erlaubt.

Wg. Prozesse abfangen:

Das wird wohl nicht so leicht sein, da die neueren Windows-Versionen (2K, XP, .NET), das Multithreading & Rechte Konzept etwas strenger verfolgen als frühere.. evtl. geht es indem du einen Service schreibst, allerdings müsstest du BEVOR der Prozes startet die Abfrage machen, denn danach ist es zu spät... und nochmal abgesehen davon: Was hindert den User daran dein Programm zu beenden?
 
Ich habe einstweilen mal eine etwas unsaubere Methode gefunden. Sollte es nur für den Eigenbedarf sein, sollte es aber reichen:

Du schreibst einen global Hook, welchen ist egal, weildu ihn eigentlich nicht verwendest, wird ein Prozess gestartet wird die DLL mit der Hook-Procedure bekanntlich ja in den Speicher des Prozesses gemappt und du kannst DLL_PROCESS_ATTACH der DllMain-Funktion für deine Zwecke benutzen.
Zumindest hoffe ich, dass es so funktioniert, ich habe es nicht getestet.
 

Neue Beiträge

Zurück