Via ReadProcessMemory Pfad und Parameter eines Prozesses bekommen



  • WMI läuft ja im Kernel und kann alles 😉



  • Was ist "WMI"? 😮
    Und wie kann ich damit etwas machen? ._.



  • Die Frage ist ja erstmal ob du das mit deinem eigenen oder einem anderen Prozess machen willst? Wenns dein eigener sein soll und du unbedingt das mit ReadProcessMemory machen willst, kannst du deinen Process Environment Block auslesen. Falls es ein anderer Prozess sein soll, musst du zuerst deinen Code irgendwie im anderen Prozess zum laufen bekommen und dann das gleiche machen.

    Aber warum willst du es denn unbedingt so umständlich machen, wenn es dafür sowieso fertige Funktionen für gibt?


  • Mod



  • Hallo

    Hab extra diesen Thread rausgekramt, wollte keinen neuen erstellen.
    Habe ähnliches Problem, habe eine PID dessen handle ich per OpenProcess() bekomme.
    Nur wie komme ich an die executable bzw. nur der Name (ich will nichts manipulieren etc.).

    Ich habe es mit GetProcessImageFileName versucht - aber bekomme nur zerstückeltes bzw. gar kein richtigen Namen im Pointer.
    Habe OpenProcess mit 0x1000 besetzt, allerdings scheint das bei XP ja nicht zureichen denn man muss 0x0400 Rechte haben?
    Dann stürzt das Programm aber ab (sind ja irgendwelche PIDs und nichts was ich unter dem user etc. ausgeführt hätte).
    Wie mache ich das denn am einfachsten, hier wurde ja von WMI gesprochen ist das auch die Lösung für mich?

    Gibt es keinen einfachen Weg nur den Namen der Executable zu bekommen, sollte unter XP und Vista funktionieren.



  • GetProcessImageFileName, QueryFullProcessImageName



  • @ascda

    Naja dein Post beantwortet in keinsterweise meine Frage.



  • sicher tut er das. wenn du irgendwelche "zerstückelten" strings bekommst, machst du wohl was falsch. schonmal was von GetLastError gehört und MSDN mal durchlesen wäre auch ned schlecht, ich wette nämlich es liegt an OpenProcess 🙄 ➡ ➡ 👎



  • sicher tut er das. wenn du irgendwelche "zerstückelten" strings bekommst, machst du wohl was falsch. schonmal was von GetLastError gehört und MSDN mal durchlesen wäre auch ned schlecht, ich wette nämlich es liegt an OpenProcess 🙄

    Ja schon klar, aber das war doch meine Frage - der Rückgabewert ist 0 ich weiß das es an OpenProcess liegt 😉
    Aber die Frage für mich ist, wie geht es nun?

    Auf XP exitiert dieses Recht nicht "PROCESS_QUERY_LIMITED_INFORMATION (0x1000)" - man soll "PROCESS_QUERY_INFORMATION (0x0400)" nutzen.
    Das Problem ist es ist kein Prozess den ich erstellt habe, sondern irgendeiner ich kann das Recht also nicht bekommen - wie komme ich also an den Prozessnamen?
    Das ist meine Frage die ganze Zeit 🙄



  • Hallo,

    Therion schrieb:

    Das Problem ist es ist kein Prozess den ich erstellt habe, sondern irgendeiner ich kann das Recht also nicht bekommen - wie komme ich also an den Prozessnamen?
    Das ist meine Frage die ganze Zeit 🙄

    Vielleicht übersehen?:

    MSDN-Doku schrieb:

    Remarks
    To open a handle to another another process and obtain full access rights, you must enable the SeDebugPrivilege privilege. For more information, see Changing Privileges in a Token.

    Alternative:

    CreateToolhelp32Snapshot, Liste durchgehen, und PROCESSENTRY32-Struktur auswerten.

    MfG,

    Probe-Nutzer


Anmelden zum Antworten