Asemblyda tizim chaqiruvlari (system calls)
Mualif :) Cyber securty enginer - xsiuns
Asemblyda tizim chaqiruvlari (system calls) operatsion tizim (OS) xizmatlariga murojaat qilish uchun ishlatiladi. Bu chaqiruvlar orqali fayllarni o'qish, yozish, jarayonlarni boshqarish va boshqa past darajadagi vazifalarni bajarish mumkin.
Quyida Linux operatsion tizimida x86 arxitekturasi uchun tizim chaqiruvini amalga oshirishning asosiy bosqichlari va kodi keltirilgan.
Bosqichlar:
Tizim chaqiruvining identifikatori (syscall number)
eax
registriga yuklanadi.Kerakli parametrlar boshqa registrlarga yuklanadi:
ebx
,ecx
,edx
,esi
,edi
, vaebp
registrlari parametrlarni qabul qiladi.
int 0x80
instruktsiyasi yordamida tizim chaqiruvi amalga oshiriladi.Natija (
return value
)eax
registriga qaytariladi.
Tizim chaqiruvlari uchun registrlar:
eax
Tizim chaqiruvi identifikatori
ebx
1-parametr
ecx
2-parametr
edx
3-parametr
esi
4-parametr
edi
5-parametr
ebp
6-parametr
Misol kodlar:
1 "Hello, World!" ni ekranga chiqarish
Bu misolda write()
tizim chaqiruvi yordamida ekranga matn chiqariladi.
2 Fayldan o'qish va ekranga chiqarish
Bu kodda open()
, read()
, write()
, va close()
tizim chaqiruvlari ishlatiladi.
Asosiy tizim chaqiruvlari ro'yxati (Linux):
sys_exit
1
Dasturdan chiqish
sys_write
4
Ma'lumot yozish
sys_read
3
Ma'lumot o'qish
sys_open
5
Faylni ochish
sys_close
6
Faylni yopish
Eslatma:
Ushbu kodlar 32-bit Linux tizimlarida ishlaydi. Agar siz 64-bit tizimda ishlayotgan bo'lsangiz,
int 0x80
o'rnigasyscall
instruktsiyasi, shuningdek, yangi registrlar (rdi
,rsi
,rdx
, va hokazo) ishlatiladi.
Bu yerda qisqacha takrorlab oldik.
Last updated