首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux Hook技术实践

LInux Hook技术实践 什么是hook 简单的说就是别人本来是执行libA.so里面的函数的,结果现在被偷偷换成了执行你的libB.so里面的代码,是一种替换。...为什么hook 恶意代码注入 调用常用库函数时打log 改变常用库函数的行为,个性化 怎么hook 这个东西在win里面有现成的api,但是在linux里面却要主动修改ELF文件,或者修改动态库链接路径...所以这里提供一种简单的方法来hook 下面直接demo吧 /*myselect.c*/ #define _GNU_SOURCE #include #include <stdio.h...举个例子: 某些系统上select的实现可能与众不同,在没有fd就绪时,并不阻塞,而是忙等,这时便可以通过hook技术,在select中插入usleep,达到释放cpu的作用。

1.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

Linux内核网络UDP数据包发送(三)——IP协议层分析

前言 Linux内核网络 UDP 协议层通过调用 ip_send_skbskb 交给 IP 协议层,本文通过分析内核 IP 协议层的关键函数来分享内核数据包发送在 IP 协议层的处理,并分享了监控...3.1 netfilter and nf_hook nf_hook 只是一个 wrapper,它调用 nf_hook_thresh,首先检查是否有为这个协议族和hook 类型(这里分别为 NFPROTO_IPV4...出于讨论目的,我们假设 nf_hook 返回 1,表示调用者(在这种情况下是 IP 协议层)应该自己发送数据包。 3.2 目的(路由)缓存 dst 代码在 Linux 内核中实现协议无关的目标缓存。...接下来,设置要发送此 skb 的设备,以及协议。 最后,通过调用 NF_HOOK_COND 将控制权交给 netfilter。...将头数据复制到 skb 后,skb_push 将更新 skb 内指向数据缓冲区的指针。最后调用 dev_queue_xmit 将 skb 传递给 Linux 网络设备子系统。

3K21

(一)洞悉linux下的Netfilter&iptables:什么是Netfilter?

Netfilter是Linux 2.4.x引入的一个子系统,它作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制,使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪成为了可能...Netfilter使用NF_HOOK(include/linux/netfilter.h)宏在协议栈内部切入到Netfilter框架中。...verdict = elem->hook(hook, skb, indev, outdev, okfn); if (verdict !...该函数处理所有目的地址是本机的数据包,其切入函数为: NF_HOOK(PF_INET, NF_IP_LOCAL_IN, skb, skb->dev, NULL,ip_local_deliver_finish...小节:整个Linux内核中Netfilter框架的HOOK机制可以概括如下: 在数据包流经内核协议栈的整个过程中,在一些已预定义的关键点上PRE_ROUTING、LOCAL_IN、FORWARD、LOCAL_OUT

1.9K21

Linux内核编程_linux内核开发工具

我在netfilter的两个hook点上,注册了两个hook函数。...前一个钩子函数,初始化了一些per cpu变量,后一个钩子函数,简单检测了per_cpu->skbhook的参数skb如果是相等的情况,就不再初始化,直接使用per cpu的变量了。...造成问题的原因就在于,在有skb_clone调用时,不同hook调用时,skb->data发生了变化。第二个hook位置,skb->data指向的内存与第一个hook处不一致。...但是skb_clone本身并不会造成这样的结果。这说明在netfilter的不同hook之间,当skb被clone了,会重新分配skb的数据空间——具体是哪处代码,我暂时没有找到。...如上面的例子,内核从来没有说过两个hook点之间,skb是一样的,skb的数据空间即skb->data是一样的。

13K20

深入理解 netfilter 和 iptables!

Netfilter 的设计与实现 netfilter 的定义是一个工作在 Linux 内核的网络数据包处理框架,为了彻底理解 netfilter 的工作方式,我们首先需要对数据包在 Linux 内核中的处理路径建立基本认识...hook 触发点 对于不同的协议(IPv4、IPv6 或 ARP 等),Linux 内核网络栈会在该协议栈数据包处理路径上的预设位置触发对应的 hook。...所有接收数据包到达的第一个 hook 触发点(实际上新版本 Linux 增加了 INGRESS hook 作为最早触发点),在进行路由判断之前执行。...skb_sec_path(skb)) ip_rt_send_redirect(skb); skb->priority = rt_tos2priority(iph->tos); return NF_HOOK...ipt_do_table 接收 skbhook 和 xt_table作为参数,对 skb 执行后两个参数所确定的规则集,返回 netfilter 向量作为回调函数的返回值。

99721

深入理解 netfilter 和 iptables

Netfilter 的设计与实现 netfilter 的定义是一个工作在 Linux 内核的网络数据包处理框架,为了彻底理解 netfilter 的工作方式,我们首先需要对数据包在 Linux 内核中的处理路径建立基本认识...hook 触发点 对于不同的协议(IPv4、IPv6 或 ARP 等),Linux 内核网络栈会在该协议栈数据包处理路径上的预设位置触发对应的 hook。...所有接收数据包到达的第一个 hook 触发点(实际上新版本 Linux 增加了 INGRESS hook 作为最早触发点),在进行路由判断之前执行。...skb_sec_path(skb)) ip_rt_send_redirect(skb); skb->priority = rt_tos2priority(iph->tos); return NF_HOOK...ipt_do_table 接收 skbhook 和 xt_table作为参数,对 skb 执行后两个参数所确定的规则集,返回 netfilter 向量作为回调函数的返回值。

59020

云原生场景下,nettrace怎么快速进行网络故障诊断?

工具简介 1)背景 在一些场景下(特别是云原生场景),Linux 系统中的网络部署变得越来越复杂。...需要对内核有一定了解,入手难;dropwatch:功能单一,只能查看网络丢包问题,且无法得到丢包原因和解决方案; 在此背景下,笔者结合多年的 Kernel 网络协议栈故障定位经验,基于 eBPF 开发了 Linux...值得一提的是,Linux操作系统OpenCloudOS 8.6(点击阅读原文下载体验OpenCloudOS ISO)增加了内核对网络工具nettrace的支持,允许开发者通过 bpf 进行网络丢包原因跟踪...可以通过查看 /tracing/events/skb/kfree_skb/format 来判断当前系统是否支持该特性: cat /tracing/events/skb/kfree_skb...| 从Linux零拷贝深入了解Linux-I/O 技术盲盒:前端|后端|AI与算法|运维|工程师文化 关注我并点亮星标 工作日晚8点 看腾讯技术、学专家经验 点赞|分享|在看 传递好技术

2.3K40

在云原生场景中,nettrace 如何快速进行网络故障诊断

在开源 Linux 操作系统 OpenCloudOS 8.6 中,增加了内核对网络工具 nettrace 的支持,允许开发者通过 bpf 进行网络丢包原因跟踪,内核也同时回合相关的丢包跟踪点。...背景在一些场景下(特别是云原生场景),Linux 系统中的网络部署变得越来越复杂。...,需要对内核有一定了解,入手难dropwatch:功能单一,只能查看网络丢包问题,且无法得到丢包原因和解决方案在此背景下,笔者结合多年的 Kernel 网络协议栈故障定位经验,基于 eBPF 开发了 Linux...可以通过查看 /tracing/events/skb/kfree_skb/format 来判断当前系统是否支持该特性:cat /tracing/events/skb/kfree_skb/format name...OpenCloudOS ISO 下载地址如果在使用过程中遇到技术问题,或您对Linux和操作系统相关话题感兴趣,扫描下方二维码,加入鹅厂技术社区用户群,可了解最新社区动态,与鹅厂志同道合的朋友们一起畅聊内核技术

1.8K20
领券