Арифметик амаллар.
х86 ассембрлаш тили кўплаб содда арифметик
амалларни қўллаб қуватлайди.
1
Кўрсатмалар
Изоҳ
sub eax, 0x10
EAX регистор қийматидан 0х10 ни олиб ташлаш.
add eax, ebx
EBX қийматига EAX қийматини қўшиш ва EAX га ўзлаштириш.
inc edx
EDX регистор қийматини 1 га ошириш.
dec ecx
ECX регистор қийматини 1 га камайтириш.
1
Michael Sikorski, Andrew Honig. Practical malware analysis. 74 – с.
III. НАЗАРИЙ МАТЕРИАЛЛАР
106
mul 0x50
EAX регистор қиймати 0х50 га кўпайтирилади. 64 битли натижа
EDX:EAX регисторларига сақланади. 32 битли катта қисми EDX га ва
кичик 32 битли қисм EAX га сақланади.
div 0x75
EDX:EAX 64 битли регистор қийматлари 0х75 га бўлинади ва натижа
EAX га ва қолдиқ EDX га сақланади.
xor eax, eax
EAX регистор қийматини тозалаш
or eax, 0x7575
EAX регистори қийматига 0х7575 ни мантиқий қўшиш амалида қўшиш
shl eax, 2
EAX регистор қийматини 2 бит чапга силжитиш.
shr eax, 2
EAX регистор қийматини 2 бит ўнга силжитиш.
ror bl, 2
Bl регистор қийматини ўнга циклик 2 бит айлантириш.
rol bl, 2
Bl регистор қийматини чапга циклик 2 бит айлантириш.
nop
Ҳеч қандай амални бажармайди. Кейинги кўрсатмага ўтилади.
Стек.
Асосий хотиранинг қисми, стекда функцияга тегишли бўлган
ўзгарувчилар ва параметрлар сақланади. Стекда амалга ошириладиган
кўрсатмалар,
push, pop, call, leave, enter ва ret
бўлиши мумкин.
Push
кўрсаткичи стекдаги регисторни жойлашувини қуйи хотира
қисмига, яъни тезроқ бажариш учун ўзгартиради.
Pop
кўрсаткичи стекдаги регисторни жойлашувини юқори хотира
қисмига, яъни кейинроқ бажариш учун ўзгартиради.
Call
кўрсаткичи кейинги стекни чақириш учун фойдаланилади.
Leave
кўрсаткичи ESP қийматини EBP га ўрнатади ва кейин EBP ни
юқори хотира қисмига ўтказади, яъни,
mov( ebp, esp ); pop( ebp );
Enter
кўрсаткичи қуйидаги кўрсаткичлар кетма-кетлигига тенг:
push
ebp; mov ebp, esp.
Шартлар.
Барча тилларда бўлгани каби ассембрлаш тилида ҳам
шартлар мавжуд бўлиб, асосан иккита
test
ва
cmp
кўрсаткичидан кенг
фойдаланилади.
Test
кўрсаткичи
and
кўрсаткичига ўхшаш бўлиб, бундан
ташқари операндлар кўрсаткич томонидан ўзгартирилмайди.
Test
кўрсаткичи
фақат байроқни ўрнатиш учун фойдаланилади. Одатда
test
кўрсаткичидан
сўнг ZF байроғи ўрнатилади.
Test
кўрсаткичи бир операнд доирасида операнд
қийматини
NULL
тенглигини текширишда фойдаланилади. Масалан,
test
eax,eax
кўрсаткичи
eax AND eax
кўрсаткичига тенг бўлиб, натижага кўра ZF
байроқ ўрнатилади.
Cmp
кўрсаткичи иккинчи кенг фойдаланиладиган шартли белги бўлиб,
вазифаси жихатидан
sub
кўрсаткичига тенгдир. Бу кўрсаткич ҳам операндга
таъсир қилмай фақт байроқ ҳолатини ўзгартириш учун ишлатилади. Бу шарт
натижасида ZF ва CF байроқлар ўрнатилиши мумкин. Қуйидаги жадвалда
cmp
кўрсаткичи билан боғлиқ бўлган мисоллар берилган:
III. НАЗАРИЙ МАТЕРИАЛЛАР
Do'stlaringiz bilan baham: |