Co to jest shim?

Shim jest małą biblioteką, która przechwytuje i zmienia wywołania do innej biblioteki, głównie w celu zapewnienia kompatybilności.

Utrzymywanie wielu wersji biblioteki jest niezbędne do obsługi klientów. Biblioteki podkładowe tłumaczą wywołania starej biblioteki na nowe przed przekazaniem ich do nowej biblioteki.

Przykład 1:

Instalacje systemu Linux zazwyczaj dostarczane są z jedną wersją Ruby. Deweloperzy Rubiego potrzebują mieć różne wersje Rubiego w swoich wielu aktywnych projektach. Rbenv używa podkładek, aby rozwiązać ten problem.

Wykonanie polecenia Ruby w Linuksie oznacza sprawdzenie, czy w ścieżce znajduje się plik wykonywalny, który jest przeszukiwany od lewej do prawej. Tak więc, uruchomienie komendy Ruby rails server oznacza, że Linux znajdzie i uruchomi Rails, plik wykonywalny Ruby, w pierwszym katalogu.

Running Rails App Normally

Rbenv dodaje katalog shims i ładuje go skryptami shim przed dodaniem ścieżki. Istnieje skrypt shim dla każdej aplikacji Rubiego i uruchomienie aplikacji Rubiego oznacza teraz uruchomienie odpowiadającego jej skryptu shim. Tak więc, uruchomienie rails oznacza wykonanie skryptu Rails w katalogu shims, a nie aplikacji Rails w usr/local/bin. Skrypt oblicza wymaganą wersję Ruby, a następnie uruchamia pasującą do niej aplikację, w tym przypadku Rails, pod tą oczekiwaną wersją Ruby.

Przykład 2:

Microsoft używa podkładek do podrabiania wywołań systemowych aplikacji w Windows. Kiedy aplikacja wywołuje system, przechodzi przez „Tablicę adresów importu”.

Aplikacja wywołująca Windows z IAT

Możesz zmienić tabelę i zastąpić wywołanie Windows wywołaniem podkładki. Podkładka w przykładzie jest podkładką typu „version-lie”. Aplikacja myśli, że znajduje się na maszynie z systemem Windows 7.

Wywołanie aplikacji przekierowane do podkładki z IAT

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.