-
-
[求助]hook怎么实现修改dscp值?
-
发表于: 2020-11-12 20:40 2474
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | void SetDSCP(SOCKET s, int new_dscp) { int retval, ec; int tos = 0 ; int toslen = sizeof(tos); retval = getsockopt(s, IPPROTO_IP, IP_TOS, (char * )&tos, &toslen); if (retval = = SOCKET_ERROR) { ec = WSAGetLastError(); dbg( "getsockopt(%d)=SOCKET_ERROR. ec=0x%x, msg:%s" , s, ec, GetErrorMsg(ec)); } else { ec = WSAGetLastError(); dbg( "getsockopt(%d,%d)=%d. ec=0x%x, msg:%s" , s, tos, retval, ec, GetErrorMsg(ec)); } int iptos = new_dscp << 2 ; retval = setsockopt(s, IPPROTO_IP, IP_TOS, (const char * )&iptos, sizeof(iptos)); if (retval = = SOCKET_ERROR) { ec = WSAGetLastError(); dbg( "setsockopt(%d)=SOCKET_ERROR. ec=0x%x, msg:%s" , s, ec, GetErrorMsg(ec)); } else { ec = WSAGetLastError(); dbg( "setsockopt(%d,%d)=%d. ec=0x%x, msg:%s" , s, tos, retval, ec, GetErrorMsg(ec)); } } int PASCAL FAR New_connect(IN SOCKET s, IN const struct sockaddr FAR * name, IN int namelen) { SetDSCP(s, 2 ); return Old_connect(s, name, namelen); } |
结果一直返回SOCKET_ERROR。
getsockopt(956)=SOCKET_ERROR. ec=0x273a, msg:在 getsockopt 或 setsockopt 调用中指定的一个未知的、无效的或不受支持的选项或层次。
setsockopt(956)=SOCKET_ERROR. ec=0x273a, msg:在 getsockopt 或 setsockopt 调用中指定的一个未知的、无效的或不受支持的选项或层次。
hook connect函数,在连接前先修改DSCP,这个思路有错吗?请问错在哪里需要才能实现修改dscp呢?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-11-12 20:43
被qkong编辑
,原因:
赞赏
看原图
赞赏
雪币:
留言: