0x00 原理
端口重绑定就是端口共用,一个端口运行2个或多个服务。
这里分2种情况:
第一种情况,代码级别没有禁止端口重绑定,那么windows机制是会将流量转发到后注册这个端口的服务上,也就实现了流量劫持。
第二种情况,像IIS 80,SMB 445 这类端口,代码里禁用了端口重绑定,后注册的服务端口是不生效的,这里需要转换策略,用HTTP Server API库 HTTP Server Sample Application - Win32 apps | Microsoft Learn 进行路由层面的流量处理。
0x01 实现
这里主要介绍第二种情况。
vs 新建 C++ 空项目;
参考上面链接的代码api,
如果报错:const char*类型的实参与LPSTR 类型的形参不兼容
Visual Studio 2019 RTW(版本 16.0)中的符合性改进
Visual Studio 2019 中的 C++ 一致性改进 | Microsoft Learn
“/permissive-:启用所有严格标准符合性编译器选项,并禁用大部分特定于 Microsoft 的编译器扩展
如果发现以前正常的代码,在VS2019编译器中,提示有语言的问题,配置属性 -- C/C++ -- 语言 -- 符合模式 -- “是 (/permissive-)” 改成 “否”;
如果还有问题且不知道如何修改配置,可以将2个环境的 配置属性 -- c/C++ -- 命令行 里的内容复制出来,比对。
配置属性--调试--命令参数 “http://127.0.0.1:80/cxtest”
Project6.exe http://127.0.0.1:80/cxtest
访问 http://127.0.0.1:80/cxtest
0x02 后记
只是实现了一个接口,后续如果想实现更多功能还需更多优化,如果你也对端口复用感兴趣,欢迎交流讨论。