#Syscall #Linux_Kernel x64 (HelloWorld)
در بحث طراحی اکسپلویت الزاماتی از قبیل فهم چگونگی ارتباط درایورها در کرنل برای ما بسیار حیاطی و محسوس هستش, از همین روی در قالب یک مثال بصورت خلاصه وار چگونگی پیاده سازی تماس های syscall یا system call به کرنل رو تشریح خواهم کرد,

برای مثال ما یک سوال از کاربر پرسیده و جواب او را در صفحه چاپ خواهیم کرد, خب برای اینکار نیازه که به syscall های sys_read و sys_write و sys_exit اشاره کرد, مورد بعدی اینه که هر system call ثبات هایی رو بعنوان input های خودش تعیین میکنه که در syscall های مورد استفاده ما به این صورت خواهد بود

ثبات rax به منظور دریافت آیدی syscall هستش
ثبات rdi به منظور دریافت وضعیت input/output بودن syscall هستش
ثبات rsi به منظور دریافت آدرس بافری که میبایست write یا read بشه
و نهایتا ثبات rdx به منظور طول کاراکترهای منظور شده در rsi که اشاره به define byte مربوطه ما داره رو به syscall اعلام خواهد کرد

همانطور که در تصویر پست توضیح دادم (البته بدلیل استفاده از کلمات english در توضیحات فارسی, جمله کمی به هم ریخته) syscall ها مرتب فراخوانی شده اند.

@Unk9vvN