SlideShare a Scribd company logo
1 of 24
LOGO
Linux System Call
‫دانشجو‬:‫استاد‬ ‫محمودی‬‫محمدجواد‬:‫صالحی‬ ‫امین‬‫مهندس‬
‫شبکه‬ ‫عامل‬‫سیستم‬‫واحد‬
‫پاییز‬‫ر‬‫پو‬‫ی‬ ‫شمس‬‫شهید‬ ‫دانشکده‬92
-‫سیستم‬‫عامل‬‫می‬‫تواند‬‫به‬‫سخت‬‫افزار‬‫ی‬ ‫دسترس‬‫داشته‬‫باشد‬‫ولی‬‫برنامه‬‫بردی‬‫ر‬‫کا‬‫نم‬‫ی‬‫تواند‬‫و‬‫با‬
‫استفاده‬‫از‬system call‫خواست‬‫ر‬‫د‬‫یس‬‫و‬‫سر‬‫ی‬ ‫خاص‬‫ا‬‫ر‬‫از‬‫سیستم‬‫عامل‬‫می‬‫کند‬‫و‬‫این‬
‫فرایند‬‫بخاطر‬‫حفاظت‬‫هسته‬‫از‬‫ی‬ ‫دسترس‬‫بر‬‫ر‬‫کا‬‫می‬‫باشد؛‬
-System call‫وقفه‬‫نرم‬‫ی‬‫ار‬‫ز‬‫اف‬‫است‬‫که‬‫نامه‬‫ر‬‫ب‬‫بردی‬‫ر‬‫کا‬‫با‬‫از‬‫آن‬‫استفاده‬
‫می‬‫کند؛‬
2/24SystemCall in Linux
3/24SystemCall in Linux
4/24SystemCall in Linux
-System call‫در‬‫الیه‬‫هسته‬‫انجام‬‫می‬‫شود؛‬
-‫هر‬system call‫ه‬‫ر‬‫شما‬‫مختص‬‫به‬‫خود‬‫د؛‬‫ر‬‫دا‬
-‫وقتی‬‫فرآیند‬‫یک‬‫برنامه‬‫بردی‬‫ر‬‫کا‬‫خواست‬‫ر‬‫د‬‫یک‬‫یس‬‫و‬‫سر‬‫ا‬‫ر‬‫از‬‫هسته‬‫می‬‫دهد‬‫نوع‬‫وقفه‬‫از‬‫ی‬‫و‬‫ر‬‫ل‬‫جدو‬IDT
‫تشخیص‬‫داده‬‫می‬‫شود‬‫؛‬
-‫در‬Linux‫فراخوانی‬‫سیستم‬‫توسط‬‫کد‬‫اسمبلی‬INT $0x80‫انجام‬‫می‬‫شود؛‬
-‫همچنین‬‫ه‬‫ر‬‫شما‬system call(‫که‬‫یک‬‫آرگومان‬‫است‬)‫ا‬‫ر‬‫به‬‫ثبات‬eax‫پاس‬‫می‬‫دهد‬.‫یک‬API‫ممکن‬‫است‬
‫چند‬system call‫تولید‬‫کند‬‫بنابراین‬‫برای‬‫مدیریت‬‫آن‬‫ها‬‫آرگومان‬‫هایی‬‫هم‬‫فرستاده‬‫می‬‫شود‬‫که‬‫در‬‫ثب‬‫ات‬‫های‬
ebx‫و‬ecx‫ار‬‫ر‬‫ق‬‫می‬‫گیرد‬.
5/24SystemCall in Linux
6/24SystemCall in Linux
-‫هسته‬(linux kernel 2.6.11)‫از‬‫ایه‬‫ر‬‫آ‬289‫خانه‬‫ای‬sys_call_table‫برای‬
‫ذخیره‬‫س‬‫ر‬‫آد‬‫هر‬‫یس‬‫و‬‫سر‬systemcall‫استفاده‬‫می‬‫کند‬.‫اندیس‬‫ایه‬‫ر‬‫آ‬‫که‬‫ه‬‫ر‬‫شما‬‫مربوط‬‫ب‬‫ه‬
systemcall‫میباشد‬‫در‬‫ثبات‬eax‫است‬.
-‫با‬‫استفاده‬‫از‬‫ر‬‫دستو‬0x80$ int‫یا‬sysenter‫از‬‫مد‬‫بر‬‫ر‬‫کا‬‫سوییچ‬‫می‬‫شود‬‫به‬‫مد‬
‫هسته‬‫برای‬‫عملیات‬systemcall‫و‬‫با‬‫استفاده‬‫از‬iret‫یا‬sysexit‫از‬‫مد‬‫هسته‬‫به‬‫مد‬
‫بر‬‫ر‬‫کا‬‫سوییچ‬‫می‬‫شود‬.
7/24SystemCall in Linux
8/24SystemCall in Linux
9/24SystemCall in Linux
10/24SystemCall in Linux
11/24SystemCall in Linux
-‫نده‬‫ز‬‫پردا‬‫که‬‫کند‬ ‫می‬ ‫استفاده‬‫نام‬‫این‬‫به‬ ‫خاص‬‫پشته‬‫یک‬ ‫از‬‫ها‬ ‫جیستر‬‫ر‬‫مدیریت‬ ‫برای‬‫جیست‬‫ر‬‫شامل‬‫های‬ ‫ر‬
‫مثل‬‫استاتیک‬‫های‬ ‫جیستر‬‫ر‬‫و‬‫عمومی‬ ‫و‬‫سیستمی‬‫مثل‬‫دینامیک‬esp0‫تا‬esp2.
--‫عموما‬‫ای‬‫ر‬‫ب‬‫ی‬ ‫دسترس‬‫یت‬‫ر‬‫مدی‬‫همچنین‬‫و‬‫هسته‬‫و‬‫بر‬‫ر‬‫کا‬‫مد‬‫تغییر‬i/o‫شود‬‫می‬‫استفاده‬‫برعکس‬‫و‬‫هسته‬‫به‬.
-‫نده‬‫ز‬‫پردا‬‫می‬‫بدست‬‫آن‬ ‫از‬ ‫ا‬‫ر‬‫هسته‬‫مد‬ ‫پشته‬‫س‬‫ر‬‫آد‬‫د‬‫ر‬‫آو‬(.‫در‬‫که‬esp0‫است‬‫شده‬ ‫ذخیره‬)
--‫برای‬‫مقدار‬‫کند‬ ‫پیدا‬‫دست‬‫سگمنت‬ ‫این‬‫به‬ ‫نتواند‬‫بر‬‫ر‬‫کا‬‫مد‬ ‫در‬ ‫نده‬‫ز‬‫پردا‬ ‫اینکه‬DPL = 0‫است‬.
-‫جیستر‬‫ر‬tr‫ی‬‫حاو‬‫باشد‬‫می‬ ‫توصیفگر‬‫ل‬‫جدو‬‫در‬‫آن‬‫توصیفگر‬ ‫س‬‫ر‬‫آد‬.
-‫مقادیر‬limit‫و‬base‫آن‬hidden‫به‬‫اجعه‬‫ر‬‫م‬‫ن‬‫بدو‬‫این‬‫ر‬‫بناب‬‫باشد‬‫می‬GDT‫د‬‫و‬‫بر‬‫س‬‫ر‬‫آد‬‫به‬‫مستقیما‬‫تواند‬‫می‬.
12/24SystemCall in Linux
‫از‬‫سه‬‫جیستر‬‫ر‬‫خاص‬‫ه‬‫ر‬‫منظو‬(MSR)‫استفاده‬‫میشود‬:
SYSENTER_CS_MSR  segment selector for kernel code segment
SYSENTER_EIP_MSR  linear address for kernel entry point
SYSENTER_ESP_MSR  kernel stack pointer
‫تابع‬‫بوسیله‬‫هسته‬ ‫ای‬ ‫نده‬‫ز‬‫پردا‬‫هر‬ ‫در‬enable_sep_cpu( )‫سه‬‫کند‬‫می‬ ‫اولیه‬ ‫دهی‬ ‫مقدار‬ ‫ا‬‫ر‬ ‫جیستر‬‫ر‬:
‫هسته‬ ‫کد‬‫سگمنت‬ ‫انتخابگر‬‫در‬ ‫ا‬‫ر‬SYSENTER_CS_MSR‫؛‬ ‫نویسد‬‫می‬
‫خطی‬ ‫س‬‫ر‬‫آد‬‫تابع‬sysenter_entry( )‫در‬ ‫ا‬‫ر‬SYSENTER_CS_EIP‫؛‬ ‫نویسد‬‫می‬
‫مکان‬ ‫انتهای‬‫خطی‬ ‫س‬‫ر‬‫آد‬TSS‫در‬ ‫ا‬‫ر‬SYSENTER_CS_ESP‫نویسد‬ ‫می‬.
13/24SystemCall in Linux
‫یک‬System call handler‫دهد‬ ‫می‬‫انجام‬ ‫ا‬‫ر‬‫یر‬‫ز‬ ‫وظایف‬:
•‫ی‬‫نگهدار‬‫هسته‬‫سطح‬‫پشته‬ ‫در‬‫جیسترها‬‫ر‬‫مقادیر‬‫؛‬
•Handler Systemcall service‫تابع‬ ‫از‬‫استفاده‬ ‫با‬xyz( )‫؛‬
•‫دستیابی‬‫حالت‬ ‫از‬ ‫شدن‬‫خارج‬:‫س‬‫و‬‫جیسترها‬‫ر‬ ‫در‬ ‫هسته‬ ‫مد‬ ‫پشته‬ ‫ی‬‫و‬‫ر‬ ‫های‬‫ش‬‫ز‬‫ار‬‫ذخیره‬‫ویچ‬
‫از‬ ‫شدن‬‫بر‬‫ر‬‫کا‬ ‫مد‬ ‫به‬ ‫هسته‬‫مد‬.
14/24SystemCall in Linux
USER MODE KERNEL MODE
system_call:
….
sys_xyz()
….
SYSEXIT
sys_xyz(){
…
}
xyz(){
….
SYSCALL
….
}
...
xyz();
...
API of system call system call routin
in standard library
systemcall handler systemcall service routine
15/24SystemCall in Linux
16/24
‫ای‬‫ر‬‫ب‬‫ای‬‫ر‬‫اج‬‫یک‬‫اخوان‬‫ر‬‫ف‬‫سیستمی‬‫،فایل‬‫ها‬‫و‬‫پوشه‬‫های‬:
1. ~/linux/arch/i386/kernel/syscall_table.S ‫سیستمی‬ ‫های‬ ‫فراخوان‬ ‫نام‬ ‫شامل‬--------
‫سیستمی‬ ‫های‬ ‫فراخوان‬ ‫ه‬‫ر‬‫شما‬ ‫شامل‬-----------2. ~/linux/include/asm−i386/unistd.h
3. ~/linux/include/linux/syscalls.h ----------------------- ‫های‬ ‫فراخوان‬ ‫توابع‬ ‫شامل‬
‫سیستمی‬
‫ا‬‫ر‬‫تغییر‬‫های‬ ‫پوشه‬ ‫و‬ ‫ها‬ ‫فایل‬ ‫و‬:
1. ~/mycall ‫ها‬ ‫فایل‬ ‫ی‬‫نگهدار‬ ‫ای‬‫ر‬‫ب‬ ‫ای‬ ‫پوشه‬-----------------------------------------
2. ~/mycall/Makefile ‫ایی‬‫ر‬‫اج‬‫فایل‬-----------------------------------------------
3. ~/mycall/mycall.c----------------------------- ‫سیستمی‬ ‫های‬ ‫اخوان‬‫ر‬‫ف‬ ‫کد‬ ‫منبع‬ ‫فایل‬
4. testmycall.c------------------------- ‫کند‬ ‫می‬‫استفاده‬‫سیستمی‬ ‫های‬ ‫اخوان‬‫ر‬‫ف‬‫از‬ ‫که‬ ‫فایلی‬
5. testmycall.h ‫آن‬ ‫فایل‬ ‫هدر‬------------------------------------------------------
‫ا‬‫ر‬‫ایجاد‬‫کنیم‬‫می‬.SystemCall in Linux
17/24SystemCall in Linux
syscall_table.S
Add “.long sys_mycall" at the end of the list ‫کنیم‬‫می‬‫تعریف‬‫ا‬‫ر‬‫سیستم‬‫اخوان‬‫ر‬‫ف‬ ‫نام‬
18/24
unistd.h
Add "#define __NR_mycall <Last_System_Call_Num+ 1>" at the end of the
list.
If the last system call defined here is:
"#define __NR_vmsplice316", then add:
"#define __NR_mycall317" at the end of the list.
And change "#define NR_syscalls 317" to:
"#define NR_syscalls 318"
syscalls.h
Add "asmlinkage long sys_mycall(int i);” at the end of the file
Modify
SystemCall in Linux
mycall
‫یم‬‫ر‬‫گذا‬‫می‬‫ا‬‫ر‬ ‫آن‬‫نام‬‫و‬‫کنیم‬‫می‬‫ایجاد‬‫و‬‫بر‬‫و‬‫ر‬ ‫مسیر‬‫در‬‫پوشه‬ ‫یک‬mycall:/usr/src/linux
19/24
mycall.c
‫یم‬‫ر‬‫گذا‬‫می‬‫ا‬‫ر‬‫آن‬‫نام‬‫و‬‫کنیم‬‫می‬ ‫ایجاد‬‫و‬‫بر‬‫و‬‫ر‬ ‫مسیر‬‫در‬‫فایل‬ ‫یک‬:mycall.c/usr/src/linux/mycall
#include<linux/linkage.h>
asmlinkage long sys_mycall(int i)
{
return i+10;
}
Asmlinkage ‫د‬‫ر‬‫دا‬ ‫ار‬‫ر‬‫ق‬‫کرنل‬ ‫پشته‬ ‫ي‬‫و‬‫ر‬ ‫تابع‬ ‫نهاي‬ ‫آرگوما‬ ‫گويد‬‫مي‬ ‫کامپايلر‬ ‫به‬----
Creat
testmycall.h
‫کند‬‫می‬‫کار‬ ‫ما‬‫سیستمی‬‫اخوان‬‫ر‬‫ف‬ ‫با‬‫که‬‫است‬ ‫ای‬ ‫برنامه‬‫هر‬‫شامل‬‫و‬‫کنیم‬‫می‬ ‫ایجاد‬‫ا‬‫ر‬ ‫فایل‬‫هدر‬ ‫این‬
#include<linux/unistd.h>
#define __NR_mycall 317
_syscall1(long, mycall, int, i)
Makefile
obj−y := mycall.o
SystemCall in Linux
20/24
Creat
testmycall.c
‫که‬ ‫ای‬ ‫پوشه‬ ‫همان‬ ‫در‬ ‫هم‬ ‫ا‬‫ر‬ ‫فایل‬ ‫این‬testmycall.h‫یم‬‫ز‬‫سا‬ ‫می‬ ، ‫ساختیم‬ ‫ا‬‫ر‬.
#include<stdio.h>
#include<syscalls.h>
#include "testmycall.h"
int main(void)
{
printf("%dn", mycall(15));
}
long mycall(int i)
{
return syscall(__NR_mycall, i);
}
SystemCall in Linux
socket() : int socket(int domain, int type, int protocol);
create an endpoint for communication and returns a
descriptor
21/24
domain
selects the protocol family which will be used for
communication. These families are defined in
<sys/socket.h>
Local communication, IPv4 ,IPv6 , IPX - Novell , Kernel user interface
device ,ITU-T X.25 / ISO-8208 ,etc.
type
which specifies the communication semantics
SOCK_STREAM : Provides sequenced, reliable, two-way, connection-
based byte streams. An out-of-band data transmission mechanism may
be supported.
SOCK_RAW : Provides raw network protocol access.
SystemCall in Linux
Connect () :
int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
22/24
Sockfd : number of socket discriptor
*serv_addr : address of table
addrlen : kind of addressing
Listen () : int listen(int sockfd, int backlog);
Socket Used to for listening Inline
backlog : defines the maximum length the queue of
pending connections may grow to
SystemCall in Linux
Refrences:
- understanding the linux kernel , 3rd edition , by Daniel P.Bovet, Marco Cesati
-Implement a Sys Call on Linux 2.6 for i386 , by Amit Choudhary
- INTEL 80386 PROGRAMMER'S REFERENCE MANUAL
-Operating Systems Design and Implementation, Third Edition, By Andrew S. Tanenbaum
-Operating System Concepts ,Abraham Silberschatz,(2013)
23/24SystemCall in Linux
‫تشکر‬ ‫با‬
24/24SystemCall in Linux

