最近在做这么个程序
windows下,首先用钩子函数HookAPI,勾挂出调用send,sendto,accept,connect的进程。再对发送的数据包进行处理。
这里想问一下,在捕获数据包后,能不能修改数据包的ip头信息。就是ipTos,ipTTL等。
有没有什么好的方法?
setsockopt可不可以实现这样的功能?
如果可以,怎么实现?

解决方案 »

  1.   

    为了安全,微软已经屏蔽了这个功能,所以你别想了。
    如果随便可以改的话,岂不是很容易做个黑客工具?Windows就不安全了?
      

  2.   

    用setsockopt是不能实现的,它是在创建连接前设置一些socket的属性。仅仅hook这些send,sendto,accept,connnect是不行的,它们刚刚准备往传输层送数据,这时候还没有ip头信息。如果要改ip包头的信息你至少要hook在ip层之下,等数据分组加了ip头之后才能修改,修改后还要重新技术ip头的校验和。