Uploaded by Lazizbek Irisov

12-amaliy ish

advertisement
Antiotladka choralarini tahlili. Mashina kodi
trassirovkasi.
O’rganib chiqilishi lozim bo’lgan savollar:
1. Antiotladka choralarini tahlili
2. Mashina kodi trassirovkasi
Javoblar:
1. Biz dasturiy mahsulotimizni ommaga namoyish etganda, dasturiy
mahsulotimizning litsenzion ruxsatnomalarni yozishga odatlanganmiz: “Dasturiy
mahsulotni kod qismiga o’tish, dekompilatsiya yoki disassimbleratsiya qilish
taqiqlanadi”. Ko’pgina hollarda bu so’zlar yaxshi himoya bermay qo’yadi va bu
innovatsiyamizni shunga o’xshagan hurujlar va raqobatbardoshliligini ta’minlashda
texnik usullardan foydalanish talab qilinadi.
Komputer himoyasi uchun antiotladkaning 5 usuli:
1.
Otladchikning borligini tekshiruvchi o’rnatilgan funksiyalar
Windows operatsion tizimi otladkadan himoyalanish uchun bir nechta oddiy
tayyor instrumentlarni taqdim etadi. Antiotladkaning oddiy texnikasi o’ziga
IsDebuggerPresent funksiyasini chaqirish xususiyatiga ega. Agar otladka qilayotgan
shaxs otladkani foydalanuvchi rejimida amalga oshirayotgan bo’lsa, bu funksiya
“TRUE” qiymat qaytaradi. Bu funksiya protsess yoki PEB(Process environment
Block)ning operatsion blokiga yuklanadi, va unda qisman BeingDebugged maydoni
bor. Bu faktdan foydalanib, DLL inyeksiyadan foydalanib, tekshirish jarayonidan
oldin BeingDebuggedning qiymatini 0ga tenglashtirib qo’yish mumkin. Bunday
tekshiruvlarni amalga oshirish uchun main funksiyasi yaxshi variant hisoblanmaydi,
bu funksiya daisassembler jarayonida birinchi bo’lib tekshiriladigan funksiya
hisoblanadi.
2.
Potoklarni yashirish
Windows 2000 versiyadan boshlab NtSetInformationThread funksiyasi
ThreadHideDebugger nomli yangi flagga ega bo’ldi. Bu usul Windows OT oilasiga
mansub operatsion tizimlar uchun antiotladkaning samarali usuliga aylandi. Bu flagi
mavjud bo’lgan har bir potok otladka protsessiga o’zi haqida ma’lumot jo’natmay
qo’yadi, xususan har bir to’xtalishlar nuqtalari haqida ham, shu qatorda u o’zini
ixtiyoriy bir otladchikdan yashiradi. Asosiy potok uchun ThreadHideFromDebugger
dan foydalanish otladchikni protsessga ulanish jarayonini anchagina qiyinlashtiradi.
Windows Vista bu g’oyaning matiqiy davomini NtCreateThreadEx funksiyasi
ko’rinishida taqdim qildi. U o’zida CreateFlags parametrini olib,
THREAD_CREATE_FLAGS_HIDE_FROM_DEBUGGER flagini yoqadi. Bu
flagi yoqilgan protsess o’zini otladchikdan berkitadi.
3.
Flaglarni tekshirish
Xatolarni tuzatish tizimning turli tuzilmalarida va jarayonlarida turli xil
flaglarning qiymatini o'zgartirish orqali aniqlanishi mumkin.
Windows NT tizim o'zgarishini disk raskadrovka va kuzatib borish uchun
ishlatiladigan flaglar to'plami bilan NtGlobalFlag deb ataluvchi global o'zgaruvchini
o'z ichiga oladi. Yuqoridagi PEB tuzilishi NtGlobalFlagning o'z maydonini o'z
ichiga oladi. Disk raskadrovka paytida ushbu maydonning qiymati bir nechta
maxsus flaglarni belgilash bilan farq qiladi. Ushbu flaglarni tekshirish xatolarga yo'l
qo'yishni aniqlashga yordam beradi.
Bekor qilishni aniqlash uchun ishlatilishi mumkin bo'lgan flagning yana bir
tekshiruvi tuzoq bayrog'i (TF) tekshiruvidir. EFLAGS ro'yxatiga kiritilgan. TF1
bo'lsa, protsessor nosozlik jarayonini qo'llab-quvvatlaydigan yo'riqnomaning har bir
bajarilishidan keyin INT 01h ("bir qadam" istisno) hosil qiladi.
4.
To'xtash nuqtalarini aniqlash
Breakpoints har qanday disk raskadrovka jarayonining muhim qismidir va bir
marta aniqlangan bo'lsa, xatolarni tuzatuvchini bartaraf qilishimiz mumkin. Qaramaqarshi nuqtalarni aniqlashga asoslangan qarama-qarshi xatolarga qarshi taktika eng
past o'tish davriga aylandi.
Ikkita turdagi nuqtalar mavjud: dasturiy ta'minot va apparat.
Software breakpoints, kodni ichiga int 3h yo'riqnomasini in'ektsiyalash orqali
xato tuzatuvchisi tomonidan o'rnatiladi. Shunday qilib, xatolarni aniqlash usullari
mos keladigan funktsiyaning summasini hisoblash asosida amalga oshiriladi.
Bunday himoya bilan shug'ullanishning universal usuli yo'q - xaker kodni
hisoblash uchun javobgar bo'lgan va barcha tegishli o'zgaruvchilar qaytariladigan
qiymatlarini o'zgartirish uchun javobgar bo'lgan kodni topish kerak bo'ladi.
Apparatni to'xtatish nuqtalari maxsus disk raskadrovka registri yordamida
o'rnatiladi: DR0-DR7. Ularni qo'llash orqali, ishlab chiquvchi dasturni bajarish
jarayonini to'xtatishi va nosozliklarni boshqaruvchiga o'tkazishni boshqarishi
mumkin. Otladchikdan himoya rejimi bu registrlarni qiymatlarini tekshirish yoki
qiymatlarini tashlab yuborish orqali SetThreadContext funksiyasidan foydalanib
aktiv yo’lni tutishi mumkin.
5. Maxsus vaziyatni boshqarish: SEH
Strukturalangan istisnolarni qo'llash yoki SEH (Strukturalangan istisnolarni
qo'llash) ilovadan istisnolar haqida bildirishnomalar olish va ularni operatsion tizim
o'rniga ishlashga imkon beruvchi mexanizmdir. SEH ishlovchilariga ishora qiluvchi
ko'rsatmalar SEH ramkalari deb ataladi va ular to'plamda joylashgan. Agar istisno
tashlansa, u stack ustida birinchi Ssh tasmasi tomonidan ishlanadi. Agar u nima
qilish kerakligini bilmasa, u sistema ishlov beruvchisiga yetguncha, u suyakka
keyingi qatorga o'tadi va hokazo.
Dasturni disk raskadrovka paytida diskni tuzatuvchi int 3 soatdan keyin
nazoratni ushlab turishi kerak, aks holda nazorat SEH ishlovchilariga o'tkaziladi. Bu
disk raskadrovka vositalaridan himoya qilish uchun ishlatilishi mumkin:
o'zingizning SEH ishlovchilaringizni yaratishingiz va uni yuqori qismiga
qo'yishingiz va keyin int 3h hosil qilishingiz mumkin. Agar operatorimiz nazorat
qilishni boshlasa, xato tuzatuvchi hozirda ishlamaydi, aks holda biz xatolarni
tuzatishga qarshi harakat qila olamiz - biz xatolarni aniqlovchi topdik.
2.Trassirovka mexanizmini ishga tushirish
Kuzatuv mexanizmini ishga tushirishning asosiy talabi Trace Modeni Trace
Modega Qualify qualifier bo’lgan yoki bo'lmagan holda o'rnatish. Kuzatuv rejimi
foydalanuvchi dasturini kuzatib borish variantlarini aniqlaydi va Qualify qualifier iz
holatini belgilaydi.
Tracerning quyidagicha rejimlari mavjud:
 Oddiy (Normal)