More Related Content

Similar to SystemCall in Linux

قلاب سازی در تحلیل بدافزارهاHooking in Malware Analysis
 قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis
قلاب سازی در تحلیل بدافزارهاHooking in Malware AnalysisM Mehdi Ahmadian
 
تنظیم فایروال میکروتیک برای دسترسی سیستمها به اینترنت
تنظیم فایروال میکروتیک برای دسترسی سیستمها به اینترنت   تنظیم فایروال میکروتیک برای دسترسی سیستمها به اینترنت
تنظیم فایروال میکروتیک برای دسترسی سیستمها به اینترنت abbas pirnazaraine
 
پاورپوینت زبان برنامه نویسی پایتون.pptx
پاورپوینت زبان برنامه نویسی پایتون.pptxپاورپوینت زبان برنامه نویسی پایتون.pptx
پاورپوینت زبان برنامه نویسی پایتون.pptxpadparsa1388
 
04 memory traffic_fundamentals_of_parallelism_and_code_optimization-www.astek...
04 memory traffic_fundamentals_of_parallelism_and_code_optimization-www.astek...04 memory traffic_fundamentals_of_parallelism_and_code_optimization-www.astek...
04 memory traffic_fundamentals_of_parallelism_and_code_optimization-www.astek...aminnezarat
 
