Pfadangabe bei geladenen Modulen in PE File Format finden



  • Hallo,
    ich möchte die Pfadangabe eines geladenen Modules in einem laufenden Process im PE File Format finden. Ich meine die Pfadangabe die ich auch angezeigt bekomme wenn ich mir die geladenen Module im laufenden Process via MODULEENTRY32 anzeigen lasse.

    könnte mir da jemand mal nen denkanstoß in die richtige richtung geben? ich weis nämlich im moment nicht wie ich da hinkommen sollte. denn im Importverzeichniss des Processes stehen ja nur die *.dll namen und nicht die komplette pfadangabe.



  • @rT!f@Ct schrieb:

    ich möchte die Pfadangabe eines geladenen Modules in einem laufenden Process im PE File Format finden.

    Den Pfad eines geladenen Moduls in einem laufenden Prozeß bekommst du mit GetModuleFileName() , aber was hat das mit dem PE-Dateiformat zu tun?

    @rT!f@Ct schrieb:

    könnte mir da jemand mal nen denkanstoß in die richtige richtung geben? ich weis nämlich im moment nicht wie ich da hinkommen sollte. denn im Importverzeichniss des Processes stehen ja nur die *.dll namen und nicht die komplette pfadangabe.

    Natürlich, denn die Wahl der DLL ist ja hochgradig abhängig von der Systemkonfiguration (z.B. PATH, anwendungsdefinierte DLL-Suchpfade, WinSxS, KnownDLLs) und findet erst zum Zeitpunkt des Ladens eines Moduls statt.



  • in der PE datei steht keine pfadangabe, was sollte das bringen und was für ein pfad



  • @rul0r

    in der PE datei steht keine pfadangabe,...

    das weis ich auch selbst, ich rede nicht von einer DATEI, sondern vom laufenden Process im speicher...
    wie ich oben schonmal beschrieben hab.
    und dort MÜSSEN die Pfadangaben stehen. denn sonst könnte ich sie nicht via MODULEENTRY32 und ProcessID finden.

    Und das PE Format existiert auch im Speicher des laufenden Processes und läst sich auch fast auf dem gleichen wege abfragen wie bei einer Datei auf der festplatte.

    was sollte das bringen und was für ein pfad

    ich werde mit dir nicht darüber diskutieren was für einen sinn und zweck das für mich hat. vieleicht nur soviel... lerneffect!? und welcher pfad... lies einfach ich hab es beschrieben...

    @audacia
    danke für deinen hinweis & hilfe, aber ich weis das ich mit GetModuleFileName(Ex) an den Dateipfad des Modules komme. das hilft mir aber nicht weiter.

    ich will im Speicher des laufenden Processes über das PE Format an die Pfadangaben der module kommen.

    am rande sei noch erwähnt..
    Ich weis das es andere und leichter wege dahin gibt und das es über den speicher und das PEFF umständlich und schwierig ist, dennoch will ich es wissen und versuchen.



  • ok mr dreimalsmart. wie kommst du auf den schwachsinnigen gedanken daß die pfadangaben irgendwas mit dem PE format zu tun haben? das ist doch völliger schrott. die pfad angaben wird der loader irgendwo speichern, vermutlich im PEB.

    halt die füße still wenn du offensichtlich null ahnung hast du nap



  • meine füße sind still... 😉
    lass es doch sein zu antworten wenn wie du selbst sagst nur vermutungen anstellen kannst. die bringen keinen weiter. ich denke mal du willst nur stenkern... was alleine schon dein unregister status verrät. 👎



  • sind keine vermutungen, sind fakten du holzklotzschnitzer.

    typedef struct _PEB {
    ...
    ...
    PPEB_LDR_DATA LoaderData;
    ...
    ...
    }
    
    typedef struct _PEB_LDR_DATA {
      ULONG                   Length;
      BOOLEAN                 Initialized;
      PVOID                   SsHandle;
      LIST_ENTRY              InLoadOrderModuleList;
      LIST_ENTRY              InMemoryOrderModuleList;
      LIST_ENTRY              InInitializationOrderModuleList;
    } PEB_LDR_DATA, *PPEB_LDR_DATA;
    
    typedef struct _LDR_MODULE {
      LIST_ENTRY              InLoadOrderModuleList;
      LIST_ENTRY              InMemoryOrderModuleList;
      LIST_ENTRY              InInitializationOrderModuleList;
      PVOID                   BaseAddress;
      PVOID                   EntryPoint;
      ULONG                   SizeOfImage;
      UNICODE_STRING          FullDllName;
      UNICODE_STRING          BaseDllName;
      ULONG                   Flags;
      SHORT                   LoadCount;
      SHORT                   TlsIndex;
      LIST_ENTRY              HashTableEntry;
      ULONG                   TimeDateStamp;
    } LDR_MODULE, *PLDR_MODULE;
    

    Den Rest wirste gerade noch selbst rausfinden können, schließlich wolltest du es ja angeblich "selber versuchen" 🙄



  • danke der hinweis reicht mir schon um selbst damit klar zu kommen :p

    anscheinend bist du son kleines würstchen der es nicht sein lassen kann ander zu beleidigen ohne mit seiner richtigen registrierung dafür gerade zu stehen.
    wie erbärmlich...



  • nö ich crushe nur gerne n00bs



  • nö ich crushe nur gerne n00bs

    sag ich doch bist ein kleines würstchen, hast im realen leben warscheinlich nicht viel zu sagen und kriegst ständig eins auf den deckel.



  • nö du hast auf'n deckel gekriegt, weil ich dich gecrushed hab. wärst du ein ein holzpfahl und ich ein hammer hätte ich dich so in die erde gerammt daß du in china wieder rausgekommen wärst und jetzt ist hier mal ruhe im puff.



  • was für dumme sprüche du nur drauf hast, du bist doch bestimmt nicht älter als 12. mag sein das du was vom progen verstehst aber dein pupatäres verhalten läst tief blicken.


Anmelden zum Antworten