- Podloške u Windows Oni su međuslojevi koji modificiraju API pozive, omogućavajući starim aplikacijama da ispravno rade u novima. operativni sistemi.
- Microsoft koristi Shims u kompletu za kompatibilnost aplikacija (ACT) za simuliranje naslijeđenih okruženja i rješavanje problema s kompatibilnošću bez mijenjanja originalnog softvera.
- En programiranjeŠimovi se također primjenjuju za jedinično testiranje pomoću alata poput Microsoft Fakes, presrećući pozive metoda kako bi se osigurali konzistentni rezultati.
- Iako korisni za kompatibilnost, Shims se mogu iskoristiti u zlonamjerne svrhe, omogućavajući DLL injekcije ili skrivene eskalacije privilegija ako se ne upravljaju pravilno.
Ako ste ikada pokušali pokrenuti stariju aplikaciju na novijoj verziji Windowsa, vjerovatno ste naišli na probleme s kompatibilnošću. Mnogi korisnici to ne znaju, ali iza tih magičnih rješenja koja Windows nudi kako bi stariji programi proradili, stoje tzv. PodloškeIako možda zvuči kao tehnički žargon, ovi mali elementi igraju ogromnu ulogu unutar Microsoftovog ekosistema kompatibilnosti.
U ovom članku ćemo objasniti Šta su Shim-ovi u Windowsu?, kako se koriste, različiti scenariji u kojima dolaze do izražaja - i legitimno i zlonamjerno - i njihova važnost u razvojnim, testnim i IT sigurnosnim okruženjima. Ako ste zainteresirani za detaljno funkcionisanje Windowsa ili rad sa starijim aplikacijama, ovaj članak je za vas.
Šta je Shim u računarstvu?
U programiranju, a Šim To je sloj koda koji presreće pozive API-ju kako bi modificirao njegovo ponašanje bez mijenjanja originalnog koda aplikacije ili API-ja. Ova tehnika se obično koristi kako bi se osigurala kompatibilnost između verzija softvera ili za privremenu i kontroliranu promjenu funkcionalnosti.
Šimovi mogu presresti, izmijeniti ili preusmjeriti pozivNa primjer, ako aplikacija očekuje funkciju koja više ne postoji u novoj verziji operativnog sistema, Shim može uhvatiti taj poziv i preusmjeriti ga na drugu kompatibilnu funkciju. Argumenti se također mogu modificirati, ili čak simulirati odgovor.
Ovaj koncept se široko koristi u raznim oblastima, od preglednika koji implementiraju nove funkcije za starije verzije putem polyfillova, do mrežnih okruženja i operativnih sistema poput Windowsa koji trebaju održavati aplikacije iz prethodnih godina u radu bez grešaka.
Korištenje Shims-ova na Windowsu: Kompatibilnost unatrag

