|
Usulni amalga oshirish
|
Sana | 20.12.2023 | Hajmi | 186,92 Kb. | | #124894 |
Bog'liq Kenjayev
arxitekturasi bilan ishlashda yaxshi bilim va tajribaga ega bo'lgan mutaxassis uchun ham bu vazifa ahamiyatsiz emas. Boshqa tomondan, tajovuzkor virtual protsessor arxitekturasining tavsifiga yoki foydalanilgan simulyatorni tashkil etish bo'yicha ma'lumotlarga kirish huquqiga ega emas. Yorilish narxi sezilarli darajada oshadi. Nima uchun yuqori nazariy samaradorlikni hisobga olgan holda, bu usul hali ham keng qo'llanilmaydi? Ko'rinib turibdiki, ikkita asosiy sababga ko'ra. Birinchidan, usul o'ziga xos xususiyatlarga ega, bu uning potentsial qo'llanilishi doirasini toraytiradi - bu quyida muhokama qilinadi. Ikkinchidan, va, ehtimol, bu yanada jiddiy sababdir, usulni amalga oshirishning murakkabligi (va shuning uchun narxi) juda yuqori. Agar biz yangi yaratilgan tizim haqida ma'lumotlarning chiqib ketishining fundamental ehtimolini hisobga olsak, bu darhol uning samarasizligi va devalvatsiyasiga olib keladi, nima uchun xavfsizlik dasturlarini ishlab chiqaruvchilar ushbu usulni amalga oshirishga shoshilmayotgani aniq bo'ladi. Ammo shuni ta'kidlash kerakki, ba'zi o'zgarishlar va cheklovlar bilan bu usul hali ham StarForce3, NeoGuard, VMProtect va boshqalar kabi eng yangi mahsulotlarda qo'llaniladi ... paydo bo'lgan ilovalar, hali ham zaif tomonlariga ega bo'lsa-da, usulning yuqori samaradorligini tasdiqlaydi.
Usulni amalga oshirish
Usulning kamchiliklaridan biri uni amalga oshirishning yuqori narxidir, ammo uni sezilarli darajada kamaytirish mumkin. Ushbu usulni amalga oshiradigan xavfsizlik tizimi yuqori darajadagi tildan kompilyatorga asoslangan bo'lishi mumkin. Har qanday kompilyatorda faqat bitta mashinaga bog'liq bosqich mavjud - kod ishlab chiqarish, qoida tariqasida, siz boshqa bosqichlarda bog'liqlikdan xalos bo'lishingiz mumkin. Agar kompilyator dastlab multiplatforma sifatida ishlab chiqilgan bo'lsa, u odatda boshqa maqsadli platformaga qayta konfiguratsiya jarayonini iloji boricha soddalashtiradi. Misol uchun, bunga maqsadli mashinaning o'ziga xos tavsifi asosida avtomatik ravishda kod generatorini yaratish orqali erishish mumkin. Bunday holda, ishlab chiquvchilar faqat platformani o'zgartirish uchun ushbu tavsifni o'zgartirishi kerak. Ammo sizda o'zingizning kompilyatoringiz bo'lmasa ham, siz erkin tarqatiladigan ochiq manbadan foydalanishingiz mumkin,
masalan, GCC. Va foydalanuvchining tavsiflangan himoya tizimi bilan ishlashini iloji boricha osonlashtirish uchun uni MSVC kabi mashhur ishlab chiqish muhitiga joylashtirish mexanizmlari bilan jihozlash mumkin. Bunday holda, bunday kompleksning ishlash sxemasi rasmda ko'rsatilganidek ko'rinishi mumkin. 1.
Guruch. 1. Dasturiy ta'minotni himoya qilish sxemasi
Shunga ko'ra, shu tarzda himoyalangan mahsulotning ishlashi rasmdagi diagramma bo'yicha davom etadi. 2.
Guruch. 2. Himoyalangan dasturiy mahsulotning sxemasi Kompilyatordan foydalanishning o'ziga xos xususiyatlari virtual protsessor
uchun bir qator maxsus talablarni qo'yadi, ammo ularning barchasini osongina
amalga oshirish mumkin. Bir nechta talablar mavjud - siz shunchaki virtual mashinaga, xotiraga nisbatan tashqi kirish imkoniyatini, shuningdek tashqi funktsiyalarni chaqirish qobiliyatini ta'minlashingiz kerak - bu himoyalangan va himoyalanmagan kodning o'zaro ta'siri uchun zarurdir. Aks holda, virtual protsessorning arxitekturasi butunlay o'zboshimchalik bilan bo'lishi mumkin va u qanchalik murakkab va original bo'lsa, himoya darajasi shunchalik yuqori bo'ladi.
Kompilyatorning o'zi, kod ishlab chiqarish bosqichini o'zgartirishdan tashqari, uning imkoniyatlarini olish uchun o'zgartirilishi kerak:
- Virtual protsessorga nisbatan ichki va tashqi xotiraga qo‘ng‘iroqlarni farqlash (jumladan, funksiya chaqiruvlari)
- Simulyator orqali himoyalangan funksiyani chaqirib, haqiqiy protsessorda
ishlaydigan har bir himoyalangan funksiya uchun qobiq deb ataladigan narsani yarating. Oxirgi imkoniyat batafsilroq tavsiflangan bo'lishi kerak. Shakldagi
diagrammada aks ettirilganidek. 2, himoyalangan funktsiyalarning funksionalligi simulyatorni chaqirish orqali amalga oshiriladi, bu himoyalangan funktsiyalardan qaysi biri talqin qilinishi kerakligini ko'rsatadi. Biroq, bundan oldin himoyalangan funksiya uchun parametrlarni tayyorlaydigan maxsus kodni bajarish kerak - ularni virtual protsessor arxitekturasiga mos keladigan tarzda haqiqiy registrlar va xotiradan virtualga "ko'chirish". Bularning barchasi bizning kompilyatorimiz tomonidan yaratilgan maxsus funktsiyalar - "qobiqlar" tomonidan boshqariladi. Chig'anoqlar, o'z navbatida, virtual registrlar va xotiraga kirish uchun maxsus simulyator funktsiyalaridan foydalanadi. Odatda, bizning kompilyatorimiz yuqori darajadagi o'ramlarni ishlab chiqaradi, bu esa, o'z navbatida, foydalanuvchi tomonidan o'z loyihasining himoyalanmagan qismini qurish uchun foydalanadigan
qilib, rasmda
standart kompilyator tomonidan kompilyatsiya qilinadi. Shunday himoyalanmagan moduldan himoyalangan funktsiyaga qo'ng'iroq ko'rsatilgandek ko'rinishi mumkin. 3.
Guruch. 3. Himoyalangan funksiyani chaqirish sxemasi
Albatta, virtual protsessor usulini o'ziga xos tarzda amalga oshirish tavsiflanganidan biroz farq qilishi mumkin, shuningdek, u bilan himoyalangan
|
| |