- 博客(312)
- 资源 (13)
- 收藏
- 关注
原创 intrinsic内核编程使用说明
pragma intrinsic是C/C++预处理指令,用于指定编译器使用内部函数实现。pragma 告知编译器某个函数已了解行为。编译器可以调用函数,并且不将函数调用替换为内联说明(如果将实现更好的性能)。pragma,它将在包含指定的内部函数的第一个函数定义中生效。该效果持续到源文件的末端或指定相同内部函数的。下面列出了带内部形式的库函数。内部函数生成内核模式说明以禁用或启用中断,并且在内核模式驱动程序中很有用。pragma 只能在函数定义之外用于全局级。pragma 外观。
2025-10-08 12:26:13
168
原创 WinDivert学习文档之十一-————许可证
WinDivert是免费软件:你可以重新分发和/或修改它在GNU较宽松通用公共许可证的条款下,由自由软件基金会,或者是许可证的第三版,或者(根据你的选择)任何以后的版本。许可证的第二版,或者(根据你的选择)任何以后的版本。看到详细信息请参见GNU通用公共许可证。您应该已经收到GNU较宽松通用公共许可证的副本和这个节目一起。WinDivert是双重授权,您可以选择GNU较宽松通用公共许可证(LGPL)版本3或GNU通用公共许可证(GPL)版本2。您可以重新发布和/或修改它在GNU通用公共许可证的条款下,由。
2025-09-22 09:53:40
259
原创 WinDivert学习文档之九-————实例
该程序接受在命令行指定的过滤器,并打印与过滤器匹配的任何数据包的信息。对于不需要修改数据包的应用程序,更好的方法是使用WINDIVERT_FLAG_SNIFF标志集打开WinDivert句柄,并且不使用WinDivertSend()重新注入数据包。如果它发现一个与黑名单匹配的URL请求,它就会劫持TCP连接,在服务器端重置连接,并向浏览器发送一个简单的阻塞页面。exe:一个简单的程序,它只是重新注入它捕获的每个数据包。exe:一个程序,跟踪所有网络流进出本地机器,包括信息,如负责进程的ID。
2025-09-22 09:52:57
717
原创 WinDivert学习文档之八-————Performance
重叠I/O:这允许用户应用程序在进行接收/发送操作的同时执行其他任务,这可能会提高某些应用程序的性能。然而,使用重叠的I/O可能会很棘手,重要的是,传递给WinDivertRecvEx()或WinDivertSendEx()的所有缓冲区(包括overlapped结构)在操作完成之前不会被用户应用程序修改。小缓冲区:与小缓冲区相比,大缓冲区通常会产生更多的开销。简单过滤器:目前WinDivert不优化过滤器编译,所以它是由用户应用程序来确保过滤器是简单的/优化的。也就是说,有时生成过多的线程会降低性能。
2025-09-22 09:52:34
576
原创 WinDivert学习文档之七-————过滤器的语言
WINDIVERT_EVENT_SOCKET_CLOSE用于SOCKET层,或者WINDIVERT_EVENT_REFLECT_CLOSE用于REFLECT层。字节装饰(负)整数(例如,packet32[10b]或packet32[-10b]):从包/负载的开始(或结束)计算到单词偏移i字节。特定于层的宏使事件和层的符号匹配成为可能,例如,event == CONNECT或layer == SOCKET。未修饰的整数(例如,packet32[10]):计算到从包/负载开始的第i个字。
2025-09-22 09:52:09
1198
原创 WinDivert学习文档之六-————辅助编程API(十八)
将一个值/IPv6-address从网络转换为主机字节顺序。以主机字节顺序表示的输出值。
2025-09-22 09:51:14
247
原创 WinDivert学习文档之六-————辅助编程API(八)
计算给定数据包的64位哈希值。请注意,哈希函数仅取决于数据包的IP和传输头,而不是数据包的有效载荷。也就是说,如果TCP/UDP校验和有效,则会存在对有效负载的弱依赖。哈希函数本身基于xxHash算法,不是加密的。可选的种子值也被合并到散列中。
2025-09-21 09:07:39
150
原创 WinDivert学习文档之六-————辅助编程API(一)
6. 辅助编程APIWinDivert助手编程API是一个定义和函数的集合,旨在使编写WinDivert应用程序更容易。helper API的使用是可选的。
2025-09-21 09:02:51
160
原创 WinDivert学习文档之五-————编程API(十二)
获取一个WinDivert参数。成功时为TRUE,发生错误时为FALSE。使用GetLastError()获取错误的原因。返回驱动程序的次要版本。返回驱动程序的主版本。
2025-09-21 09:02:09
488
原创 WinDivert学习文档之五-————编程API(十一)
请注意,这设置了数据包在被丢弃之前可以排队的最小时间。目前默认值是WINDIVERT_PARAM_QUEUE_TIME_DEFAULT,最小值是WINDIVERT_PARAM_QUEUE_TIME_MIN,最大值是WINDIVERT_PARAM_QUEUE_TIME_MAX。目前默认值是WINDIVERT_PARAM_QUEUE_SIZE_DEFAULT,最小值是WINDIVERT_PARAM_QUEUE_SIZE_MIN,最大值是WINDIVERT_PARAM_QUEUE_SIZE_MAX。
2025-09-20 20:38:18
802
原创 WinDivert学习文档之五-————编程API(十)
成功时为TRUE,发生错误时为FALSE。使用GetLastError()获取错误的原因。一个由WinDivertOpen()创建的有效的WinDivert句柄。关闭由WinDivertOpen()创建的WinDivert句柄。
2025-09-20 18:29:50
216
原创 WinDivert学习文档之五-————编程API(九)
注意,在WINDIVERT_SHUTDOWN_RECV之后,仍然可以接收先前排队的数据包。当数据包队列为空时,WinDivertRecv()将失败并返回ERROR_NO_DATA。相当于(WINDIVERT_SHUTDOWN_RECV | WINDIVERT_SHUTDOWN_SEND)。成功时为TRUE,发生错误时为FALSE。使用GetLastError()获取错误的原因。停止通过WinDivertSend()注入新的数据包。停止为WinDivertRecv()排队的新数据包。
2025-09-20 18:25:17
307
原创 WinDivert学习文档之五-————编程API(八)
如果数据包被成功注入,则为TRUE,否则为FALSE。使用GetLastError()来获取原因。错误码ERROR_IO_PENDING表示重叠操作已成功启动,稍后将指示完成。所有其他代码表示错误。批处理I/O使得使用单个操作一次发送最多WINDIVERT_BATCH_MAX数据包成为可能,从而减少了内核/用户模式上下文切换的数量并提高了性能。一个由WinDivertOpen()创建的有效的WinDivert句柄。
2025-09-20 18:12:51
325
原创 WinDivert学习文档之五-————编程API(七)
如果pAddr->Outbound字段为1,则数据包将被注入出站路径(即数据包离开本地机器)。否则,如果pAddr->Outbound为0,则数据包被注入入站路径(即到达本地机器的数据包)。注入的数据包必须具有正确的校验和或未设置相应的pAddr->*校验和标志。注入的数据包可以是从WinDivertRecv()接收到的数据包,也可以是修改后的版本,或者是一个全新的数据包。在出站路径上注入入站数据包可能有效(对于某些类型的数据包),但是这应该被视为“未记录”的行为,并且可能在将来进行更改。
2025-09-20 18:07:15
537
原创 WinDivert学习文档之五-————编程API(六)
成功完成后,pAddrLen指向的值被更新为实际接收到的地址字节总数。例如,如果总共接收到5个数据包,那么pAddrLen指向的值将被设置为(5*sizeof(WINDIVERT_ADDRESS))。接收到的数据包被连续打包(即,没有间隔)到pppacket缓冲区中。如果数据包被成功接收,则为TRUE,否则为FALSE。所有其他代码表示错误。批处理I/O使得使用单个操作一次接收最多WINDIVERT_BATCH_MAX数据包成为可能,从而减少了内核/用户模式上下文切换的数量并提高了性能。
2025-09-20 17:44:19
433
原创 WinDivert学习文档之五-————编程API(五)
对于支持捕获的层,捕获的数据包/数据将被写入pppacket缓冲区。对于不捕获数据包/数据的层,pppacket参数应该为NULL, packetLen应该为零。当WinDivert句柄打开时,任何与过滤器匹配的数据包/事件将被捕获并排队,直到被WinDivertRecv()处理。接收与传递给WinDivertOpen()的过滤器匹配的单个捕获的数据包/事件。捕获的数据包保证具有正确的校验和或具有相应的*校验和标志未设置(参见WINDIVERT_ADDRESS)。捕获的数据包大于pPacket缓冲区。
2025-09-20 17:13:08
761
原创 WinDivert学习文档之五-————编程API(四)
更高的优先级值表示更高的优先级,其中WINDIVERT_PRIORITY_HIGHEST是最高优先级,0是中间优先级(也是一个很好的默认值),WINDIVERT_PRIORITY_LOWEST是最低优先级。注意,(WINDIVERT_FLAG_SNIFF | WINDIVERT_FLAG_DROP)或(WINDIVERT_FLAG_RECV_ONLY | WINDIVERT_FLAG_SEND_ONLY)的任何组合都被认为是无效的。WINDIVERT_FLAG_RECV_ONLY的别名。
2025-09-20 17:00:02
1412
原创 WinDivert学习文档之五-————编程API(一)
五、 编程API要使用WinDivert软件包,程序/应用程序必须:包括windivert.h头文件链接或动态加载WinDivert.dll动态链接库。
2025-09-20 16:52:19
560
原创 WinDivert学习文档之四-————卸载
要卸载,只需删除WinDivert.dll, WinDivert32。sys和WinDivert64。如果已经运行,WinDivert驱动程序将在下次机器重启时自动卸载。
2025-09-20 11:38:43
307
原创 WinDivert学习文档之三-————安装
当应用程序调用WinDivertOpen()时,WinDivert驱动程序会自动(并且静默)按需安装。调用应用程序必须具有管理员权限。WinDivert不需要任何特殊的安装。
2025-09-20 11:29:32
230
原创 WinDivert学习文档之二-————构建编译
如果你构建自己的WinDivert32.sys/WinDivert64。这里强调一下,预先构建的WinDivert二进制发行版可从WinDivert网站获得。大多数用户不需要从源代码构建自己的WinDivert版本。请注意,预构建的WinDivert32.sys/WinDivert64。来自官方WinDivert发行版的sys驱动程序已经进行了数字签名。生成的WinDivert.dll/WinDivert. dlllib文件应该与所有主流编译器兼容,包括MinGW和Visual Studio。
2025-09-20 11:11:39
1103
豆瓣视频top250页面采集源码
2024-06-03
Python网络爬虫实际例子代码
2024-06-03
TestLibzmqReqRepBroker.rar
2020-05-11
vc6使用开发miniblink控件简单实例
2018-12-26
TestZeroMQPublisherSubscribe.rar
2020-05-10
websphere V6调优概要(红皮书)
2010-05-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