C# NetCut / Only

本文介绍了如何使用C#进行网络截包和API Hook技术,特别是通过拦截WinINet来互动每个发送到服务器的请求。讨论了钩子的类型,如IAT、EAT和INLINE,并提供了修改导入地址表的示例代码。同时,文章指出尽管有封包/截包技术,但通过WinINet.DLL拦截函数更方便。文中还涉及到在.NetCut项目中如何获取Http请求的Cookie以及添加项目引用和设置的细节。
摘要由CSDN通过智能技术生成

本类库实际上是一种很失败的东西,至少在我看来是足够失败 当时也不知道是头发热

还是人未醒,居然会去拦截WinInet,看来几年前学习的WebProxy与HTTP是白学了,

我想应该是 Retrieve-HttpOnly-Session-Cookie-in-WebBrowser 这篇帖子中的一些话

误导了我把,本类库的源代码实际上只是提供给大家学习API-HOOK的一个小小应用

不过API-HOOK分了好几种,我最喜欢的还是IAT,EAT,INLINE三种,不过论到实

用性INLINE是最好的,RING3级 稳定性与安全性还是很OK的、

Hooking the methods exposed by WININET.DLL gives the ability to interact with each request sending to server, including the AJAX request! 

The probable call sequence is shown as below: 

1=> InternetOpen
2=> InternetConnect
3=> HttpOpenRequest
// .............
X=> InternetCloseHandle  
By hooking these methods, it is possible for us to detect each request sent to the web server, and inject our codes before / after each request.

Why not WINSOCK? It is easier to hook methods exposed by WININET.DLL than hooking WINSOCK methods, since the former wraps the HTTP protocol.

There are two different ways in hooking, inline hook and routine hook. Inline hook is universal for almost all of the cases, however, routine hook is more robust. The sample implements it by modifying the IAT(Import Address Table), one of the routine hooks.

If you need more details about IAT hook, here is an article for reference. 

好吧,不在给自己找理由,本类库已经修正了一些命名 主要是把源代码移植到使用  API-Hook / RING3

上,我注解一些命名上的变动,实际上你改回去也是一样的。

Inline-Hook ->Ex-> NetHook

NetCut ->NetworkCut

NetTab -> NetworkTable

NetworkProtocol ->NetServer

NetTabCollection ->NetworkTableCollection

NetCutRequestComplete -> NetworkCutRequestComplete


不过我们到也可以可以看看,如果通过“封包 截包”技术可以轻松得到什么?


该处拦截的是ws2_32.dll导出的函数,有些人会问为什么不去拦截wsock32.dl呢?

你可以这样去看待,实际上这两个DLL并没有太大的区别,一个微软用于CString

一个用于string,本质上它是 CString-> string 所以是 wsock32.dll ->ws2_32.dll

Http请求首先会去解析对方主机的地址表,然后选择一个候选地址通过socket连

接对方的主机的80端口,一个完整的Http请求首先是客户端发送协议头,中包含

请求的协议头,对方接收到后进行一个处理并进行相应我们只需要去接受来自服

务器返回的数据包即可,微软在Internet Explorer 9中支持开发人员可以网络抓包

大概则是这样去实现的, 我是不太相信微软开发人员可能会使用 SOCK SPI 的、

在NetCut中你也可以实现获取类似的功能,只是相对性的会复杂一些,那么我举

一个列子我们需要获取请求返回给客户端的Cookie

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值