- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用户程序需要系统提供服务的时候,会通过系统调用产生一个int 0x80的软中断,就会 进入到系统调用的入口函数,入口函数存放在以下文件当中:
[entry_32.S (arch\x86\kernel)]
以下是系统调用的入口:
ENTRY (system_call)
RINGO_INT_FRAME # cant unwind into user space anyway
pushl %eax # save orig_eax,将系统调用号压入栈中
CFI_ADJUST_CFA_OFFSET 4
SAVE.ALL #将寄存器的值压入堆栈当中,压入堆栈的顺序对应着结构体struct
pt_regs,当出栈的时候,就将这些值传递到结构体struct pt_regs里面的成员,从而实现 从汇编代码向C程序传递参数。
Struct pt_regs对应定义在
Struct pt_regs对应定义在
struct pt_regs { long ebx; long ecx; long edx; long esi; long edi; long ebp; long eax; int xds; int xes; int xfs; int xgs; long orig_eax; long eip; int xcs; long eflags; long esp; int xss;
#GET_THREADJNFO宏获得当前进程的threadJnfo结构的地址,获取当前进程的 信息。
GET_THREAD_INFO(%ebp)
# system call tracing in operation / emulation #thread_inof 结构中 flag 字段的_TIF_SYSCALL_TRACE SK_TIF_SYSCALL_AUDIT #被置1。如果发生被跟踪的情况则转向相应的处理命令处。 testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) jnz syscall_trace_entry #比较结果不为零的时候跳转。
#对用户态进程传递过来的系统调用号的合法性进行检查。
#如果不合法则跳转到syscall_badsys标记的命令处。 cmpl $(nr_syscalls),%eax
jae syscall.badsys #比较结果大于或者等于最大的系统调用号的时候跳转,不合法 #合法则跳转到相应系统调用号所对应的服务例程当中,
#也就是在sys_call_table表中找到了相应的函数入口点。
#由于sys_call_table表的表项占4字节,因此获得服务例程指针的具体方法 #是将由eax保存的系统调用号乘以4再与sys_call_table表的基址相加。 syscall_call:
call *sys_call_table(,%eax,4)
movl %eax,PT_EAX(%esp) # store the return value 将保存的结果返回。
接下来,会进入到系统调用表查找到系统调用服务程序的入口函数的地址,再进行跳转,整 个过程如下图所示:
参数人枝?■鏞囔??system ^callsys 一
参数人枝
?■鏞囔??
system ^call
sys 一 calljablc
服务例W
rvturn
teuiru
[syscall_table_32.S (arch\x86\kernel)]
ENTR¥(sys_call_table)
?long sys_restart一syscall /* 0 - old setupO” system call,used for restarting */
.long sys_exit
?long ptregs_fork
?long sys_read
?long sys_write
?long sys_open /* 5 */
.long sys_close
?long sys_waitpid
?long sys_creat
?long sysjink
.long sys_unlink /* 10 */
?long ptregs_execve
例如我们跟踪一下系统调用open的打开流程:
1、
1、open的系统调用号,
存放于
TOC \o 1-5 \h \z #define NR restart syscall 0
#define _NR_exit 1
#define _NR_fork 2
#define _NR_read 3
#define _NR_write 4
#define _NR_open 5
#define _NR_close 6
#define _NR_waitpid 7
#define _NR_creat 8
#define
您可能关注的文档
- JS130C水泥磨减速机技术文本.doc
- JSTJZDS0210141《压力容器制造监督检验通用工艺》.doc
- JU14000Ⅱ10600第五章技术参数.doc
- JUN亥姆赫兹实验报告.doc
- JVC公司人力资源管理问题研究开题报告.doc
- JZL7时集220kV变电站工程监理初检方案.doc
- K3+000K6+000土方路基施工方案设计.doc
- k12180山体开挖防护施工方案.doc
- K45750汽车通道施工方案.doc
- K3551907滦柏干渠大桥创部优规划.doc
- Module+3+Unit+2+课件-+2025-2026学年外研版(2012)九年级英语上册.pptx
- 第5课《黄河颂》课件统编版语文七年级下册.pptx
- 人教版八年级地理上册课件《水资源》.pptx
- 人教版九年级物理全一册课件《电流的测量》.pptx
- 北师大版七年级数学上册 2.4.2 科学记数法 教学课件.pptx
- 1.1物质的变化和性质 同步课件--2025-2026学年九年级化学人教版(2024)上册.pptx
- 第4课 古代的生产工具与劳作 课件(共45张PPT)-2025-2026学年高二历史同步教学精研课件(统编版选择性必修2).pptx
- 第1课时 水果店 课件2025北师大版数学三年级上册.pptx
- 第4课《乡愁》课件统编版语文九年级上册.pptx
- 人教版八年级地理上册课件《气候》.pptx
文档评论(0)