Partition in oracle mysql |Mariadb
Partition in oracle mysql |MariadbPartition in oracle mysql |Mariadb
Partition in oracle mysql |MariadbYashar Esmaildokht
 
آزمون تولیدمحتوا
آزمون تولیدمحتواآزمون تولیدمحتوا
آزمون تولیدمحتواf kh
 
Javan Cloud Security 950526 (oCCc63)
Javan Cloud Security 950526 (oCCc63)Javan Cloud Security 950526 (oCCc63)
Javan Cloud Security 950526 (oCCc63)Morteza Javan
 
Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0pdnsoftco
 
Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0pdnsoftco
 
شناسایی بات نت های Fast-Flux با استفاده از تحلیل ناهنجاری DNS
شناسایی بات نت های Fast-Flux با استفاده از تحلیل ناهنجاری DNSشناسایی بات نت های Fast-Flux با استفاده از تحلیل ناهنجاری DNS
شناسایی بات نت های Fast-Flux با استفاده از تحلیل ناهنجاری DNSMahdi Sayyad
 
طراحی و معماری خدمات ابری زیرساخت آمازون (AWS)
طراحی و معماری خدمات ابری زیرساخت آمازون (AWS)طراحی و معماری خدمات ابری زیرساخت آمازون (AWS)
طراحی و معماری خدمات ابری زیرساخت آمازون (AWS)S. M. Masoud Sadrnezhaad
 
