Ce este un shim?

Un shim este o mică bibliotecă care interceptează și modifică apelurile către o altă bibliotecă, în principal pentru a ajuta la compatibilitate.

Menținerea mai multor versiuni ale unei biblioteci este necesară pentru a oferi suport clienților dumneavoastră. Bibliotecile shim traduc apelurile de la biblioteca veche la cea nouă înainte de a le redirecționa către noua bibliotecă.

Exemplu 1:

Instalările Linux vin în mod normal cu o singură versiune Ruby. Dezvoltatorii Ruby trebuie să aibă versiuni Ruby diferite pe numeroasele lor proiecte active. Rbenv folosește shims pentru a rezolva această problemă.

Executarea unei comenzi Ruby în Linux înseamnă verificarea executabilului în calea de acces – pe care o caută de la stânga la dreapta. Astfel, rularea comenzii Ruby rails serverînseamnă că Linux găsește și rulează Rails, un executabil Ruby, în primul director.

Rularea aplicației Rails în mod normal

Rbenv adaugă un director shims și îl încarcă cu scripturi shim înainte de a preda calea. Există un script shim pentru fiecare aplicație Ruby și rularea unei aplicații Ruby înseamnă acum rularea scriptului shim corespunzător. Astfel, rularea aplicației Rails înseamnă executarea scriptului Rails din directorul shims și nu a aplicației Rails din usr/local/bin. Scenariul calculează versiunea Ruby necesară și apoi execută aplicația corespunzătoare, în acest caz Rails, sub acea versiune Ruby așteptată.

Exemplu 2:

Microsoft folosește shims pentru a falsifica apelurile Windows ale unei aplicații. Atunci când o aplicație face un apel de sistem, aceasta trece prin „Import Address Table”.

O aplicație care apelează în Windows din IAT

Puteți modifica tabelul și înlocui apelul Windows cu un apel către un shim. Shim-ul din exemplu este un shim „version-lie”. Aplicația crede că se află pe o mașină Windows 7.

Un apel de aplicație redirecționat către shim din IAT

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.