Re: binäre Aliens unter FreeBSD nutzen

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Tue, 13 Dec 2011 09:50:22 +0100 (CET)

Marc Santhoff wrote:
> ich wüßte gern, wie aufwendig es ist, Windows-DLLs oder Linux.so's unter
> FreeBSD zu laden und zu nutzen.

Kommt auf den Einzelfall an, aber im allgemeinen: ziemlich
aufwendig.

> Mplayer macht das ja, bei Netzwerktreibern sogar auch (also mit
> Hardwarezugriff). Nur die Quellen sind nicht nur umfangreich sondern
> auch wenig hilfreich für mich, das Verfahren zu erklären.

Da muss man differenzieren.

Bei den Windows-DLLs, die mplayer verwendet, handelt es sich
lediglich um Codecs. Die sind "self-contained", sprich, sie
machen selbst keinerlei Zugriffe nach außen. Sie enthalten
relativ einfache Funktionen, die die Eingabedaten herein-
geschoben bekommen, dann darauf herumrechnen und zum Schluss
die Ausgabedaten liefern. Black-Box-Prinzip. Sowas ist
relativ einfach mit einem Wrapper zu verpacken.

Die Sache mit den Windows-Netzwerktreibern ist da schon etwas
aufwendiger und funktioniert auch nur unter ganz bestimmten
Bedingungen, z.B. nur im Kernel-Kontext (da es ein Treiber
ist, der direkt auf die Hardware und Kernel-APIs zugreift).
Der FreeBSD-seitige Wrapper- und Support-Code ist hier schon
relativ aufwendig; insgesamt knapp 30000 Zeilen.

Wenn man das auf beliebige Userland-DLLs ausdehnen will,
dann muss man eine vollständige Windows-Umgebung emulieren.
Und damit landest Du im prinzip bei WINE.

> Es geht dabei um am USB angeschlossene Meßgeräte, sowas wie PicoScope
> und dessen Verwandte.

Soviel ich weiß, unterstützt WINE kein USB (aber ich kann
mich da auch irren). Diese Möglichkeit fällt also aus.

> Die bekommen Steuerbefehle übermitelt und liefern
> auch Daten zurück. Seitens der Hersteller gibt es oft nur eine
> Binärdatei mit den Steuerfunktionen, die muß also auf den betreffenden
> USB-Port zugreifen können, das ist wohl der leichtere Teil. Die
> Kommunikationsprotokolle werden nicht offengelegt.

Schwierig. Mögliche Ansätze:

 - Den Hersteller überreden, Dir Source-Code und/oder die
   Beschreibung des Protokolls zu überlasssen. Und letzt-
   endlich möchte ja niemand gerne auf potentielle Kunden
   verzichten. Häufig sträuben sich Hersteller, weil sie
   selbst Lizenznehmer (z.B. von Patenten) sind; in diesem
   Fall hilft es manchmal, wenn man die Unterzeichnung eines
   NDA anbietet. Mir ist auch ein Fall bekannt, wo eine
   Art Werksvertrag (inkl. NDA) geschlossen wurde: Der
   Hersteller durfte dann die Infos, die er selbst nur
   lizensiert hatte, herausrücken, da der Entwickler quasi
   als sein Mitarbeiter galt, und im Gegenzug hat er ein
   Nutzungsrecht für dessen Code erhalten.

 - Selbst versuchen, das Protokoll herauszufinden (auf Neu-
   deutsch "reverse-engineering"). Wenn es nicht absicht-
   lich verschleiert oder gar verschlüsselt ist, hat man da
   durchaus oft gute Chancen, wenn man grundsätzlich Ahnung
   von USB hat [*]. USB-Hardwaresniffer gibt es in ver-
   schiedenen Preisklassen, aber unter Umständen kann es
   vielleicht schon genügen, die Windows-Software in einem
   Virtualisierer (VB, Qemu) unter FreeBSD laufen zu lassen
   und dann usbdump(8) zum Sniffen zu verwenden. Dies habe
   ich aber noch nicht selbst ausprobiert.

 - Falls es wenigstens eine Library für Linux (*.so) gibt:
   Diese unter FreeBSD zu verwenden, ist in der Regel
   deutlich einfacher als bei einer Windows-DLL. Im Notfall
   kann man zumindest die Software als Linux-Binary ent-
   wickeln (auch das geht unter FreeBSD, am einfachsten
   mit einem linux_dist*-Port) und dann im Linuxulator
   laufen lassen.

 - Andere Hardware verwenden, deren Hersteller nicht an
   Microsoft "klebt", und der andere Betriebssysteme besser
   unterstützt.

 - Wenn's alles nichts hilft, dann muss man in den sauren
   Apfel beißen und unter Windows entwickeln. Immerhin
   könnte man das dann unter FreeBSD in einem Virtualisierer
   laufen lassen (z.B. VirtualBox) und hat so zumindest ein
   paar kleine Vorteile.

Gruß
   Olli

[*] Meine persönliche Empfehlung: "USB Complete" von
Jan Axelson, Fourth Edition, Verlag Lakeview Research LLC,
ISBN 978-1-931448-08-6. Aber wenn man bei Null anfängt,
muss man damit rechnen, dass man zunächst einmal ein wenig
Zeit investieren muss.

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart
FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd
"I learned Java 3 years before Python.  It was my language of
choice.  It took me two weekends with Python before I was more
productive with it than with Java." -- Anthony Roberts
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 13 Dec 2011 - 09:50:44 CET

search this site