首页
社区
课程
招聘
[讨论]能不能复制其它进程的socket ?
发表于: 2017-3-25 00:23 4748

[讨论]能不能复制其它进程的socket ?

2017-3-25 00:23
4748


我们知道,可以"窃取"其它进程的句柄(代表的内核对象),比如用DuplicateHandle,如果指定DUPLICATE_CLOSE_SOURCE,更加可以禁止了源进程对这个对象的使用(重新获取除外)。


我想,socket与Handle不是同一类型的东西,至于它是否像Handle一样一定指向一个内核对象,我也不确定。但毫无疑问的,socket是一个编号,这个编号只对当前进程有效(这又有点像Handle)。


我假设这种情况,进程A 与服务器通信:1 2 3 4 ... 此时进程B 想要劫持这条通信,并且维持住数据包(即劫持之后要发送 5 6 7 ..); 当然,方法有很多,比如各种各样千奇百怪的Hook,甚至去到内核中进行过滤处理。


但是,需要结束进程A,因为进程A无用的通信太多,耗费资源太多;这就引出了这个问题:有没有方法,复制其它进程中的socket到自身进程中,继续进行数据的收发。




[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 222
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不懂得太多
2017-3-25 02:44
0
雪    币: 36
活跃值: (212)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
睡不着翻翻MSDN,竟然有WSADuplicateSocket这个东西,是自己太孤陋寡闻了!
2017-3-25 03:09
0
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
raw socket即可得到各种包
2017-3-26 17:37
0
雪    币: 433
活跃值: (2130)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
当然可以....不然你以为怎么模拟发包的...
2017-3-27 21:52
0
雪    币: 382
活跃值: (442)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
6
create socket 其实就是CreateFile /device/afd的句柄。。可以直接dup的。bind之类的操作在内部就是直接对这个句柄进行DeviceIoControl的。
2017-3-29 19:05
0
游客
登录 | 注册 方可回帖
返回