Maybaygiare.org

Blog Network

Vad är en shim?

en shim är ett litet bibliotek som avlyssnar och ändrar samtal till ett annat bibliotek, främst för att underlätta kompatibilitet.

att behålla flera versioner av ett bibliotek är nödvändigt för att stödja dina kunder. Shim-bibliotek översätter gamla till nya bibliotekssamtal innan de vidarebefordras till det nya biblioteket.

exempel 1:

Linux-installationer levereras normalt med en enda Ruby-version. Ruby utvecklare måste ha olika Ruby versioner på sina många aktiva projekt. Rbenv använder shims för att lösa detta problem.

att köra ett Ruby-kommando i Linux innebär att man söker efter den körbara filen i sökvägen-som den söker från vänster till höger. Så att köra Ruby-kommandot rails serverbetyder att Linux hittar och kör Rails, en Ruby-körbar, i den första katalogen.

Running Rails App normalt

Rbenv lägger till en shims katalog och laddar den med shim skript innan prepending sökvägen. Det finns ett shim-skript för varje Ruby-applikation och att köra en Ruby-applikation betyder nu att du kör det matchande shim-skriptet. Så, running rails betyder att köra Rails-skriptet i katalogen shims och inte Rails-applikationen i usr/local/bin. Skriptet fungerar den nödvändiga Ruby-versionen och kör sedan dess matchande applikation, I detta fall Rails, under den förväntade Ruby-versionen.

exempel 2:

Microsoft använder shims för att förfalska en applikations Windows-samtal. När ETT program gör ett systemanrop går det igenom ’importera adresstabell’.

ett program som anropar Windows från IAT

Du kan ändra tabellen och ersätta Windows-samtalet med ett samtal till en shim. Shim i exemplet är en ’version-lie’ shim. Applikationen tycker att den är på en Windows 7-maskin.

An application call redirected to shim from IAT

Lämna ett svar

Din e-postadress kommer inte publiceras.