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