资料看差不多了,开始动手改造Passthru。
发布的软件不能还叫Passthru吧,首先要改名。有几个地方需要动的:
1.编译目标文件,在sources文件中定义,改掉TARGETNAME即可。
2.目标文件变了,安装也要变,于是修改netsf.inf和netsf_m.inf,把Passthru全部改掉。
3.应用层调用也要改改,这就涉及到程序了,在passthru.c中进行修改。
编译,测试。再修改,测试,很快就把这个问题搞定了。现在这个安装过程看起来完全是我自己的,哈哈!
然后开始过滤测试,先拿收包开刀。修改PtReceive和PtReceivePacket函数,直接丢包,看起来不错,完全无法上网了。接着进行包的分析,丢弃所有ICMP,又通过了,开心!进一步对地址进行分析,只过滤部分ICMP,很顺利。通过Debug信息跟踪发现,PtReceive和PtReceivePacket函数都有调用,具体情况有待进一步分析。
顺便分析了BindingContext参数,一开始看到PADAPT的DeviceName是我安装的虚拟驱动,以为传进来的是自身信息。但仔细一想好像没什么道理,结合PtBindAdapter,发现参数首地址与实际网卡一致,又掉头来检查参数里的名字,才发现原来它绑定每块网卡有不同的名字,实际上跟物理网卡还是对应的。