MD5 von einem Prozess raus bekommen

  • Guten Tag.

    ich habe etwas versucht unsagbar:

    HD5 von einem Prozess raus bekommen und ihn , wenn er auf der Liste ist, beenden.

    Ich habe schon etwas versucht, aber ich brauche Hilfe, da ich nicht mehr weiter komme :(

    [autoit]

    If Not FileExists("MD5Hash.dll") Then
    FileInstall("MD5Hash.dll", "MD5Hash.dll", 1)
    EndIf



    $md5 = PluginOpen("MD5Hash.dll")

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

    $list = ProcessList()
    for $i = 1 to $list[0][0]
    next

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

    Dim $File,$Liste = 'codes.txt'
    _FileReadToArray($File,$Liste)
    If Not IsArray($Liste) Then Exit

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

    While 1
    $md5checksum = MD5Hash($list[$i], 1, True)
    $lower = StringLower($md5checksum)
    for $i = 1 to $Liste[0]
    If ProcessExists($List[$i]) Then
    ProcessClose($List[$i])
    WEnd

    [/autoit]
  • WAS willst du machen? :huh: Was ist denn bitte ein "HD5"? Bist du dir sicher das du nicht MD5 meinst? Dazu kommt noch, dass du weder diese dubiose 'md5hash.dll' noch die Funktion 'md5hash()' die du im Script verwendest gepostet hast... Außerdem lässt sich (zumindest für mich) kein Sinn oder Verwendungszweck für dein Script erkennen. ?( Falls du vor hast eine Art "Prozess-Blocker" zu schreiben, dann macht das ganze Rumhantieren mit MD5 aber auch keinen Sinn, da du dann auch gleich den Prozessnamen vergleichen könntest.... Also bitte versuche nochmal dein Vorhaben und dein Problem in einem ordentlichen Post zu beschreiben. Okay? ;)

    LG
    Christoph :)

  • Ok...

    Ich habe vor, dass das Programm die Text-Datei ließt und dann jede paar Sekunden schaut, (indem er jeden Prozess in einen MD5 Code verwandelt) und dann vergleicht ob die MD5 Checksumme in der Datei steht, wenn ja, soll der Prozess beendet werden, wenn Nein, dann soll noch mal durchgelaufen werden...


    Und so die ganze Zeit...

    ich habe es oben schon mal versucht, aber irgendwie bekomme ich das nicht hin...:(

  • Mach ich des schon?

    Ich habe es etwas überarbeitet, jetzt kommt das Programm und beendet sich in der gleichen Sekunde wieder:

    [autoit]

    #include <File.au3>
    #include <Array.au3>

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

    If Not FileExists("MD5Hash.dll") Then
    FileInstall("MD5Hash.dll", "MD5Hash.dll", 1)
    EndIf

    Dim $File,$Liste = 'codes.txt'

    $list = ProcessList()

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

    $md5 = PluginOpen("MD5Hash.dll")

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

    _FileReadToArray($File,$Liste)
    If Not IsArray($Liste) Then Exit

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

    While 1
    for $i = 1 to $list[0][0]
    $md5checksum = MD5Hash($list[$i], 1, True)
    $lower = StringLower($md5checksum)
    for $i = 1 to $Liste[0]
    If ProcessExists($List[$i]) Then
    ProcessClose($List[$i])
    EndIf
    Next
    Next
    WEnd

    [/autoit]
  • Mach ich des schon?

    Nein... ^^ Hier ein Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <Crypt.au3>
    #include <File.au3>
    Local $File, $Filter = '%'
    _FileReadToArray(@ScriptDir & '\md5.txt', $File)
    For $i = 1 To $File[0]
    $Filter &= $File[$i] & '%'
    Next

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

    While Sleep(500)
    $List = ProcessList()
    If IsArray($List) Then
    For $i = 1 To $List[0][0]
    $Path = _ProcessGetPath($List[$i][1])
    If FileExists($Path) And $Path <> '?' Then
    ConsoleWrite($Path & @LF)
    $MD5 = _Crypt_HashFile($Path, $CALG_MD5)
    If StringRegExp($Filter, '%' & $MD5 & '%') Then ProcessClose($List[$i][1])
    EndIf
    Next
    EndIf
    WEnd

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

    Func _ProcessGetPath($PID) ; http://www.autoit.de/index.php?page=Thread&threadID=4669
    $Path = DllStructCreate("char[1000]")
    $dll = DllOpen("Kernel32.dll")
    $handle = DllCall($dll, "int", "OpenProcess", "dword", 0x0400 + 0x0010, "int", 0, "dword", $PID)
    $ret = DllCall("Psapi.dll", "long", "GetModuleFileNameEx", "long", $handle[0], "int", 0, "ptr", DllStructGetPtr($Path), "long", DllStructGetSize($Path))
    $ret = DllCall($dll, "int", "CloseHandle", "hwnd", $handle[0])
    DllClose($dll)
    Return DllStructGetData($Path, 1)
    EndFunc

    [/autoit]

    Du musst nur noch die "md5.txt" mit den MD5-Hash's der zu sperrenden Programme befüllen... ;)

    LG
    Christoph :)

  • Ich habe vor, dass das Programm die Text-Datei ließt und dann jede paar Sekunden schaut, (indem er jeden Prozess in einen MD5 Code verwandelt) und dann vergleicht ob die MD5 Checksumme in der Datei steht,

    Da ein Prozess "lebt" ädern sich seine Daten laufend. Falls du also tatsächlich an die Daten der Prozesse kommen solltest wirst du autmatisch alle Prozesse abschiessen. Wenn du Glück hast schiesst sich dein eigener Prozess ab bevor sich Windows aufhängt.

    mfg autoBert


  • Irgendwie klappt das nicht, ich gebe dir MD5-Hash's ein und das Programm beendet den Prozess einfach nicht..:(

  • Irgendwie klappt das nicht, ich gebe dir MD5-Hash's ein und das Programm beendet den Prozess einfach nicht..

    Möglicher Weise wird der Programmpfad durch die "_ProcessGetPath()" Funktion nicht richtig erkannt. Was für Programme versuchst du denn zu sperren? Genügt nicht ein vergleich des Prozessnamens? Bist du dir sicher, dass du korrekte MD5-Hashes der Programm Dateien verwendet hast?

    LG
    Christoph :)

  • Das _Crypt_HashFile gibt ein MD5 im Stil von "0x..." zurück..
    achte darauf, das in die TXt mitzuschreiben.

    Deine test.exe ergibt bei mir aber 0x49D4392C62CF190715BCEE6B6EC6C237

    und damit in der md5.txt geht das auch...

  • Das _Crypt_HashFile gibt ein MD5 im Stil von "0x..." zurück..
    achte darauf, das in die TXt mitzuschreiben.

    Deine test.exe ergibt bei mir aber 0x49D4392C62CF190715BCEE6B6EC6C237

    und damit in der md5.txt geht das auch...


    Vielen Dank...euch...

    Es kalppt..:D

    Aber ich habe noch eine kleine Frage:

    Torni:
    Welches Programm benutzt du da?

  • habsch mir grade iwo runtergeladen.. keine ahnung wo da ich meinen nicht gefundne hab *G*

    Aber wenn dir die Hilfe zu _Crypt_Hashfile ansiehst, hast einen fertigen *G*

    Einmal editiert, zuletzt von Torni (4. Oktober 2012 um 18:33)