Maybaygiare.org

Blog Network

Wat is een shim?

een shim is een kleine bibliotheek die oproepen naar een andere bibliotheek onderschept en wijzigt, voornamelijk om compatibiliteit te bevorderen.

het onderhouden van meerdere versies van een bibliotheek is noodzakelijk om uw clients te ondersteunen. Shim-bibliotheken vertalen oude naar nieuwe library-oproepen voordat ze doorsturen naar de nieuwe library.

Voorbeeld 1:

Linux-installaties worden normaal gesproken geleverd met een enkele Ruby-versie. Ruby ontwikkelaars moeten verschillende Ruby versies hebben op hun vele actieve projecten. Rbenv gebruikt shims om dit probleem op te lossen.

het uitvoeren van een Ruby commando in Linux betekent het controleren van het uitvoerbare bestand in het pad — dat het van links naar rechts doorzoekt. Het uitvoeren van het Ruby Commando rails serverbetekent dat Linux Rails, een Ruby uitvoerbaar bestand, in de eerste directory vindt en uitvoert.

Running Rails App Normal

Rbenv voegt eenshimsmap toe en laadt deze met shim scripts voordat het pad wordt ingesteld. Er is een shim script voor elke Ruby applicatie en het uitvoeren van een Ruby applicatie betekent nu het uitvoeren van de bijpassende shim script. Dus, rails draaien betekent het uitvoeren van het Rails script in de shims directory en niet de Rails toepassing in usr/local/bin. Het script werkt de vereiste Ruby-versie uit en voert vervolgens de bijbehorende applicatie uit, in dit geval Rails, onder die verwachte Ruby-versie.

Voorbeeld 2:

Microsoft gebruikt shims om de Windows-aanroepen van een toepassing te vervalsen. Wanneer een applicatie een systeemaanroep doet, gaat deze door de ‘adreslijst importeren’.

een toepassing die Windows aanroept vanuit IAT

u kunt de tabel wijzigen en de Windows-aanroep vervangen door een aanroep naar een shim. De shim in het voorbeeld is een ‘version-lie’ shim. De applicatie denkt dat het op een Windows 7-machine.

An application call redirected to shim from IAT

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.