首页
社区
课程
招聘
[求助]winhttp的一个奇怪的现象
发表于: 2016-7-20 10:13 6852

[求助]winhttp的一个奇怪的现象

2016-7-20 10:13
6852
楼主想hook winHttpOpen,然后就用apimonitor跑了一下,结果发现一个奇怪的现象,整个调用过程没有用到connect和WSAConnect,请问下有没有人知道这是怎么回事?

WSASocketW ( AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED )
bind ( 920, 0x034ffac8, 128 )
setsockopt ( 920, IPPROTO_TCP, TCP_NODELAY, 0x034ffac0, 4 )
htons ( 80 )
WSAIoctl ( 920, SIO_GET_EXTENSION_FUNCTION_POINTER, 0x034ffb44, 16, 0x034ffabc, 4, 0x034ffab8, NULL, NULL )
WSARecv ( 920, 0x004d59d0, 1, 0x045df864, 0x045df868, 0x004d5920, NULL )
WSAGetLastError (  )
WSASend ( 920, 0x004de4a8, 1, 0x045df848, 0, 0x004de3f8, NULL )
WSARecv ( 920, 0x004f1358, 1, 0x0471fc4c, 0x0471fc50, 0x004f12a8, NULL )
WSAGetLastError (  )
WinHttpReceiveResponse ( 0x004e8150, NULL )
WinHttpQueryDataAvailable ( 0x004e8150, 0x03e3f1ac )
WinHttpReadData ( 0x004e8150, 0x00507860, 1, 0x03e3f1a0 )
WinHttpQueryDataAvailable ( 0x004e8150, 0x03e3f1ac )
WinHttpReadData ( 0x004e8150, 0x00507860, 0, 0x03e3f1a0 )
WinHttpCloseHandle ( 0x004e8150 )
WinHttpCloseHandle ( 0x004e8068 )

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
SIO_GET_EXTENSION_FUNCTION_POINTER
WSAID_CONNECTEX
2016-7-20 14:17
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mty
3
多谢指点
我想是想hook winHttpOpen系列的API,以达到透明代理目的(需要对win32的通讯接口重新实现)。我刚才测试了一下,winHttpOpen这类函数在不同的平台上通信实现不一样,win7上该系列函数使用了异步socket(WSASend等)实现的通讯,而xp上使用的仍然是select模型。
考虑到异步的WSASend和WSARecv这类函数比较复杂,想实现一个稳定的hook可能比较难。
我刚才有个想法,把xp的winhttp.dll替换到win7下,这样就能使所有的平台在调用winHttpOpen系列函数时都是使用的select模型,这样我就可以简单的达到目的。
但是我不知道这样做有没有问题,请各位前辈多指点
2016-7-20 17:17
0
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
hook可以考虑更下层的比如NtDeviceIoControlFile.
最佳的做法是驱动, 当然会略复杂, 简单实现可以用WinDivert, 他提供了用户态接口, 可以直接不写驱动就做到你的需求
2016-7-20 20:26
0
游客
登录 | 注册 方可回帖
返回
//