Maybaygiare.org

Blog Network

Was ist ein Shim?

Ein Shim ist eine kleine Bibliothek, die Aufrufe einer anderen Bibliothek abfängt und ändert, hauptsächlich um die Kompatibilität zu unterstützen.

Die Pflege mehrerer Versionen einer Bibliothek ist notwendig, um Ihre Kunden zu unterstützen. Shim-Bibliotheken übersetzen alte in neue Bibliotheksaufrufe, bevor sie an die neue Bibliothek weitergeleitet werden.

Beispiel 1:

Linux-Installationen werden normalerweise mit einer einzigen Ruby-Version ausgeliefert. Ruby-Entwickler müssen unterschiedliche Ruby-Versionen für ihre vielen aktiven Projekte haben. Rbenv verwendet Shims, um dieses Problem zu lösen.

Einen Ruby—Befehl unter Linux auszuführen bedeutet, nach der ausführbaren Datei im Pfad zu suchen – den er von links nach rechts durchsucht. Das Ausführen des Ruby-Befehls rails serverbedeutet, dass Linux Rails, eine ausführbare Ruby-Datei, im ersten Verzeichnis findet und ausführt.

Rails-App normal ausführen

Rbenv fügt ein shims Verzeichnis hinzu und lädt es mit Shim-Skripten bevor Sie den Pfad voranstellen. Für jede Ruby-Anwendung gibt es ein Shim-Skript, und das Ausführen einer Ruby-Anwendung bedeutet jetzt, das passende Shim-Skript auszuführen. Das Ausführen von Rails bedeutet also, das Rails-Skript im Verzeichnis shims und nicht die Rails-Anwendung in usr/local/bin . Das Skript ermittelt die erforderliche Ruby-Version und führt dann die passende Anwendung, in diesem Fall Rails, unter dieser erwarteten Ruby-Version aus.

Beispiel 2:

Microsoft verwendet Shims, um die Windows-Aufrufe einer Anwendung zu fälschen. Wenn eine Anwendung einen Systemaufruf ausführt, durchläuft sie die ‚Importadressentabelle‘.

Sie können die Tabelle ändern und den Windows-Aufruf durch einen Aufruf eines Shim ersetzen. Das Shim im Beispiel ist ein ‚Version-lie‘ Shim. Die Anwendung glaubt, dass es sich um einen Windows 7-Computer handelt.

An application call redirected to shim from IAT

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.