- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用 NdisRegisterProtocol()
来注册协议(protocol)驱动程序,并使用 _NDIS_OPEN_BLOCK
和 _NDIS_PROTOCOL_BLOCK
结构来 Hook ReceivePacketHandler
成功,使用 MyRecivePacket() 而不是 NDIS 接收数据包功能,当我打开一个网站时, MyRecievePacket()
将运行。
我的问题是:当我使用 IE
打开网站(如 www.stackoverflow.com
)时,我如何 Hook SendPacketsHandler
以获取此数据包并获取url www.stackoverflow.com
字符串。也就是说,如何在内核态下抓取url。谢谢
最佳答案
这不是你通常应该做的事情,URL
数据属于网络堆栈的应用层,不应该被驻留在内核空间中的较低层访问。在此处查看有关 Windows 网络体系结构中协议(protocol)驱动程序分层的更多信息:http://msdn.microsoft.com/en-us/library/windows/hardware/ff571073(v=vs.85).aspx
但是,通过位于其之上的协议(protocol)(例如 HTTP
、TCP)删除在到达协议(protocol)驱动程序的过程中添加到数据包的 header 可能是可能的
、IP
等。您需要知道在前往协议(protocol)驱动程序的途中应用于数据包的确切协议(protocol)。标题是递增添加的,对于每个底层,来自上层的输入是一个不透明的数据 block (由上层数据和标题组成)。例如,您的数据包可能以纯数据开始,在开始时向其添加 HTTP
header ,之后添加 TCP
header ,然后添加 IP
header 那。您需要以相反的顺序删除 header 以恢复原始数据。
请注意,这并不总是可行的,因为下行协议(protocol)可能会更改数据,例如通过加密它。在这种情况下,您将无法通过执行反向操作(例如解密)来提取原始数据。
关于c - NDIS 钩子(Hook) sendPacketsHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581939/
我使用 NdisRegisterProtocol() 来注册协议(protocol)驱动程序,并使用 _NDIS_OPEN_BLOCK 和 _NDIS_PROTOCOL_BLOCK 结构来 Hook
我是一名优秀的程序员,十分优秀!