首页
社区
课程
招聘
[求助]请问在Win7如何直接从\Device\Nis枚举端口/IP/进程的信息?
发表于: 2010-4-15 16:07 7122

[求助]请问在Win7如何直接从\Device\Nis枚举端口/IP/进程的信息?

2010-4-15 16:07
7122
在xp底下有以前大牛写的现成的代码,
构建一个
TCP_REQUEST_QUERY_INFORMATION_EX
直接DeviceIoControl给
\Device\TCP即可得到端口的情报

到了Win7换成了nsiproxy.sys,
于是我想同样的发一个
DeviceIoControl给
\Device\Nis
去取得端口情报,

        lpOutBuffer = (NSI_PARAM *) LocalAlloc( LMEM_MOVEABLE, 0x3Cu );
        lpInBuffer = (NSI_PARAM *) LocalAlloc( LMEM_MOVEABLE, 0x3Cu );
        DWORD len;
        len = 0x3Cu;

    status = DeviceIoControl( NSIDriverHandle,
                          0x12001Bu, // Cmd code
                          lpInBuffer,            // Pointer to input buffer
                          0x3Cu,     // Size of ipt buffer
                          lpOutBuffer,         // Ptr to output buffer
                          0x3Cu,       // Size of output buffer
                          &len,       // Actual size of array
                          0 );
      status = GetLastError( );

可是status一直都是0x000003e6

0x12001Bu是IOCTL_CODE应该是对的,
问题可能出现在lpInBuffer,
这个部分不知道该如何构建呢?
请各位大牛赐教一二,多谢了~~~

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 75
活跃值: (688)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
http://msdn.microsoft.com/en-us/library/bb432313(v=VS.85).aspx

If the operation succeeds, DeviceIoControl returns a nonzero value.

If the operation fails, DeviceIoControl returns zero. To get extended error information, call GetLastError.
没玩过这个ioctl_code,但从返回值看,已经成功返回了,不知道楼主还在考虑什么咚咚
2010-4-15 17:18
0
雪    币: 492
活跃值: (53)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
多谢你的答复,
那个status code是GetLastError( )返回的
这个的确很少见,不过在win7下面似乎直接给nsi直接发ctl_code才行
2010-4-16 08:33
0
雪    币: 75
活跃值: (688)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
噢,偶理解错了,sorry
2010-4-16 12:09
0
游客
登录 | 注册 方可回帖
返回
//