随笔 - 6  文章 - 1 评论 - 280 阅读 - 37099
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

虽然在这儿潜水已久,但这是第一次写Blog。有不懂规矩的地方,还望各位海涵。

河南网通的用户应该都知道,网通最新的拨号客户端(Racer)禁止了共享上网,这给很多有多台电脑的用户带来了麻烦,虽然之前的几个版本也禁止共享,但总有各种变通的方式能够成功共享。比如使用软路由、IP安全策略等方法,但我在那时候没有遇到这个问题,所以了解的不多,我一直使用的Wiindows 2003,之前都能很顺利的共享,不需要做任何特别的设置,也帮朋友处理过这个问题,那时候记得用Sygate就解决了。
      不过就在前几天,我的客户端突然说进程异常,要我重新启动才行,我没理它,继续拨号,但一直掉线并报错。没办法,重新启动机器,的确好了,可是又很意外的提示我上网的机器太多,让我停止共享..我很奇怪之前一直好好的,为什么突然不行了。后来想可能是客户端自动更新了plus。这个没多想,我头疼的问题是如何解决共享问题,没想到我以前笑朋友RP不好才不能共享,现在我自己遇到麻烦了-_-.
       不用说,先Google.找到了N中解决方法,逐一实验但均宣告失败。某些方法能够持续个十几分钟,但始终逃不过Racer的监视。以前帮朋友解决问题的方法也不奏效了,看来新客户端的确加强了这方面的功能——虽然上网速度没什么改进。
      被折磨了几天,让我心神不宁,干什么都不爽。终于决定深入研究研究。
      好象现在才说到正题[object]:
      首先了解监视共享行为的大概原理。Racer使用的非常关键的一个东西:NPF(网络组包过滤)。网上也有文章指出通过删除NPF驱动的方法使Racer的监视失效,但这个方法已经不行了。Racer如果检测到NPF驱动没有运行或者被标记删除就会报告进程异常,让重新启动才行。不过抓住藤离摸到瓜也不远了。首先看看Racer目录下边的文件,那些个DLL们。其中的 packet.dll,wpcap.dll,wanpacket.dll 就是使用NPF需要调用的。接着使用stud_PE挨个看其他哪个DLL或者EXE调用了这些DLL。不难发现,我们要继续研究的目标就是:nss4.dll
        nss4.dll 导入了 wpcap.dll 的7个函数。具体是什么我们不需要关心。我们关心的是nss4做了什么。
        同样使用stud_pe可以看到nss4.dll 有6个导出函数:
          GetCountNum,IsMonitorRunning,StartMonitor,StartMonitorProcess1,StopMonitor,StopMonitorProcess1
        我想..这6个函数名是我这篇Blog里可读性最高的一行文字了吧(包括我写的文字-_-).
        该IDA登场了,打开nss4.dll,大致看一下StartMonitor函数。其中的流程基本很明了,特别是以下一段
.text:10004B8B                 test    eax, eax
.text:10004B8D                 mov     [esp+1Ch+var_4], 0FFFFFFFFh
.text:10004B95                 mov     [esi], eax
.text:10004B97                 jz      short loc_10004C10 <------------ 注意,注意
.text:10004B99                 push    edi
.text:10004B9A                 push    offset aAntiproxyStart ; "antiproxy starting on netcard %d"
        0x10004B97处的跳转如果实现,那么从后边的代码可以知道StartMonitor函数就直接返回了。而之前的一些代码似乎是在检查用户的网络配置环境的,我没有细看。大致可以猜到如果检测到用户有共享上网的条件(如在局域网什么的),那么就会开始所谓的 AntiProxy 工作。否则就返回。且不管Racer主程序是如何定时调用这个函数,也不管到底是哪个模块调用这个函数,也不管RacerKP.exe(号称dhcpkeeper)是如何守护。我想现在已经非常明白了,我们只需要在这里做文章。而事实上经过调试和后来的使用也证明了这一点。
        只要我们将 10004B97 处的 jz short loc_10004C10 修改成无条件跳转 jmp 10004C10,那么Racer精心安排的一切监视进程就全盘失灵了。
        总结下来,我们只需要修改nss4.dll的 1个字节 :将 0x10004B97  的 74 修改为 EB 即可!
        具体的修改方法有很多,很多16进制编辑器都可以。我比较喜欢使用  HIEW。另外比较流行的UltraEdit,网上有很多介绍如何使用16进制编辑器修改程序的文章,这里我就不多说,不会改的朋友就多费点心找些文章看下,比葫芦画瓢改一下。记得改之前备份。Enjoy It!
       
[2006年2月24日最新更新:]
        这个帖子去年10月份就已经发了,看到现在还有很多朋友为这事儿头疼,我还是再多说明一些吧.
        首先如果你不是搞编程技术的,那么就不用尝试参照我这片烂文去改了,这文章里说的含糊不清,怕误导你们.大家可以去google或者baidu搜索一下 NSS4 ,很多地方已经提供下载了. 这里不方便直接提供给大家下载,请见谅.值得说明的是,这个补丁绝对可用,自从去年10月我搞定之后,到现在一直用的都是,而且给好多朋友也发了,都没有问题.所以如果你使用的时候出现问题,先看一下自己使用的是哪个版本的客户端. 我的操作系统是windows2003,客户端是最新的版本.
        另外特别感谢一下 樂ツ緣分  ,他一直在为留EMAIL的朋友发补丁.

[2007年4月26日最新更新:]
        没有想到一直有朋友为这个问题苦恼。
        这里我很少来看,有需要帮助可以给我发邮件 149126#qq.com
posted on   Dr.Yao  阅读(12149)  评论(212编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示