MD5 Hash eines Prozess herausfinden und Meldung erscheinen lassen bzw. Blockieren.

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von FuFu^^.

    MD5 Hash eines Prozess herausfinden und Meldung erscheinen lassen bzw. Blockieren.

    Hallo

    Ich würde gerne Wissen, wie ich eine MD5 Hash-Liste in mein Programm erstelle, und diese mit ein Timer durchgegangen wird, und gecheckt wird, ob sich das Programm mit diesen speziellen MD5 Hash unter den Prozessen befindet, daraufhin möchte ich einen Messagebox anzeigen lassen oder auf Wunsch das Programm beenden.

    Ich brauche eine Methode, wie ich immer das selbe Programm (oder die Datei) finde, auch wenn sie einen anderen Namen trägt, dabei soll mein Programm dieses Programm / die Datei unter den Prozessen im Task-Manager suchen.

    Gesucht habe ich auch bereits, allerdings finde ich nicht wirklich etwas zu diesen Thema.
    Hoffentlich könnt ihr mir da weiterhelfen :)
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Hol dir eine komplette Liste aller Prozesse. Die Process-Klasse hat dann eine MainModule-Eigenschaft, die du dir mal ansehen solltest.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    weil ich nur ein Byte in der .exe finden muss, das ich verändern kann, ohne dass die Ausführbarkeit beeinträchtigt wird, und es entsteht ein komplett neuer Hash. Das wären mit nur diesem veränderbaren Byte bereits 255 neue Hashes die er speichern müsste. Finde ich 2, sind es schon über 65.000!

    Gibt es ein Update oder eine neuere Version des Programms, taugen die Hashes auch nichts.

    Und SHA512 bringt auch keinen echten Vorteil @Artentus:
    Bei dem was @Lukas geschrieben hat, blick ich nicht ganz durch.

    Nochmal kurz meine Frage: (Vielleicht besser erklärt)
    Ich möchte eine Datei finden, die derzeit ausgeführt wird, egal ob der Name der Datei geändert wurde.
    (Ich möchte die Datei nicht suchen, wenn sie nicht ausgeführt wird, sondern nur wenn sie ausgeführt wird).
    (Ich rede von Normalen Nutzern die versuchen das zu umgehen indem sie einfach den Name der Datei ändern)
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Dann manipulier' ich halt seine Hashliste

    Die Frage ist ja nicht ob es möglich ist mit Hashes, sondern ob es sinnvoll ist. Ich denke ja der Aufwand rechtfertigt den Nutzen (bzw. Sicherheit) hier einfach nicht.
    @FuFu

    Angenommen, Ich habe ein Programm das "XYZ.exe" heißt, mein Programm findet dieses mit GetProcessByName, jetzt bennent der User das Programm in "XYZ_99.exe", jetzt wird es nicht mehr gefunden weil anderer Name, das Fremde Programm funktioniert aber genauso wie vorher.

    Nebenher: Danke schon mal für die versuchte Hilfe! :)
    Ich habe mich schon auf MSDN umgeschaut, allerdings verstehe ich nicht so ganz, wie ich das im Code umsetzen kann ... Könnt ihr mir vielleicht ein wenig auf die Sprünge helfen?
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Wird das 'ne "Kindersicherung" oder etwas in der Richtung? Ich glaube nicht, dass die für gewöhnlich mit Executable-Hashes arbeiten.

    Option 1: du bleibst bei diesem Schwachsinnsansatz und schaust dir den Link von Lukas an
    Option 2: du überlegst dir ein anderes, zuverlässigeres Konzept
    Eine Hack | Drittanbieter Programm Sicherung für ein Spiel von eines guten Freundes, leider gibt es in seinen Spiel schon Leute die meinen sich unfaire vorteile zu verschaffen durch Drittanbieter Programme. (Nervt so ziemlich)

    Meine bisherige Sicherung mit GetProcessByName hat nicht lange gehalten.
    Deswegen auch das Thema zum finden des Programmes mit anderen Namen.
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Genau sowas wie ein Trainer der parallel dazu mit läuft.

    Er entwickelt das Spiel in einer frei runterladbaren Engine (CryEngine oder Unreal Engine, weiß ich nicht mehr genau)
    Jedenfalls kann er da nichts groß selber Programmieren, nur halt die Tools verwenden wie Objekt-Katalog und Co.
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Ich würde mir ALLE geladenen DLLs (und ggf. Funktionen) eines jeden Prozesses enumerieren lassen. (Das ist eine Technologie die eigentlich Cheat Engine anbietet. Die kann allerdings selbstverständlich auch nur das, was die WinAPI kann.)


    Vielleicht weist der Trainer ja eine besonders verräterische DLL/Funktion auf, die man tracken kann. Somit würdest du auch alle alten und auch Folgeversionen des Trainers ausgrenzen.
    Eine derartige Abfrage ist etwas performanceaufwändiger, aber es würde ja ausreichen, wenn du das alle 10-30 Sekunden checken würdest.


    EDIT: Sie nutzt dazu unter anderem CreateToolhelp32Snapshot s14.directupload.net/images/130411/6oflxuwx.png
    Danke schon mal für deine Antwort, das hilft mir schon wesentlich weiter.

    Könntest du mich darüber nochmal etwas genauer Aufklären und wie ich das am besten umsetze?
    Ich brauche jetzt keinen Vollständigen Code nur ein Ansatz, oder vielleicht eine Anleitung dazu.

    Das was am Wichtigsten ist, auch wenn sich der Programmname des Hacks ändert, das er dennoch enteckt wird, vielleicht anhand etwas, was fest in diese Anwendung ist, und nicht geändert werden kann ohne weiteres. (Wovon Normale User sowieso nur Bahnhof verstehen)

    Edit: Es muss gar nicht eine ganze Serie von einen Hack enteckt werden, es sind sowieso nur 2 Drittanbieter Programme die sich jeher nicht geändert haben.
    Sollte sich das Fremdprogramm einmal ändern, kann ich auch ein Update via. Updater veröffentlichen.
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford