Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#1

[DLL, HID] Zugriff auf DLL ohne Exports

  Alt 4. Mai 2017, 11:44
Hallo zusammen,

ich habe hier eine DLL von einem Gerät bekommen, das sich als HID Device ansprechen lassen soll.
Das HID Device kann man auch sehen und ansprechen, nur leider soll der Zugriff über besagte DLL erfolgen.
Natürlich nur die DLL, und keine .H oder .def Datei vorhanden.

Die DLL hat aber keinerlei Exports, weder DLL-Tools oder DependencyWalker können etwas erkennen.
Ich habe versuche die Funktionen per Index/Order zu enumerieren, es kommt aber gar nichts dabei heraus
(andere DLLs lassen ihre Funktionen damit wunderbar auflisten).

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  LRes: LPWSTR;
  pwc: PWideChar;
begin
    if FLib <> 0 then
    begin

        repeat

            Button3.Tag := Button3.Tag + 1;

            LRes := MakeIntResource( Button3.Tag );

            pwc := PWideChar( LRes );

            Memo1.Lines.Add( 'GetProcAddress (' + Button3.Tag.ToString + ') ' );

            FProc := GetProcAddress(FLib, pwc );

            if FProc <> nil then
            begin
                Memo1.Lines.Add( '--> success 0x' + IntToHex( Cardinal( FProc ) ) );
            end
            else
            begin
                Memo1.Lines.Add( '--> failed ' );
            end;

        until (FProc = nil);

    end;
end;
Ich hätte da mal ein paar Fragen an die DLL/HID Experten:
  • DependencyWalker zeigt Links zu vielen 32-Bit Funktionen (Kernel32, ...),
    deshalb gehe ich davon aus das die DLL auch 32-Bit ist.
    Ich habe versucht da mit Win32-Test zuzugreifen, oder muss ich das irgendwie anders machen (Stichwort WoW64) ?
  • Wenn die DLL 32-Bit im 64-Bit System ist, können dann 32/64 Bit Apps beide damit arbeiten ohne Verrenkungen ?
  • Kann es sein das eine DLL keine Funktionen per GetProcAddress mit Index s.o. exportiert, und trotzdem
    in VS oder .NET linkbar ist ?
  • Braucht ein HID Controller eine solche Geräte-DLL, wenn ja gibt es da vielleicht neuere Registierungsmethoden
    für .NET die ich nicht kenne ?
  • Soweit ich weiis wird .NET möglichst nicht mit unmanaged DLLs arbeiten, oder gibt es "managed" DLLS für .NET
    mit anderem Mechanismus ?
    Wenn ja, wie könnte ich das feststellen. ?
  • Gibt es vielleicht ein Tool was solche versteckten Funktionen-Exports automatisch disassemblieren könnte
    (ohne das man es wirklich selber debuggen müsste, dafür habe ich zu wenig Zeit) ?

Für eure Einschätzung wäre ich sehr dankbar, sorry für die viellen blöden fragen.
Aber ich habe die letzten Jahre DLLs möglichst verbannt (solange bis mir dann doch wieder diese Dinos
über den Weg laufen).
Und dann noch DLLs ohne jegliche Dokumentation, das ist für mich der Horror hoch drei

Rollo

Geändert von Rollo62 ( 4. Mai 2017 um 11:48 Uhr)
  Mit Zitat antworten Zitat