GetProcAddress mit Ordinal Werten?



  • Hallo zusammen,

    ich habe eine fremde Dll, aus der ich Funktionen nutzen möchte.
    Ich hab sie mir mal im Dissasembler angeschaut und hab eigentlich
    die Namen für die Export-Funktionen und die dazugehörigen Ordinals
    herausgefunden. Allerdings funktioniert GetProcAddress weder mit den
    Namen noch mit den Ordinals. Die Dll dürfte richtig geladen werden.
    Was mache ich falsch? Die Dll ist soweit ich weiß mit Microsoft
    Visual C++ geschrieben.

    Hier mal Stücke aus meinem Code:

    HANDLE hLib = NULL;
    
    hLib = LoadLibrary("C:\\Test.dll");
    if( hLib == NULL) 
    {
        MessageBox(NULL,"Fehlerbeim laden der Dll!","Fehler",MB_OK);
        return 0;
    }   
    
    if(GetProcAddress((HMODULE)hLib,(LPSTR)"FuncName") == NULL)
    {
        MessageBox(NULL,"Fehlerbeim laden der Dll!","Fehler",MB_OK);
        return 0;
    }
    

    und das selbe mit

    GetProcAddress((HMODULE)hLib,(LPSTR)"#1");
    

    Gruß
    yogle





  • If the function fails, the return value is NULL. To get extended error information, call GetLastError.

    Schon mal probiert? Evtl. werden die Symbole von der DLL nicht exportiert. disasm hat ja schon eine Möglichkeit genannt, wie du das überprüfen kannst.

    btw:
    LoadLibrary liefert ein HMODULE, also deklariere hLib entsprechend. Dann kannst du dir auch so sinnlose Cast wie im Aufruf von GetProcAddress ersparen.



  • GetProcAddress((LPCSTR) (DWORD) 1);
    


  • Ah! 🙂 Die Antwort von Jochen Kalmbach funktioniert einwandfrei!
    Vielen Dank für die Antworten.

    Gruß
    yogle


Anmelden zum Antworten