Microservice architecture - معماری مایکروسرویس
Microservice architecture - معماری مایکروسرویسMicroservice architecture - معماری مایکروسرویس
Microservice architecture - معماری مایکروسرویسAmir Mahjoorian
 
Chapter 09 - network operating systems
Chapter 09 - network operating systemsChapter 09 - network operating systems
Chapter 09 - network operating systemsbehrad eslamifar
 

Similar to SystemCall in Linux (20)

قلاب سازی در تحلیل بدافزارهاHooking in Malware Analysis
 قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis
قلاب سازی در تحلیل بدافزارهاHooking in Malware Analysis
 
تنظیم فایروال میکروتیک برای دسترسی سیستمها به اینترنت
تنظیم فایروال میکروتیک برای دسترسی سیستمها به اینترنت   تنظیم فایروال میکروتیک برای دسترسی سیستمها به اینترنت
تنظیم فایروال میکروتیک برای دسترسی سیستمها به اینترنت
 
Ssh edition 2
Ssh edition 2Ssh edition 2
Ssh edition 2
 
پاورپوینت زبان برنامه نویسی پایتون.pptx
پاورپوینت زبان برنامه نویسی پایتون.pptxپاورپوینت زبان برنامه نویسی پایتون.pptx
پاورپوینت زبان برنامه نویسی پایتون.pptx
 
