Dynamiczne tłumaczenie binarne

https://chacker.pl/

Dynamiczne tłumaczenie binarne (DBT) to technika używana do przepisania kodu binarnego celu na natywny kod odpowiedniego hosta. Jest powszechnie używana przez emulatory w połączeniu z interpretacją binarną lub jako jej zamiennik (gdzie każda instrukcja jest interpretowana przez oprogramowanie) w celu osiągnięcia szybszych prędkości wykonywania. Instrukcje docelowe są tłumaczone w locie, jak w kompilatorze JIT. DBT może być złożone i wymaga specjalnego traktowania przypadków skrajnych, takich jak samomodyfikujący się kod. DBT można używać do obejścia problemów spowodowanych przez nieuprzywilejowane, wrażliwe instrukcje. W przeciwieństwie do emulatorów, w których wykonywany jest złożony, międzyarchitekturowy typ tłumaczenia, stosowana jest prostsza, lekka translacja x86-x86, w której zachowana jest większość oryginalnych instrukcji. Modyfikacje są wprowadzane tylko do wrażliwych nieuprzywilejowanych instrukcji, adresowania względnego i instrukcji przepływu sterowania. Konieczność wykonania modyfikacji w dwóch ostatnich jest bezpośrednią konsekwencją efektów ubocznych w rozmiarze kodu spowodowanych przez sam proces tłumaczenia. Instrukcje wrażliwe są tłumaczone na kod, który symuluje wykonanie oryginalnej instrukcji z punktu widzenia celu. Implementatorzy VMM zdali sobie sprawę, że mogą rozszerzyć użycie DBT, aby tłumaczyć uprzywilejowane instrukcje, aby uniknąć nadmiernych pułapek i poprawić wydajność. Koncepcja została dodatkowo rozszerzona, aby wykonywać adaptacyjne tłumaczenie binarne”13 instrukcji, które będą przechwytywać podczas uzyskiwania dostępu do zasobów systemowych (na przykład aktualizacje tabeli stron, gdy używana jest pamięć cienia). Nastąpiły inne ulepszenia, takie jak tłumaczenie klastrów instrukcji powodujących pułapki

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *