[Compiler] doppelte import adressen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von cxp, 15. Juli 2011 .

  1. 15. Juli 2011
    doppelte import adressen

    Wenn ich mit masm eine exe mache, hat diese ja normalerweise eine Import Tabelle. Diese besteht aus zwei Teilen, den Adressen und den Namen (so verstehe ich das zumindest, korrigiert mich, wenn ich falsch liege). Was die Adressen angeht, die scheint es doppelt zu geben. In der .rdata (bez. in der mit der .rdata zusammengeführten) Sektion sind sie erneut zu finden. Wirklich was zu tun mit der Import Tabelle hat diese zweite Adressliste aber nicht. Warum wird diese nun zweifach hinzuefügt? Kann ich dies irgendwie verhindern, oder es nachträglich löschen?
     
  2. 16. Juli 2011
    AW: doppelte import adressen

    Schau einfach mal mit dem CFF Explorer. Gibt nur eine Import Table.
     
  3. 16. Juli 2011
    AW: doppelte import adressen

    Dass es nur eine Import Table gibt ist mir schon klar. Ich will aber wissen warum die Adressen doppelt erstellt werden und wie man dem entgehen kann. Nur deswegen benutze ich nämlich polink.
     
  4. 17. Juli 2011
    AW: doppelte import adressen

    Ich verstehe dich immer noch nicht, wenn ich ein einfaches Programm mit MASM erstelle, dann steht in der .rdata Section die Import Table. In der .data Section sind die ganzen Strings vom Programm und die .code Section hat eben den Code.

    Die .rdata Section hat nichts doppelt, da ist ein Array von IMAGE_IMPORT_DESCRIPTOR Strukturen

    Code:
    typedef struct _IMAGE_IMPORT_DESCRIPTOR {
     union {
     DWORD Characteristics; // 0 for terminating null import descriptor
     DWORD OriginalFirstThunk; // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
     } DUMMYUNIONNAME;
     DWORD TimeDateStamp; // 0 if not bound,
     // -1 if bound, and real date\time stamp
     // in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
     // O.W. date/time stamp of DLL bound to (Old BIND)
    
     DWORD ForwarderChain; // -1 if no forwarders
     DWORD Name;
     DWORD FirstThunk; // RVA to IAT (if bound this IAT has actual addresses)
    } IMAGE_IMPORT_DESCRIPTOR;
    typedef IMAGE_IMPORT_DESCRIPTOR UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR;
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.