驱动层改包神器windivert

2023-11-03 05:40
文章标签 驱动 神器 改包 windivert

本文主要是介绍驱动层改包神器windivert,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文简要介绍windows下驱动层kit开发包windivert的改包操作。

windivert官网:windivert官网资料
下载源码后,双击 *.vcxproj工程文件或者拖入vs,即可打开相应的工程,点击build即可完成项目编译。

windivert核心代码运行于驱动层,但是也提供了应用层的接口,通过这些应用层接口,开发者可以实现对windows平台上数据包的任意修改。不过需要注意的是:windivert只能修改ip层以及以后的tcp层(udp层)和数据部分的内容,而不能修改mac层以及相对应的链路层。wireshark中winpcap开发包可以修改数据包中的任意内容(包括mac层),但是windivert是用修改后的数据包替换掉原来的包,修改后原来的数据包不见了,而wireshark是修改后原来的数据包的发送不受影响,当然修改后的数据包也可以发送出去。从这点上看,两个开发包各有优劣

代码如下。
例子代码主要是将dns的目的ip地址改为了8.8.8.8,可以抓包看到修改后的数据包。数据包发送前被修改,但是并不需要修改接收的包的ip地址。
注意,工程项目同目录下要有windivert64.sys和windivert.dll。而且位数要匹配,比如,64位程序需要64位驱动windivert64.sys和64位windivert.dll。

#include <windows.h>
#include <stdio.h>#include "./windivert_device.h"
#include "./windivert.h"#pragma comment(lib,"./windivert.lib")#pragma comment(lib,"windivert.lib")#ifdef WINDIVERT_KERNEL
#undef WINDIVERT_KERNEL
#endifint mainwork() {int result = 0;char* packet = malloc(0x10000);int packetLen = 0x10000;WINDIVERT_ADDRESS addr;UINT32 recvSize = 0;PWINDIVERT_IPHDR iphdr;WINDIVERT_TCPHDR tcphdr;WINDIVERT_UDPHDR udphdr;// 打开过滤对象HANDLE mHandle = WinDivertOpen("udp.DstPort == 53", //过滤规则WINDIVERT_LAYER_NETWORK, //过滤的层0, 0);if (mHandle == INVALID_HANDLE_VALUE) //开启过滤对象,可以通过错误码识别错误{result = GetLastError();return;  //error}while (1){result = WinDivertRecv(mHandle,  // windivert对象packet, packetLen,  //char* packet和buff长度&recvSize,   // int 实际读取的数据长度&addr);// 接收过滤到的网络包内容if (result == 0) //WINDIVERT_ADDRESS{result = GetLastError();break;// error}//  网络包头部解析result = WinDivertHelperParsePacket(packet, recvSize,&iphdr, NULL, NULL, NULL, NULL,&tcphdr, &udphdr, NULL, NULL, NULL, NULL);if (result == 0){result = GetLastError();break;// error}*(DWORD*)(packet + 16) = 0X08080808;// 计算校验和result = WinDivertHelperCalcChecksums(packet, packetLen, &addr, 0);// 把修改后的包发送出去result = WinDivertSend(mHandle, packet, packetLen, &recvSize, &addr);if (result == 0){result = GetLastError();break;// send error}}}int main(int argc, char** argv) {mainwork();return 0;
}

wireshark同时开启抓包,截图如下:
在这里插入图片描述

这篇关于驱动层改包神器windivert的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/335961

相关文章

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

驱动(RK3588S)第七课时:单节点设备树

目录 需求一、设备树的概念1、设备树的后缀名:2、设备树的语法格式3、设备树的属性(重要)4、设备树格式举例 二、设备树所用函数1、如何在内核层种获取设备树节点:2、从设备树上获取 gpio 口的属性3、获取节点上的属性只针对于字符串属性的4、函数读取 np 结点中的 propname 属性的值,并将读取到的 u32 类型的值保存在 out_value 指向的内存中,函数的返回值表示读取到的

驱动安装注册表指令

HKCR: HKEY_CLASSES_ROOT HKCU: HKEY_CURRENT_USER HKLM: HKEY_LOCAL_MACHINE HKU: HEKY_USER HER: 相对根键

UMDF驱动安装

VS2013 + WDF8.1,UMDF驱动选择User Mode Driver,不要选User Mode Driver 2.0,否则Win7安装有问题,如图 另外,在驱动安装时不要忘记WUDFUpdate_<主版本号><次版本号>.dll文件,具体文件名在INF中查找。此文件可在WDF的安装目录中找到。注意:在WDF的安装目录中会有3个WUDFUpdate_xxx.dll文件,x86,x6

以后写代码都是AI自动写了,Cursor+Claude-3.5-Sonnet,Karpathy 点赞的 AI 代码神器。如何使用详细教程

Cursor 情况简介 AI 大神 Andrej Karpathy 都被震惊了!他最近在试用 VS Code Cursor +Claude Sonnet 3.5,结果发现这玩意儿比 GitHub Copilot 还好用! Cursor 在短短时间内迅速成为程序员群体的顶流神器,其背后的原因在于其默认使用 OpenAI 投资的 Claude-3.5-Sonnet 模型,这一举动不仅改变了代码生成

OBItools:Linux下的DNA条形码分析神器

在生物信息学领域,DNA条形码分析是一种非常常见的研究方法,用于物种鉴定、生态学和进化生物学研究。今天要介绍的工具就是专为此设计的——OBItools。这个工具集专门用于处理生态学和进化生物学中的DNA条形码数据,在Linux环境下运行。无论你是本科生还是刚入门的科研人员,OBItools都能为你提供可靠的帮助。 OBItools的功能亮点 OBItools是一个强大的工具包,特别适合DNA条形

电脑驱动分类

电脑驱动程序(驱动程序)是操作系统与硬件设备之间的桥梁,用于使操作系统能够识别并与硬件设备进行通信。以下是常见的驱动分类: 1. 设备驱动程序 显示驱动程序:控制显卡和显示器的显示功能,负责图形渲染和屏幕显示。 示例:NVIDIA、AMD 显示驱动程序。打印机驱动程序:允许操作系统与打印机通信,控制打印任务。 示例:HP、Canon 打印机驱动程序。声卡驱动程序:管理音频输入和输出,与声卡硬件

麒麟系统安装GPU驱动

1.nvidia 1.1显卡驱动 本机显卡型号:nvidia rtx 3090 1.1.1下载驱动 打开 https://www.nvidia.cn/geforce/drivers/ 也可以直接使用下面这个地址下载 https://www.nvidia.com/download/driverResults.aspx/205464/en-us/ 1.1.3安装驱动 右击,