linux系统调用时 如何调用服务的进程id

uzwind 2011-08-09 03:35:23
如题 linux的应用程序在进行系统调用陷入内核后 调用该系统调用的进程id应该如何获取呢?
我们的项目要求我做一个hack模块 修改系统调用表 劫持系统调用 在新的系统调用函数中 需要获取调用系统调用的pid
查了一天资料 也没什么眉目 各位大大帮帮忙啊 说说思路也好
另外 我听人说过 这个pid是存储在寄存器中的 但是不知道靠不靠谱
...全文
139 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
uzwind 2011-08-10
  • 打赏
  • 举报
回复
我发现还是没有解决…… 之前搞错了
貌似linux内核每执行一次系统调用 都会起一个进程 目前是这么感觉的 还没看明白
感觉好难啊 刚开始接触内核 不了解的概念太多了
我是这样想的 linux内核的系统调用既然是为应用程序服务的 那么调用返回时候 就不可能不知道应用的PID 否则他把结果反给谁都不知道 所以找到了sys_call,ret_from_sys_call等地方 感觉这里面应该存储着应用的PID 但是问题似乎又出来了 就是sys_call里一旦调用具体的某一个系统调用 整个上下文就又改变了 还是没法读出之前的进程PID 有个高手跟我说 要通过寄存器找 感觉自己太菜了 反正我是无从下手啊
uzwind 2011-08-10
  • 打赏
  • 举报
回复
这次是真的解决了
内核中 发现current是task_struct
task_struct中有三项是指向自己类型的指针
struct task_struct *parent;
struct task_struct *real_parent;
struct task_struct *group_leader;
都试验了一下 发现group那项就是应用层的PID 这些的具体含义还没搞明白
cqbamboo 2011-08-09
  • 打赏
  • 举报
回复
咋解决的?说来听听
uzwind 2011-08-09
  • 打赏
  • 举报
回复
问题已经解决

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