Standart rejim, barcha foydalanuvchi dasturlari uchun trassirovka rejimini
yoqadi.
 Asosiy dastur trassirovkasi (Trace Main)
O'chirish ishlovchilaridan tashqari butun dastur uchun trassirovka rejimini
yoqadi.
 Uzluksiz ishlovlar trassirovkasi (Trace INT)
Chiqarish operatorlari uchun iz rejimini yoqadi.
Qualify qualifikatorlariga mos ravishda, tracer qaysi ko'rsatmalarni va tegishli
nosozliklarni tuzatish dasturini emulyatsiya qilish jarayonida kuzatuvchi tamponida
yozilishini aniqlaydi. Qabul qilinadigan ma'lumotni ko'rsatib beradigan yo'riqnoma
tanlangan saralash qatnashchilarining shartlarini qondirish bilan belgilanadi.
Saralashning formati kesish nuqtalarining formatiga o'xshaydi. Agar barcha
dasturlarni yozmoqchi bo'lsangiz, saralash bosqichlari qo'llanilmaydi (Qualify
parametrini o'rnatmang). E'tiborni bekor qilish sukut bo'yicha o'chiriladi. Nazorat
ma'lumotlarini qayd etish shartlarini belgilaydigan kuzatuv rejimi saralashlaridan
farqli o'laroq, Trigger Mode va Forward Rate izni to'xtatish shartini belgilaydi.
Trassirovkani ishlatish va to’xtatish rejimini sozlash
 Debug menyusidagi Trace buyrug'ini tanlang.
 Bunday holda, 1-rasmda ko'rsatilgandek, trassirovka dialog oynasi
ko'rinishi kerak.
 Kuzatuv tartibi ochiladigan ro'yxatida kerakli trassirovka rejimini
tanlang
 OK tugmasini bosing.
Triggerlash rejimini o'rnatish uchun
 Debug menyusidagi Trace buyrug'ini tanlang.
 Bunday holda, 1-rsamda ko'rsatilgandek, izdoshlari aloqa qutisi
ko'rinishi kerak.
 Trigger Mode (Ishga tushirish tartibi) oynasidagi kerakli trigger
rejimini tanlang
 OK tugmasini bosing.
Shartlarni aniqlash A/shartlari B
 Debug menyusidagi Trace buyrug'ini tanlang.
 Bunday holda, shakl 1-rasmda ko'rsatilgandek, trassirovka muloqot
oynasi ko'rinishi kerak.
 Shart A/sharti Bni tanlang (Condition A/Condition B)
 Set Condition ni bosing.
 Qualifikatorlari o’rnatish uchun muloqot oynasi 2-rasmda ko’rsatilgan.
Download