Deutsch
Stammtisch & Café

Killme

 
- Seite 1 -


Hallo Profaner...

Vorab ein (ganz, ganz) kleiner Ausblick darauf, was demnächst mit der DACL_SET.INC möglich sein wird .

Keine Angst, ist nichts Gefährliches - vielleicht (auf jeden Fall!) auch mal den Taskmanager benutzen?

Kommentar ist erwünscht, bitte aber mit Betriebssystemangabe!

Aufgabe: Unter NT/2000/XP Programm ausschalten ohne sich abzumelden (ist lösbar, wollte es nicht zu schwierig machen ) oder den Button zu drücken.
Bin gespannt...

Beste Grüße

AH

643 kB
Kurzbeschreibung: Killme - versuch mich zu töten!
Hochgeladen:05.09.2005
Ladeanzahl105
Herunterladen
 
04.09.2005  
 



 
- Seite 1 -


PS: Das Programm ändert keine Systemeinstellungen - nur die des aktuellen Prozesses!

(viel Spaß)...
 
04.09.2005  
 



Würde es ja gerne testen - aber was soll ich testen?
 
04.09.2005  
 




Rolf
Koch
@IF
Einfach Taskmanager aufmachen und versuchen (ohne den Button zu klicken in der Anwendung) diese Anwendung zu killen.
Danach mal den Button klicken und dann killen.

@Andreas
Einwandfrei unter WinXP Pro

Rolf
 
04.09.2005  
 



Nur ob es sich ausschalten läßt, egal wie (nur Herunterfahren und Abmelden ist nicht erlaubt).
Unter Windows2000 sehe ich da im Augenblick noch 2 Möglichkeiten - gibt es noch mehr? Funktioniert es unter XP überhaupt???
PS: Button Drücken nur im Notfall!
 
04.09.2005  
 



Nun - es lässt sich bei mir völlig problemlos wie jede Anwendung mit dem Taskmanager terminieren. (WinXPHome)

Salve, iF.
 
04.09.2005  
 




Rolf
Koch
Hi Andreas,
oder war ich zu voreilig?
Anwendung beenden wird bei nicht erlaubt hervorragend verboten.
Prozess beenden killt Deine Anwendung trotz nicht erlaubt

Rolf
 
04.09.2005  
 



OK, da läuft also etwas anders als unter Windows2000 - ich werde mal versuchen, das Handle anders zu ermitteln...
Melde mich wieder!
 
04.09.2005  
 



So, jetzt muß ich erst mal was erklären:
Ich habe hier dem aktuellen Prozess das Recht PROCESS_TERMINATE geklaut, und das für jeden User (außer SYSTEM).

Egal wie viele Rechte man klaut, derjenige der der Eigentümer eines Objektes ist (hier ein Prozess) behält immer die Rechte zum Listen und Ändern der Zugriffsgerechtigungen (READ_CONTROL und WRITE_DAC). Unter Windows2000 nutzt der Taskmanager diese dem Eigentümer verbleibenden Rechte nicht, um die Zugriffsrechte wieder so zu ändern, daß ein Prozess beendet werden kann - er ist dann quasi für diesen Prozess abgeschaltet (deshalb dieses Smily - da hatte MS was vergessen).

Unter XP scheint diese Unzulänglichkeit behoben zu sein - das heißt, der Taskmanager verschafft sich scheinbar vorher wieder mehr Rechte.

Versucht einmal, das Programm mittels des Kommandozeilenbefehls AT als Service im Account System zu starten, dann dürftet ihr sehen, was ich meine .
 
04.09.2005  
 



Nochmals eine Bitte:
Versucht mal, das Programm über diesen Code zu starten und auch wieder zu beenden. Was passiert dann?
KompilierenMarkierenSeparieren
Def @CreateProcess(10) !"KERNEL32","CreateProcessA"
Def @GetExitCodeProcess(2) !"KERNEL32","GetExitCodeProcess"
Def @TerminateProcess(2) !"KERNEL32","TerminateProcess"
Declare Command#,StartupInfo#,ProcessInfo#,ExitCode#

