Мураккаб статик таҳлил. Содда статик ва динамик таҳлиллаш усуллари фойдаланишда қулай саналсада, зараркунандан дастурлар ҳақида тўлиқ маълумот олишга имкон бермайди. Шунинг учун амалда бу усулларнинг кенгайтирилган шакли кенг фойдаланилади. Мураккаб статик таҳлилнинг моҳияти тескари инжинерлик хоссасидан фойдаланган ҳолда, ЗД ни дисассембрлаш амали орқали таҳлил қилишга асосланган. Лабаратория ишининг назарий қисмида х86 архитектураси ва унда дизассембрлаш амали билан танишилиб чиқилади. 1
ЗД яратишда юқорида дастурлаш тилидан фойдаланилади ва машина кодини ҳосил қилишда компиляторлардан фойдаланилади. Дизассембрлашда машина кодидан ассемблер код ҳосил қилинади ва уни таҳлиллаш орқали ЗД ҳақида хулоса чиқарилади. Қуйида ушбу жараѐн келтирилган:
9-расм.
5.9 - расмда келтирилган соддалаштирилган модел қуйида келтирилган олти турли даражалардан иборат:
Қурилма (Hardware). Қурилма даражаси физик сатҳ бўлиб, электрик схемалардан иборат ва бу қурилмаларда мантиқий амаллар, XOR, AND, OR ва NOT бажарилади. Сабаби, физик жихоз ѐки қурилмани дастурий томондан бошқариш жуда қийин.
Микрокодлар (Microcode). Микрокодлар сатҳи прошивка (firmware) сатҳи деб ҳам аталади. Микрокодлар маълум аниқланган жихозларги мўлжалланган бўлади. Уларнинг асосий вазифаси юқори машина тилида ѐзилганкодларни қурилмага мослаштириб бериш.
Машина коди (Machine code). Машина коди ўн олтилик саноқ тизимида ѐзилган рақамлардан иборат бўлиб, процессорни нима иш бажаришини белгилайди. Машина коди юқори дастурлаш тилида ѐзилган кодларни компиляция қилиш жараѐнида ҳосил қилинади.
Қуйи даражали дастурлаш тиллари (Low-level languages). Қуйи
даражали дастурлаш тиллари инсон ўқий оладиган компьютер архитектураси кетма-кетлиги ҳолати бўлиб, кенг тарқалган қуйи даражали дастурлаш тили бу – ассемблер тилидир. ЗДларни машина коди орқали таҳлил этиш инсон учун мураккаб саналгинлиги сабабли, ассемблер тилида ѐзилган кодларни таҳлил этиш орқали ЗД ҳақидамаълумотлар олинади.
Юқори даражали дастурлаш тиллари (High-level languages). Кўплаб дастурчилар юқори даражали дастурлаш тилларидан фойдаланган ҳолда ўз иловаларини яратадилар. Юқори даражали дастурлаш тиллари машина тилидан узоқ бўлиб, инсон тушиниши учун анча осондир. Юқори дастурлаш тилларига С,С++ ва бошқаларни олиш мумкин. Бу дастурлаш тилида ѐзилган кодлар компиляторлар орқали машина кодига айлантирилади.
Изоҳлаш тиллари (Interpreted languages). Изоҳлаш тиллари энг юқори даражали тиллар ҳисобланади. Кўплаб дастурчилар айнан шу тиллардан, С#, Perl, .Net ва Javaфойдаланадилар. Бу тиллардан ѐзилган кодлар машина тилига компиляция этилмайди, балки байткодларда ўтказилади. Байткодлар дастурий кодларни оралиқ ифодаланиши бўлиб, интерпритаторлар орқали машина кодига айлантирилади.
ЗД доимий хотирада машина тилининг бинар шаклида сақланади. 4.1расмда келтирилган схемага асосан, ЗД дизассембрланганда, бинар ҳолатдаги ЗД кодини чиқишда ассемблер тилига ўтказиш амалга оширилади.
Ассемблер тили бир нечта тиллар тўплами бўлиб, ҳар бир тил айнан бир микропроцессор (x86, x64, SPARC, PowerPC, MIPS, ва ARM) учун мўлжалланган бўлади.
Ҳозирда кенг тарқалган шахсий компьютерлардаги архитектура бу х86 бўлиб, кейинчалик яратилган AMD64 ѐки Intel 64 архитектуралари ҳам х86 ни қўллаб қувватлайди. Шунинг учун аксарият, яратувчилар х86 архитектурасига асосланган ЗД дастурларни яратадилар.
Do'stlaringiz bilan baham: |