我住的地方开始实施上网实名认证,大概是有些人在网上说话写字不是很负责任吧,对了这个倒没有什么要评论的。问题是那个上网认证客户端软件--城市热点的DR.COM宽带认证客户端,只要开启DR.COM接到INTERNET,局域网内计算机之间网络通讯就会出现问题--无法在局域网玩CS、BF2等游戏,DR.COM的作法未免太霸道了。
在网上找到了一个解决办法,是通过虚拟网卡(所谓VPN)在INETERNET上虚拟出一个局域网,这个方法还是可行,不过总觉得这种作法开销较大,网速也不如以前了,不得已决定自己试着解决问题。
以下是我的作法,解决了运行DR.COM后无法玩局域网游戏的问题,有需要的网友可以参照着试一下,注意风险自负。
步骤如下:
1)确认上网客户端软件名称和版本,本方法证实适用于DR.COM宽带认证客户端V3.482,其他版本没验证过。
2)在DR.COM安装路径找到(默认为"C:\Program Files\Dr.COM 宽带认证客户端")"ishare_user.exe",对该文件作备份,需要时可以还原。
3)用UltraEdit-32打开"ishare_user.exe",应该显示为十六进制,如果不是应选为"十六进制编辑"方式。
4)用UltraEdit-32的查找功能,二进制方式查找"68 E8 03 00 00 FF 15 C0",找到后将其改为"68 FF FF FF FF FF 15 C0",将文件存盘,退出EltraEdit-32。
5)远行DR.COM宽带认证客户端,上网认证,局域网的通讯应该恢复正常了,可以通过ping指令查检网络是否恢复正常。
原理:
通过反汇编发现ishare_user.exe运行之后,将创建一个守护线程(这是暂称为线程A),线程A每间隔一秒钟查检一次本机ARP缓冲区,发现有记录就清空ARP缓冲区,导致运行DR.COM宽带认证客户端的计算机,无法觉察到局域网中其他计算机的存在,局域网通讯会出现问题。问题找到了,解决的办法有一些,比如可以改变删除ARP缓冲区的条件,使ARP缓冲区不被清除,我懒得对查机器码,直接将Sleep的参数改成INFINITE,这个参数原来是1秒,改成INFINITE后线程A永远睡眠,也就无法定期清除ARP缓冲区,问题解决。
顺便提一下,网上有文章说安装SYGATE可以实现一拖多的方式上网,我认为这种方法对于V3.482版本是行不通的,在上面提到的线程A中,每间隔一秒钟检测一次是否有sgserv.exe服务,发现该服务就将其杀死,可见用SYGATE来实现一拖多上网是有问题的。
用户182793 2008-12-4 13:41
用户182793 2008-12-4 10:46
用户182793 2008-12-4 10:46