Microsoft je zvanično implementirao Shims unutar Komplet alata za kompatibilnost aplikacija (ACT), skup alata dizajniranih za rješavanje problema kompatibilnosti u modernim verzijama Windowsa. Ova funkcionalnost je ključna kada je u pitanju aplikacije koje su dizajnirane za starije verzije sistema i koji nisu ažurirani sa el tiempo.
Jedna od najmoćnijih opcija unutar ACT-a je mogućnost primjene "verzija laže"Ova vrsta Shima vara aplikaciju da misli da radi na Windows XP-u, na primjer, kada zapravo radi na Windowsu 10 ili 11. To se postiže presretanjem sistemskih poziva povezanih s verzijom operativnog sistema i manipulisanje vrijednostima koje se vraćaju.
Praktičan primjer korištenja podložnih pločica s ACT-om
Neki programi vrše vrlo stroge provjere broja verzije operativnog sistema prije instalacije. Na primjer, aplikacija dizajnirana posebno za Windows XP može provjeriti da li sistem vraća verziju 5.1 i, ako ne, blokirati instalaciju. U tim slučajevima, Shim može presresti poziv funkcije Sistemsko.Okruženje.Verzija.OS-a i vraćaju vrijednosti 5.1, zbog čega program misli da radi na XP-u.
Za primjenu ove vrste korekcije koristi se komponenta Administrator kompatibilnosti ACT-a, gdje je podložka odabrana kao WinXPSP3VersionLie i naznačeno je da se primjenjuje na sve module aplikacije.
Kako instalirati podloške
Nakon što se Shim konfigurira iz ACT-a, on se sprema kao .sdb (Shim Database) datoteka. Ova datoteka se može instalirati na sistem kako bi je Windows koristio svaki put kada se pokrene odgovarajuća aplikacija. Operativni sistem detektuje prisustvo Shim-a i modificira njegovo ponašanje tokom izvođenja..
To omogućava aplikacije koje bi inače bile nekompatibilne može se pokrenuti bez grešaka, bez potrebe za modifikacijama originalne izvršne datoteke ili eksternih emulatora.
Šimovi u razvojnim okruženjima: jedinično testiranje u Visual Studiju
Još jedno područje gdje Šimovi imaju relevantnu ulogu je u jedinični testoviU razvojnim okruženjima poput Visual Studija, ispravke kompatibilnosti (podložak) Koriste se za izolovanje dijelova koda tokom testiranja. Ovo je dio okvira. Microsoftove lažne verzije, što uključuje oboje stubs como podlošci.
Šimovi vam omogućavaju da presretnete pozive metoda u sklopovima koji nisu dio vašeg vlastitog rješenja, kao što su sistemske ili biblioteke trećih strana. Njihova svrha je preusmjeri izvršenje na prilagođeni testni kod, čime se osigurava da su testovi predvidljivi i da ne zavise od vanjskih faktora kao što su datotečni sistem, mreža ili sistemsko vrijeme.
Praktičan primjer sa System.IO
Pretpostavimo da imate metodu koja poziva System.IO.File.ReadAllLinesU jediničnom testu, ne želite da on zapravo čita s diska, već da vraća fiksni skup podataka. Pomoću Shim-a možete presresti taj poziv i vratiti, na primjer, {"Hello", "World", "Shims"}.
To se postiže pomoću datoteke Krivotvorine odgovarajući, koji se automatski generira iz testnog projekta. Unutar Shim-a, originalni poziv se zamjenjuje prilagođenom funkcijom.
Vrste podržanih metoda
Lažne podložne pločice mogu se primijeniti na:
- Statičke metodePresretaju se i s njima se povezuje delegat koji definira novo ponašanje.
- Metode instance (sve instance)Koristite klasu AllInstances za presretanje metode na bilo kojem objektu te klase.
- Metode instance za jednu instancuShim objekt se kreira vezan za određenu instancu.
- GraditeljiIzmijenjene instance dotičnog objekta mogu biti presretnute i vraćene.
Ograničenja podložnih pločica u testiranju
Ne može se sve presresti pomoću Shimsa. Na primjer. ne može se koristiti u određenim osnovnim .NET klasama kao što je mscorlib u nekim okruženjima. Također, Ne preporučuje se paralelno izvođenje testova pri korištenju Shimova, jer oni utiču na cijeli AppDomain i nemaju afinitet niti, što može dovesti do nedosljednih rezultata.
Podloške kao ofanzivni alat za sajber sigurnost
Šimovi su također privukli pažnju zlonamjernih aktera. Kao legitiman način presretanja i modificiranja sistemskih procesa, mogu se koristiti za ubrizgati zlonamjerni kod u sigurnim procesima ili čak za eskalirati privilegije.
Tehnika poznata kao Napad podmetanjem Sastoji se od kreiranja prilagođene baze podataka kompatibilnosti koja zakrpa izvršnu datoteku ili DLL u boot, što omogućava pokretanje neovlaštenog koda bez ponovnog pokretanja sistema. To se može postići korištenjem istog .sdb datotečnog sistema koji koristi Microsoft, ali u zlonamjerne svrhe.
Alat Shims parser baze podataka omogućava sigurnosnim istraživačima da analiziraju ove .sdb datoteke i otkriju da li postoje pokušaji Hot patching, DLL injekcija ili promjene u privilegijama izvršavanja.
Kako se ovi napadi otkrivaju
Neki ključni pokazatelji koje treba tražiti su:
- Instaliranje Shim baze podataka izvan očekivanih direktorija
- Neobični datumi modifikacija
- Sumnjivi obrasci podudaranja/prepisivanja unutar bajtova ciljnih aplikacija
Ove manipulacije se pohranjuju u Windows registru i mogu trajati čak i nakon ponovnog pokretanja sistema. Stoga je neophodno pratiti sve sumnjive promjene .sdb datoteka prisutnih u registru. \Windows\AppPatch\sysmain.sdb ili njihove ekvivalente.
Koja je razlika između shim-a, wrapper-a i stup-a?
U razvoju softvera postoji nekoliko sličnih koncepata koji se lako mogu pomiješati:
- ŠimPresreće i modificira API pozive, prepisujući ili preusmjeravajući njihovo ponašanje bez mijenjanja originalnog koda.
- omot: enkapsulira drugu funkciju ili objekt, dodajući funkcionalnost bez mijenjanja originalnog objekta.
- Stub: pojednostavljena zamjena stvarne funkcije, obično se koristi tokom testiranja za simuliranje ponašanja.
Dok se Wrappers i Stubovi eksplicitno kreiraju u kodu, Shimovi rade na nižem nivou, mijenjanje ponašanja tokom izvođenja, čak i na kompajliranim bibliotekama ili samom operativnom sistemu.
Ovi elementi su ključni za razumijevanje kako Windows održava kompatibilnost, razvija testiranje, a također i kako ga zlonamjerni akteri mogu iskoristiti. Pravilno razumijevanje njihovih razlika i funkcija ključno je za iskorištavanje njihovih prednosti i zaštitu od njihovih rizika.
Strastveni pisac o svijetu bajtova i tehnologije općenito. Volim dijeliti svoje znanje kroz pisanje, a to je ono što ću raditi na ovom blogu, pokazivati vam sve najzanimljivije stvari o gadžetima, softveru, hardveru, tehnološkim trendovima i još mnogo toga. Moj cilj je pomoći vam da se krećete u digitalnom svijetu na jednostavan i zabavan način.
