集思广益,大家帮帮忙。给结实一下,该怎么处理

集思广益,大家帮帮忙。给结实一下
当防火墙拦截到某程序访问网络时。
  会显示出这个程序要访问的IP地址。。~`
  如何替换掉这个IP地址? 让防火墙显示的IP地址是自己定义的地址?

------解决方案--------------------
//如何实现? 
如果楼主对驱动(DDK)编程有了解的话,应该不难做到。简单说就是使用

IoGetDeviceObjectPointer API 获取 \\DEVICE\\TCP 设备对象,从

而得到对应的驱动对象。然后替换 IRP_DEVICE_CONTROL 处理例程即可。
------解决方案--------------------
要不,你就走路由,建个虚拟的拨号连接,你的程序的通讯都走这个路由。
不知道防火墙会不会显示的是其他的目标ip,好像是,很久以前做过,记不大清楚了,你可以试一下。

MIB_IPFORWARDROW pai = {0};
memset(&pai, 0, sizeof(MIB_IPFORWARDROW));
pai.dwForwardIfIndex = g_nIfIndex; //使用的网络设备接口索引值
pai.dwForwardNextHop = g_nIpAssigned; //下一跳的地址,即网关地址

pai.dwForwardDest = nIP; //路由到的目标网络地址
pai.dwForwardMask = inet_addr("255.255.255.255"); //路由到的目标网络子网掩码
pai.dwForwardProto = 3;
pai.dwForwardType = 3;
pai.dwForwardMetric1 = 1;
pai.dwForwardAge = 0;
pai.dwForwardPolicy = 0;
pai.dwForwardMetric2 = 1;

Ret=CreateIpForwardEntry(&pai);