04 memory traffic_fundamentals_of_parallelism_and_code_optimization-www.astek...
04 memory traffic_fundamentals_of_parallelism_and_code_optimization-www.astek...04 memory traffic_fundamentals_of_parallelism_and_code_optimization-www.astek...
04 memory traffic_fundamentals_of_parallelism_and_code_optimization-www.astek...
 
Partition in oracle mysql |Mariadb
Partition in oracle mysql |MariadbPartition in oracle mysql |Mariadb
Partition in oracle mysql |Mariadb
 
Linux Vs Windows
Linux Vs WindowsLinux Vs Windows
Linux Vs Windows
 
آزمون تولیدمحتوا
آزمون تولیدمحتواآزمون تولیدمحتوا
آزمون تولیدمحتوا
 
Recovery in gnu/linux
Recovery in gnu/linux Recovery in gnu/linux
Recovery in gnu/linux
 
khazeni_taghizade
khazeni_taghizadekhazeni_taghizade
khazeni_taghizade
 
توسعه امن نرم افزار
توسعه امن نرم افزارتوسعه امن نرم افزار
توسعه امن نرم افزار
 
Javan Cloud Security 950526 (oCCc63)
Javan Cloud Security 950526 (oCCc63)Javan Cloud Security 950526 (oCCc63)
Javan Cloud Security 950526 (oCCc63)
 
Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0
 
Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0
 