Proc CreateProcess

    Parameters command$
    Declare handle&
    Dim Command#,Add(Len(command$),1)
    Dim StartupInfo#,68
    Clear startupinfo#
    Long StartupInfo#,0=68
    Dim ProcessInfo#,16
    Clear ProcessInfo#
    String Command#,0=command$
    @CreateProcess(0,Command#,0,0,0,0,0,0,StartupInfo#,ProcessInfo#)
    Let handle&=Long(ProcessInfo#,0)
    Dispose Command#
    Dispose StartupInfo#
    Dispose ProcessInfo#
    Return handle&

EndProc

Proc KillProcess

    Parameters hprocess&
    Dim exitcode#,4
    @GetExitCodeProcess(hprocess&,exitcode#)
    @TerminateProcess(hprocess&,@Long(exitcode#,0))
    Dispose exitcode#

EndProc

Declare Terminate&,Start&,Programm$
Windowstyle 31
WindowTitle "Process starten und killen"
Window 0,0-640,440
Let Start&=@CreateButton(%HWND,"Start",20,300,100,30)
Let Terminate&=@CreateButton(%HWND,"Terminate",200,300,100,30)
Enablewindow Terminate&,0
Enablewindow Start&,1

While 0=0

    Waitinput

    IF @Getfocus(Terminate&)

        KillProcess @&(0)
        Enablewindow Terminate&,0
        Enablewindow Start&,1

    ElseIF @Getfocus(Start&)

        Let Programm$=@Loadfile$("Eine Anwendung auswählen:","Programme|*.EXE;*.COM;*.PIF;*.BAT")

        IF Programm$<>""

            CreateProcess Programm$,""
            Enablewindow Terminate&,1
            Enablewindow Start&,0

        endif

    Endif

Wend

 
04.09.2005  
 



Duplicate Identifier Createprocess - schonmal schlecht. [hr:5a5b330929]Aber auch so lässt sich das Prog über den Button oder den TM einfachst terminieren.

Salve, iF.[hr:5a5b330929]PS: Ists richtig das ich alle Deine Programme mit Profan²4 teste?
 
04.09.2005  
 



[quote:bc1c8f568c=iF]Duplicate Identifier Createprocess - schonmal schlecht. [hr:bc1c8f568c]Aber auch so lässt sich das Prog über den Button oder den TM einfachst terminieren.
[/quote:bc1c8f568c]
Au man, bin ich blöd .
Der SID ist mit diesem Handle ja noch default - kann also gar nicht gehen - das Handle hole ich mir ja vor dem Ändern des SIDs.
Ist mir gestern gleich nach dem Posten aufgefallen .
Ich habe mal eine neue Version hochgeladen und dieser Quelltext dürfte für XP auch gehen:
KompilierenMarkierenSeparieren
Def @GetExitCodeProcess(2) !"KERNEL32","GetExitCodeProcess"
Def @TerminateProcess(2) !"KERNEL32","TerminateProcess"
DEF @GetWindowThreadProcessId(2) !"USER32","GetWindowThreadProcessId"
DEF @OpenProcess(3) !"KERNEL32","OpenProcess"
DEF @CloseHandle(1) !"KERNEL32","CloseHandle"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
DEF @FormatMessage(7) !"KERNEL32","FormatMessageA"
Declare ExitCode#,PROCESS_ID&,Fenster&,PHandle&
Declare Terminate&,Fensterk_killen&,Programm$,Active&
Declare AHRückgabe&,AHGETERROR_Buffer#,AHGETERROR_Buffer$
Declare Fehler&

Proc KillProcess

    Parameters hprocess&
    Dim exitcode#,4
    LET Fehler&=@GetExitCodeProcess(hprocess&,exitcode#)
    Let Fehler&=@TerminateProcess(hprocess&,@Long(exitcode#,0))

    IF Fehler&<>1

        LET AHRückgabe&=@GetLastError()
        DIM AHGETERROR_Buffer#,32000
        @FormatMessage($1000,0,AHRückgabe&,0,AHGETERROR_Buffer#,32000,0) Wandelt Fehlercode in Landesspezifische Message um.
        Let AHGETERROR_Buffer$=AHGETERROR_Buffer$+@STRING$(AHGETERROR_Buffer#,0)
        Dispose AHGETERROR_Buffer#
        @messagebox(AHGETERROR_Buffer$,"Fehlermeldung",16)

    endif

    Dispose exitcode#

EndProc

Windowstyle 31
WindowTitle "Process starten und killen"
Window 0,0-640,440
Let Fensterk_killen&=@CreateButton(%HWND,"Fenster killen",20,300,150,30)
Let Terminate&=@CreateButton(%HWND,"Prozess killen",300,300,150,30)

While 0=0

    Waitinput

    IF @Getfocus(Terminate&)

        Clearlist
        AddWindows ""
        LET Programm$=@Listbox$("Fenster wählen",3)

        IF Programm$<>""

            Let Fenster&=@Findwindow(Programm$)
            @GetWindowThreadProcessId(Fenster&,@ADDR(PROCESS_ID&))
            LET PHandle&=@OpenProcess($401,0,PROCESS_ID&)

            IF Fehler&=0

                LET AHRückgabe&=@GetLastError()
                DIM AHGETERROR_Buffer#,32000
                @FormatMessage($1000,0,AHRückgabe&,0,AHGETERROR_Buffer#,32000,0) Wandelt Fehlercode in Landesspezifische Message um.
                Let AHGETERROR_Buffer$=@STRING$(AHGETERROR_Buffer#,0)
                Dispose AHGETERROR_Buffer#

            endif

            KillProcess PHandle&
            @CloseHandle(PHandle&)

        Endif

    ElseIF @Getfocus(Fensterk_killen&)

        Clearlist
        AddWindows ""
        LET Programm$=@Listbox$("Fenster wählen",3)

        IF Programm$<>""

            @Sendmessage(@Findwindow(Programm$),$10,0,0)

        Endif

    Endif

Wend


Bitte auch mal versuchen, das Prog mit AT als Service zu starten und es dann über den Taskmanager auszuschalten.

[quote:bc1c8f568c=iF]
Salve, iF.[hr:bc1c8f568c]PS: Ists richtig das ich alle Deine Programme mit Profan²4 teste? [/quote:bc1c8f568c]
Na ja, 7.5 wurde reichen . 4.5 habe ich hier auch noch laufen - wenn du dazu Quelltext benötigst, schreibe ich dir gerne was .
 
05.09.2005  
 



 
- Seite 2 -


Ich habe noch einmal ein Update gemacht.
Worum gehts mir:
- Wie verhält sich der Taskmanager bei über AT gestartetem Prog mit und ohne gedrücktem Button unter XP? (Ich möchte wissen, ob meine Vermutung richtig ist, daß der Taskmanager die Zugriffsrechte vor dem Beenden des Progs wieder zurücksetzt.)
- In der Datei C:TEST.TXT wird ein Protokoll erstellt. Was steht in der Datei? (Ich möchte wissen, ob unter XP alles glatt läuft.)
- Wie verhält sich das Programm zusammen mit dem letzten Quelltext?
 
05.09.2005  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.495 Betrachtungen

Unbenanntvor 0 min.
RICOSCH28.06.2012

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

unbekannt (8x)
iF (3x)
Rolf Koch (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie