Exports table einer dll



  • Ja aba in meinem fall wurden sie nicht im "c" stil exportiert
    aba thx für den link auch wenn es ziemlcih viel text auf englisch ist.


  • Mod

    FarnK schrieb:

    Ja aba in meinem fall wurden sie nicht im "c" stil exportiert
    aba thx für den link auch wenn es ziemlcih viel text auf englisch ist.

    Jo. Wenn man schon kaum aber in Deutsch schreiben kann, dann wird es schon schwieirg mit Englisch! 😃

    Ansonsten bzgl. name mangeling / name decoration:
    http://support.microsoft.com/kb/126845/en-us



  • wenn es möglcih ware hätte ich gerne sowas hier

    void CreateDllHeader(String filename)
    {
       String[] exoprtierteSymbole;
       exoprtierteSymbole = GetExportsFromModule(filename);//<-- und diese funktion fehlt mir
       String[] unDekorierteSymbole = new String[exoprtierteSymbole.Lenght];
       for(int i = 0; i < exoprtierteSymbole.Lenght ; i++)
       {
           unDekorierteSymbole[i] = undecorateSymolName(exoprtierteSymbole[i]);
       }
    }
    

    Leider kenne ich kein funtion die sowas wie GetExportsFromModule macht, gibt es sowas ähnliches



  • edit: natürlich soll danch noch mehr code kommen, der dann die datei generiert und so



  • Soll ich Dich ins Projekte Forum verschieben? Wie viel willst Du denn dafür ausgeben?



  • nö, ich dacht eig. ich sei hier richtig, weil ich ja willen wollte ob es in der API soeine funktion gibt.
    ich meine andere programme wie dumpbin.exe oder Dependency Walker können das ja auch da dachte ich das das doch eig. machbar sein sollte



  • so hab grade diesen code gefunden, der leist zawr eig. die importe aus, aber für die exoprte müsste es doch ganz ähnlcih gehen, oder?

    bool GetList(std::string Path, std::vector<std::string> &Imports, int ListType)
    {
        tMapping Mapping;
        PIMAGE_DOS_HEADER pDosHeader;
        PIMAGE_NT_HEADERS pNtHeaders;
        DWORD ImportDataRva;
        PIMAGE_SECTION_HEADER pCurrentSection;
        unsigned int nSectionCounter;
        PIMAGE_IMPORT_DESCRIPTOR pImportDesc;
        DWORD dwSectionOffset;
        PIMAGE_THUNK_DATA32 pImageThunkData;
        PIMAGE_IMPORT_BY_NAME pImportByName;
        bool boFound = false;
        std::string DllName;
        std::string FunctionName;
        std::stringstream sstream;
    
        // Clear list
        Imports.clear();
    
        // Open the file and get the mapping
        if (!GetFileMapping(Path, Mapping))
            return false;
    
        // Get the DOS header
        pDosHeader = (PIMAGE_DOS_HEADER) Mapping.pBaseAddr;
    
        // Is it a DOS signature?
        if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE)
        {
            CloseFileMapping(Mapping);
            return false;
        }
    
        // Ok, get the NT headers next
        pNtHeaders = (PIMAGE_NT_HEADERS)(Mapping.pBaseAddr + pDosHeader->e_lfanew);
    
        // Is it a NT signature?
        if (pNtHeaders->Signature != IMAGE_NT_SIGNATURE)
        {
            CloseFileMapping(Mapping);
            return false;
        }
    
        // Get the Relative Virtual Address of the Import Entry of the Image Directory
        ImportDataRva = pNtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;
    
        // Get the pointer to the first Image Section
        pCurrentSection = (PIMAGE_SECTION_HEADER)IMAGE_FIRST_SECTION(pNtHeaders);
        //und hier geht eig. noch weiter
    


  • Schon mal mit IMAGE_DIRECTORY_ENTRY_EXPORT versucht?



  • Überflieger schrieb:

    Schon mal mit IMAGE_DIRECTORY_ENTRY_EXPORT versucht?

    bin ich grad dabei^^




Anmelden zum Antworten