开发者社区> 问答> 正文

syscall如何知道要跳转到哪里?

Linux如何确定要通过syscall执行的另一个进程的地址?喜欢这个例子吗?

mov rax, 59 
mov rdi, progName
syscall

展开
收起
祖安文状元 2020-01-06 16:22:17 422 0
1 条回答
写回答
取消 提交回答
  • 系统调用 该syscall指令实际上只是一个INTEL / AMD CPU指令。这是简介:

    IF (CS.L ≠ 1 ) or (IA32_EFER.LMA ≠ 1) or (IA32_EFER.SCE ≠ 1)
      THEN #UD;
    FI;
    RCX ← RIP;
    RIP ← IA32_LSTAR;
    R11 ← RFLAGS;
    RFLAGS ← RFLAGS AND NOT(IA32_FMASK);
    CS.Selector ← IA32_STAR[47:32] AND FFFCH
    CS.Base ← 0;
    CS.Limit ← FFFFFH;
    CS.Type ← 11;
    CS.S ← 1;
    CS.DPL ← 0;
    CS.P ← 1;
    CS.L ← 1;
    CS.D ← 0;
    CS.G ← 1;
    CPL ← 0;
    SS.Selector ← IA32_STAR[47:32] + 8;
    SS.Base ← 0;
    SS.Limit ← FFFFFH;
    SS.Type ← 3;
    SS.S ← 1;
    SS.DPL ← 0;
    SS.P ← 1;
    SS.B ← 1;
    SS.G ← 1;
    
    2020-01-06 16:22:30
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载