能力值:
( LV2,RANK:10 )
|
-
-
2 楼
是不是这个问题? 你发送的字节改变了,然后应用层send的时候 返回的值不一样 导致上层认为发送失败?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
内容改变.只要长度不变的话,那是没问题的,,但如果长度变更长了,那就不行了
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
你修改的是TCP包不?TCP包头里有windows块设置,不是想发啥就发啥的。每一包都有CheckSum的,如果中间一个bit变化了都会使得三次握手,得到的信道,瞬间Reset,另外你对付的服务器,肯定莫防火墙,没强制检查滑动块。你试试Bing的或Google的服务,错一个bit都叫你reset
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
那我该如何做呢?? 是TCP 而且还是Get的...比如拿百度来说.
拦截下来的地址是
GET / HTTP/1.1
Host: a0dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0S2K9h3c8#2i4K6u0W2j5$3!0E0
下面的略了..
然后我修改成
GET /s?wd=aa HTTP/1.1
Host: 5abK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0S2K9h3c8#2i4K6u0W2j5$3!0E0
再发出去.那浏览器返回错误的提示
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
 去看TCP1-6卷,不用我说,你自然明白,另外跟Http关系不大,要看TCP连接状态。就这块代码,我记得连学再做整半年才懂,挺不好理解的。还是看书来的快。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
呵呵,干啥呢你
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
发送的时候 在TCP/IP层才有效验的 这个基本属于AFD层吧 好像没有效验和
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
这个情况就跟HOOK SEND函数修改了BUF一样 返回值要改为新的BUF的大小 你去试试
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
TCP1-6卷在哪看的??
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
738K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0S2K9h3c8#2i4K6u0W2j5$3!0E0i4K6u0r3M7#2)9K6c8Y4N6V1i4K6y4p5N6r3y4H3i4K6t1#2x3U0m8A6M7q4)9J5y4f1f1#2i4K6t1#2z5p5c8Q4x3U0f1^5c8W2)9J5y4f1f1^5i4K6t1#2b7f1g2Q4x3U0g2m8c8g2)9J5y4f1f1^5i4K6t1#2b7f1k6Q4x3U0g2m8y4W2)9J5y4f1f1^5i4K6t1#2b7e0N6Q4x3U0g2m8x3#2)9J5y4Y4u0K6N6W2)9#2k6X3u0H3i4K6y4p5x3g2)9J5y4Y4c8F1i4K6y4p5j5X3q4A6k6s2g2Q4x3U0k6J5M7%4k6Q4y4h3k6K6M7s2c8Q4x3@1b7K6i4K6t1$3K9h3g2Q4x3@1c8#2N6r3k6Q4x3X3b7^5i4K6t1$3M7Y4y4$3i4K6g2X3M7%4g2Y4x3#2)9K6c8o6g2Q4x3U0k6J5M7%4k6Q4y4h3k6K6N6h3M7@1i4K6y4p5x3e0l9I4i4K6t1$3M7Y4y4$3i4K6g2X3M7%4g2Y4x3g2)9K6c8o6g2Q4x3U0k6G2M7g2)9K6c8s2c8U0M7q4)9J5y4e0t1H3K9i4m8Q4x3U0g2q4y4g2)9J5y4e0S2p5i4K6t1#2z5p5k6Q4x3U0g2q4z5q4)9J5y4f1q4q4i4K6t1#2b7f1g2Q4x3U0f1J5x3q4)9J5y4f1f1#2i4K6t1#2z5p5c8Q4x3U0g2n7y4#2)9J5y4Y4u0K6N6W2)9#2k6Y4y4#2k6K6u0Q4x3@1b7H3i4K6t1$3k6W2)9K6c8o6S2Q4x3U0k6A6L8Y4m8#2N6q4c8Q4x3@1b7$3z5o6b7^5i4K6t1$3j5Y4y4Q4x3@1c8@1j5%4m8Q4x3U0f1J5x3r3W2H3i4K6t1#2c8e0g2Q4x3U0f1^5c8q4)9J5y4e0S2r3i4K6t1#2c8e0S2Q4x3U0g2m8c8g2)9J5y4f1q4q4i4K6t1#2c8e0g2Q4x3U0f1^5c8q4)9J5y4f1t1%4i4K6t1#2c8e0c8Q4x3U0g2n7z5q4)9J5y4e0R3H3
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
重新说明一下吧,他Connet后,协议栈形成Tcp连接,如果他发送一次后,后面再修改发送,必定要招至checksum和目标checksum不一至的情况,第一次发送莫问题,但第二次发送如果改的话,ack风暴就刮起来了。然后就是对方或自己reset
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
这个倒是有可能,他得自己定义一个新的缓冲区。
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
可是ZwDeviceIoControlFile返回的不是buf的大小啊
是不是call 原ZwDeviceIoControlFile后.修改IoStatusBlock->Information为新的buff大小?
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
没错没错没错没错
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
刚才我去试了,call 原ZwDeviceIoControlFile后.IoStatusBlock->Information 等于我修改后的大小啊..都不用我去修改就是一样的大小..
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
 必须是新buff的大小噢。这个tdi层改数据的方案不好,回到ws2_32.dll去hook,TDI内要形发送序列的。搞不好checksum就出错了
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
先感谢您一直关注...我改的是新buff的大小..依然不行...如果是hook ws2_32.dll层的API..那得Hook 四到六个API..觉得有点太麻烦..ws2_32.dll层的api估计改数据也差不多的吧
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
 表客气,我也在找我问题的答案。另外一般情况下都是ws2_32.dll去拦,如果想把所有数据都收进去拦,要处理的问题太多,远不像网上说的随便改TDI数据,但可以拦,拦劫无非返回一个无效就完 了,但修改需要处理的问题非常多的。如果你想更底层去修改数据,建议走NDIS。
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
拦截数据已经实现了..现在困在修改数据了...都找了几天百度了,,依然没找到解决问题的方法..都有点想放弃了..哎..如果能找资料解决的话,也不想去麻烦别人,浪费别人的时间
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
WPE都是走ws2_32.dll的,TDI层修改数据,天生不足,倒不是说就绝对不可以改,反正我感觉问题太多,从这一层走。如果一定要在底层改数据,NDIS或直接做自己的万能网卡驱动,比较实际。不管是哪一种方案,TDI,NDIS,DDM驱动都需要过硬的TCP/IP知识,这是基础噢,所以我建议你去看1-6卷的那些基础资料,看完以后,你自然会明白这些原理。原比我在这跟你凭空讲要来的快,毕竟那些东西都是成体系的。
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
好的,谢谢您...
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
感谢您的提醒,虽然你的提醒不对,但还是感谢您...
要修改的不是新的大小,而是旧的大小才能欺骗得了上层的检测...
IoStatusBlock->Information 把这个值修改成原数据大小就OK了!!
哈哈终于解决了!
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
对的 我都搞乱了 是旧的大小。。
以后我HOOK SEND的时候就这样 是我调过来说了
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
哥,那Hook recv 又是怎么填写呢?
|
|
|