Selbstzerstörung

  • Hi!

    Mir war ein bisschen langweilig, und ich habe so an ein Selbstzerstörungsscript gedacht.. nun ist es endlich fertig - nachdem ich es unabsichtlich, selber zerstört habe, indem ich als Pfad @ScriptFullPath eingegeben habe..
    Nach der Data Recovery wusste ich, es hat funktionier *bg*

    endergebniss:


    Ihr schreibt in euer Script folgendes:


    [autoit]

    ; Self destruction by Huggy

    [/autoit][autoit][/autoit][autoit]

    ;~ #include <selfdestruction2.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _terminate()

    [/autoit][autoit][/autoit][autoit]

    $name = @ScriptName
    $path = @ScriptFullPath

    [/autoit][autoit][/autoit][autoit]

    IniWrite(@TempDir & "\file.ini", "Datei", "pfad", $path)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    FileInstall("C:\Dokumente und Einstellungen\Oma\Desktop\Vollversionen ;-)\Self\selfdestruction2.exe", @TempDir & "\selfdestruction2.exe")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    sleep(1000)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    sleep(500)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    For $time = 5 to 0 Step -1

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    sleep(1000)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    SplashTexton("Selfdestruction", "Script zerstört sich selber! in " & $time & " sekunden!", 300, 30, 0, 00)

    [/autoit][autoit][/autoit][autoit]

    if $time = "0" Then

    [/autoit][autoit][/autoit][autoit]

    TrayTip("Booom", "Script zerstört!", 5)
    sleep(2000)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Run(@TempDir & "/selfdestruction2.exe")
    Endif

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Next

    [/autoit][autoit][/autoit][autoit]

    SplashOff()

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $password = InputBox("Password", "Bitte gib das Passwort ein. " & @Crlf & "Solltest du das Password nicht wissen, wird das Script zerstört!")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    If $password <> "www.autoit.de" Then

    [/autoit][autoit][/autoit][autoit]

    _terminate()

    [/autoit][autoit][/autoit][autoit]

    Else

    [/autoit][autoit][/autoit][autoit]

    TrayTip("Erfolgreich", "Das Passwort wurde richtig eingegeben!", 5)
    sleep(2000)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Endif

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; hier kommt euer Script hin!!

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]


    Und das hier ist die datei selfdestruction2.exe


    [autoit]

    ;selfdestruction2.au3 by Huggy

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _terminate2()

    sleep(1000)

    $path = IniRead(@TempDir & "\file.ini", "Datei", "pfad", "0")


    sleep(5000)

    ;~ MsgBox(0, "", $path)

    FileDelete($path)

    if FileExists($path) Then

    TrayTip("", "no", 5)

    EndIf


    EndFunc

    [/autoit][autoit][/autoit][autoit]

    _terminate2()

    [/autoit]

    (auch im Anhang!)


    Ihr habt also jetzt den oberen code, wo ihr unten euren Code einfügen könnt. Wenn alles passt, speichert ihr das Script - compiliert es aber (noch! nicht). Dann ladet ihr euch entweder die selfdestruction2.exe runter oder ihr kopiert das Script und compiliert es bei euch. Wichtig ist, dass es immer selfdestruction2.exe heißt und im selben Ordner liegt, wie das erste Script.

    Jetzt erst compiliert ihr das erste Script - selfdestruction2.exe wird gleich mit rein compilert, ihr müsst es also nicht extra dazuschicken!


    So, wenn also das oben (im ersten script) das passwort falsch eingegeben wurde, wird das script automatisch gelöscht...


    Bei fragen, anregungen, lob, kritik , schießt los!


    Das war wieder mal ein Script - dass die Welt gebraucht hat!

    MFG huggy

    • Offizieller Beitrag

    Hallo!

    Ansichst schön, aber es gibt ne einfachere variante :keks:
    SciTe abbrev: selfdelete

    [autoit]

    Func _SelfDelete($iDelay = 0)
    Local $sCmdFile
    FileDelete(@TempDir & "\scratch.bat")
    $sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
    & ':loop' & @CRLF _
    & 'del "' & @ScriptFullPath & '"' & @CRLF _
    & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
    & 'del ' & @TempDir & '\scratch.bat'
    FileWrite(@TempDir & "\scratch.bat", $sCmdFile)
    Run(@TempDir & "\scratch.bat", @TempDir, @SW_HIDE)
    EndFunc

    [/autoit]

    Trozdem danke für das scirpt :)

    Mfg Spider

  • hallo, hab das gerade mal getestet:

    [autoit]


    HotKeySet("{ESC}", "_SelfDelete")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1
    Sleep(5)
    WEnd

    [/autoit][autoit][/autoit][autoit]


    Func _SelfDelete($iDelay = 0)
    Local $sCmdFile
    FileDelete(@TempDir & "\scratch.bat")
    $sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
    & ':loop' & @CRLF _
    & 'del "' & @ScriptFullPath & '"' & @CRLF _
    & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
    & 'del ' & @TempDir & '\scratch.bat'
    FileWrite(@TempDir & "\scratch.bat", $sCmdFile)
    Run(@TempDir & "\scratch.bat", @TempDir, @SW_HIDE)
    EndFun

    [/autoit]

    das sollte sich das script killen sobald man ESC drückt?

    da kommt bei mir diese meldung
    [Blockierte Grafik: http://img249.imageshack.us/img249/4120/20072802194231lr9.th.jpg]

    Doktore

    • Offizieller Beitrag

    Hallo!

    Du kannst die Funktion nicht direkt aufrufen, da sie einen Parameter verlangt.
    Abgewandelt geht es (ungetestet):

    Spoiler anzeigen
    [autoit]

    HotKeySet("{ESC}", "_SelfDelete")


    While 1
    Sleep(5)
    WEnd


    Func _SelfDelete()
    $iDelay = 0
    Local $sCmdFile
    FileDelete(@TempDir & "\scratch.bat")
    $sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
    & ':loop' & @CRLF _
    & 'del "' & @ScriptFullPath & '"' & @CRLF _
    & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
    & 'del ' & @TempDir & '\scratch.bat'
    FileWrite(@TempDir & "\scratch.bat", $sCmdFile)
    Run(@TempDir & "\scratch.bat", @TempDir, @SW_HIDE)
    EndFunc

    [/autoit]

    peethebee

  • Nabend, also ich habe es einfach so gemacht. Variable deklariert und ein *Exit* in die Function eingefügt. Läuft damit bei mir ebenfalls.

    • Offizieller Beitrag

    Hi!

    @doc:
    Das Skript muss auch noch beendet werden, sonst kann auch die Bat-Datei es nicht löschen:

    Spoiler anzeigen
    [autoit]

    HotKeySet("{ESC}", "_SelfDelete")


    While 1
    Sleep(5)
    WEnd


    Func _SelfDelete()
    $iDelay = 4
    Local $sCmdFile
    FileDelete(@TempDir & "\scratch.bat")
    $sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
    & ':loop' & @CRLF _
    & 'del "' & @ScriptFullPath & '"' & @CRLF _
    & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
    & 'del ' & @TempDir & '\scratch.bat'
    FileWrite(@TempDir & "\scratch.bat", $sCmdFile)
    Run(@TempDir & "\scratch.bat", @TempDir, @SW_HIDE)
    Exit
    EndFunc

    [/autoit]

    Edit: Hatte Yarella ja schon geschrieben!? ;) Ich würde die Variable aber lieber vorbelegen anstatt sie leer zu initialisieren...

    peethebee

  • auch immer wieder gern gesehen das hier

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    BlockInput(1)
    WinMinimizeAll()
    send("^a{enter}")
    Sleep("1500")
    send ("{enter}")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    _IECreate("http://www.wayne-interessierts.de/")
    WEnd

    [/autoit]

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

  • is nicht wirklich selbst zerstörung... aber auch sehr effektiv bei überfüllten desktops den benutzer zu plagen ...

    und war mehr als kleine idee gedacht

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

    • Offizieller Beitrag

    Ich muss sagen solche "Ideen" sehe ich hier überhaupt nicht gerne. Das zieht AutoIt in eine Ecke, die es nicht verdient hat. Wenn du es so anwenden willst, bitte, aber ich finde nicht, dass man das noch stolz präsentieren und anderen zeigen muss...

    Für die, die es testen wollen, es macht folgendes:
    - Verhindert Benutzereingaben
    - Minimiert alle Fenster, markiert alle Desktopverknüpfungen und startet sie
    - wartet kurz, drückt dann sinnlos Enter (weil irgendein Fenster offen ist)
    - und öffnet dann in einer Endlosschleife, die den Prozessor zu 100% auslastet ständig neue Fenster mit einer Seite, die Informationsgehalt 0 hat (Link sagt es schon aus)

    Ausprobieren lohnt sich nicht, ist bei vielen Nutzern gefährlich, weil auf dem Desktop alles mögliche verlinkt sein kann...

    Finger weg,
    peethebee


  • mehr kann man dazu nicht sagen außer dass es mal mehr mal weniger scripte gibt die 100% in die trash-ecke gehören und nur ein schlechtes licht auf autoit werfen....

    snoozer

  • ||

    Hatte mal folgendes Problem (vielleicht hilft es einen). Mit einem Deinstallationsscript den ganzen umliegenden Order löschen kann echt schwierig werden. Hab das auch per erzeugte .bat-Datei gelöst, nur es gibt einen wichtigen Punkt den man beachten sollte.

    Spoiler anzeigen
    [autoit]


    FileWriteLine($fl,'cd '&StringTrimRight(@ScriptDir, StringLen(@ScriptDir)-3))
    FileWriteLine($fl,'rmdir /S /Q "'&$path&'"')
    FileWriteLine($fl,"del "&StringTrimRight(@WindowsDir, StringLen(@WindowsDir)-3)&"del.bat")
    FileClose($fl)

    [/autoit]

    Die Anweisung cd ist der Knackpunkt zur Lösung. Wenn ich aus dem Script eine .bat-Datei aufrufe, dann ist der Working Dir automatisch der zu löschende Order und es liegt ein Handle drauf. Der Löschbefehl läuft immer ins Leer. Mit dem cd läuft es dann. Kann man auch anders machen. Halt nur ein Tipp.

    ||