شناسایی بات نت های Fast-Flux با استفاده از تحلیل ناهنجاری DNS
شناسایی بات نت های Fast-Flux با استفاده از تحلیل ناهنجاری DNSشناسایی بات نت های Fast-Flux با استفاده از تحلیل ناهنجاری DNS
شناسایی بات نت های Fast-Flux با استفاده از تحلیل ناهنجاری DNS
 
طراحی و معماری خدمات ابری زیرساخت آمازون (AWS)
طراحی و معماری خدمات ابری زیرساخت آمازون (AWS)طراحی و معماری خدمات ابری زیرساخت آمازون (AWS)
طراحی و معماری خدمات ابری زیرساخت آمازون (AWS)
 
Ossec و Wazuh
Ossec   و WazuhOssec   و Wazuh
Ossec و Wazuh
 
Microservice architecture - معماری مایکروسرویس
Microservice architecture - معماری مایکروسرویسMicroservice architecture - معماری مایکروسرویس
Microservice architecture - معماری مایکروسرویس
 
FreePBX Introduction
FreePBX IntroductionFreePBX Introduction
FreePBX Introduction
 
Chapter 09 - network operating systems
Chapter 09 - network operating systemsChapter 09 - network operating systems
Chapter 09 - network operating systems
 

SystemCall in Linux