【求助】如何通过NtDeviceIoControlFile获得IP地址、端口信息

neji_bai 2012-05-15 11:20:51
通过SSDT HOOK 挂钩了NtDeviceIoControlFile
但是不知道如何从输入输出buffer里获得TCP/UDP相关的信息,主要就是源、目的IP和端口信息
应该是可以得到的吧
...全文
578 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
thegfw 2014-08-14
  • 打赏
  • 举报
回复
楼主可能补充下结构么?
neji_bai 2012-05-18
  • 打赏
  • 举报
回复
差不多是这样,XP下用了一些TDI开头的结构体搞定了。

Lactoferrin 2012-05-17
  • 打赏
  • 举报
回复
自己搜
Lactoferrin 2012-05-17
  • 打赏
  • 举报
回复
winsock的是
neji_bai 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

DeviceIoControl是个很通用的东西,各种驱动程序都可以用这个
[/Quote]
这个我知道
我是想说 网络通信这里 就是afd结构了吧
neji_bai 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

这个是win7的一种
[/Quote]

请问能在哪找到这些结构
Lactoferrin 2012-05-17
  • 打赏
  • 举报
回复
DeviceIoControl是个很通用的东西,各种驱动程序都可以用这个
neji_bai 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

对afd是这样
[/Quote]
还有别的情况?
Lactoferrin 2012-05-17
  • 打赏
  • 举报
回复
对afd是这样
neji_bai 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

自己搜
[/Quote]

也就是说DeviceIoControl用的就是几种AFD结构做输入、输出内容的吧
只是不同版本细节有差异
Lactoferrin 2012-05-16
  • 打赏
  • 举报
回复
首先判断文件对象名是不是afd的,然后根据ioctlcode解读buffer
Lactoferrin 2012-05-16
  • 打赏
  • 举报
回复
这个是win7的一种
neji_bai 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

tcp的是连接的时候指定ip
typedef struct _AFD_CONNECT_INFO {
PVOID UseSAN;
PVOID Root;
PVOID ConnectEndpoint;
struct sockaddr RemoteAddress;
……
[/Quote]
这个是2k的?
也就是说找类似的AFD结构来获得buffer的信息吧
这些是高手逆出来的还是有ms的文档?
Lactoferrin 2012-05-16
  • 打赏
  • 举报
回复
tcp的是连接的时候指定ip
typedef struct _AFD_CONNECT_INFO {
PVOID UseSAN;
PVOID Root;
PVOID ConnectEndpoint;
struct sockaddr RemoteAddress;
} AFD_CONNECT_INFO , *PAFD_CONNECT_INFO;
winxp不是这样的,win7也不全是这样的,我还没搞清楚win7有哪几种AFD_CONNECT_INFO
neji_bai 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

winsock和协议驱动程序就通过afd中转
举个栗子,IOCTL_AFD_SEND对应的是typedef struct _AFD_SEND_INFO {
LPWSABUF BufferArray;
ULONG BufferCount;
ULONG AfdFlags;
ULONG TdiFlags;
} AFD_SEND_INFO, *PAFD_SEN……
[/Quote]
这个结构下没有IP PORT或者ADDRESS一类的信息啊。。
Lactoferrin 2012-05-16
  • 打赏
  • 举报
回复
winsock和协议驱动程序就通过afd中转
举个栗子,IOCTL_AFD_SEND对应的是typedef struct _AFD_SEND_INFO {
LPWSABUF BufferArray;
ULONG BufferCount;
ULONG AfdFlags;
ULONG TdiFlags;
} AFD_SEND_INFO, *PAFD_SEND_INFO;
不过这些类型在win7和winxp有的有差异
neji_bai 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

首先判断文件对象名是不是afd的,然后根据ioctlcode解读buffer
[/Quote]
判断文件对线是不是afd的,是判断是不是tcp/udp包吧
然后根据code解读buffer 就是这里 用什么结构来解读buffer 获得里面的信息

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