Linux Ring3 HOOK

1.前言
    Linux hook技术一直是linux技术爱好者们研究的一个热点问题,Intel的CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3,   ring0是指CPU的运行级别,ring0是最高级别,ring1次之,ring2更次之,以此类推。

  拿Linux+x86来说, 操作系统(内核)的代码运行在最高运行级别ring0上,可以使用特权指令,控制中断、修改页表、访问设备等等。  应用程序的代码运行在最低运行级别上ring3上,不能做受控操作。如果要做,比如要访问磁盘,写文件,那就要通过执行系统调用(函数),执行系统调用的时候,CPU的运行级别会发生从ring3到ring0的切换,并跳转到系统调用对应的内核代码位置执行,这样内核就为你完成了设备访问,完成之后再从ring0返回ring3。这个过程也称作用户态和内核态的切换。

  Linux的hook一般发生在ring0和ring3层,其中ring0层通常是hook Linux系统调用表中的系统调用,而ring3层则一般hook的动态链接库中的函数,接下来我们将会分类讨论。

2.ring3 hook
2.1inject
  当我们需要hook某个应用程序时,我们需要往目标程序中添加自己的代码,这种添加代码的方式就被称之为inject,inject方式又一般分为两种:

动态注入
静态注入
 所谓静态注入就是在程序还未运行时,去修改其so文件,以达到注入函数的目的,由于没具体研究过,所以此处仅提一下,有兴趣的同学可以看一些这个项目,而动态注入一般是使用ptrace来实现的,一般流程为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信安成长日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值