终于解决了 Netkeeper 占用后台和开热点的问题。
Netkeeper登陆界面
假如你用的是联通提供的个人网,那你应该很熟悉这个叫WO的校园
的软件了。它的下载地址在这里 。这是联通用来拨号上网的客户端软件。
购买了联通的个人网后(当时是被“强制”订的,奸商太坑),在客户端输入联通提供的用户名和密码,连通之后就可以上网了。曾几何时,我以为这是一个简单的拨号上网辅助软件。日子一天天过去,有一次我要用电脑开热点给手机用的时候,网络断开了,并弹出了这样的提示:发现共享软件。
Netkeeper发现网络共享软件后的提示
这个时候,我才发现了这个软件的真正目的:限制网络共享。在程序的安装目录可以看到这个软件的真正名字叫Netkeeper
。原来,联通给我们的上网密码并不是PPPoE
协议的拨号上网密码。真正的拨号密码是用这个软件的算法算出来的。这就使得用户不得不使用这个软件来上网。拨号成功后,Netkeeper继续留在后台监控是否有网络共享软件,若发现如猎豹Wifi之类软件的进程名,就会断开网络。如果直接退出Netkeeper,网络也会断开。这样,黑心的运营商便达到了它的目的:
一机一号
限制网络共享
真是名副其实的
“个人网”啊。但我怎能就这样轻易放弃?打开进程管理器发现有2个乱码进程,结束其中一个,Netkeeper提示“软件运行环境被破坏!”,然后就退出了。这两个进程还互相守护,结束其中一个,另一个就会发现并断网。
于是使用管理员打开CMD,tasklist
如下:
1 2 3 4 5 6 7 8 9 10 11 C:\WINDOWS\system32>tasklist 映像名称 PID 会话名 会话# 内存使用 ========================= ======== ================ =========== ============ System Idle Process 0 Services 0 8 K System 4 Services 0 1,952 K ... 702C4F30-F8C4-49EC-A1BD-5 11996 Console 1 22,680 K 702C4F30-F8C4-49EC-A1BD-5 6564 Console 1 77,028 K WmiPrvSE.exe 13884 Services 0 9,672 K tasklist.exe 11780 Console 1 7,780 K
1 2 3 C:\WINDOWS\system32>taskkill /f /pid 11996 /pid 6564 成功: 已终止 PID 为 11996 的进程。 成功: 已终止 PID 为 6564 的进程。
taskkill
成功结束进程,网络也没有断开。爽哉,终于可以开热点了~
不过每次启动都要打进程名字还是比较麻烦。查看netkeeper的安装目录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 D:\Program Files\NetKeeper>tree 卷 Software 的文件夹 PATH 列表 卷序列号为 0EEF-2F34 D:. ├─config ├─help │ └─picture ├─logs ├─run │ └─FF8AF4B3-DEC7-421A-948B-D24571B95BE0 │ ├─config │ ├─help │ │ └─picture │ ├─logs │ └─skin └─skin
在刚安装完软件的时候,run
文件夹是空的,第一次运行后,netkeeper把目录下所有文件拷贝一份进run/乱码
里,并且把NetKeeper.exe
改名为乱码.exe
,并且每次启动程序都改变一次乱码。这样就避免了自动化程序发现并结束掉自己。
经过一番百度,发现了神奇的wmic
命令,可以查询程序的运行路径。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 C:\WINDOWS\system32>wmic process get executablepath,caption Caption ExecutablePath System Idle Process System smss.exe csrss.exe wininit.exe csrss.exe services.exe lsass.exe C:\WINDOWS\system32\lsass.exe svchost.exe c:\windows\system32\svchost.exe ... 5D5AEDF7-DBDB-4CF8-B41A-9F4A00E17552.exe D:\Program Files\NetKeeper\run\FF8AF4B3-DEC7-421A-948B-D24571B95BE0\5D5AEDF7-DBDB-4CF8-B41A-9F4A00E17552.exe 5D5AEDF7-DBDB-4CF8-B41A-9F4A00E17552.exe D:\Program Files\NetKeeper\run\FF8AF4B3-DEC7-421A-948B-D24571B95BE0\5D5AEDF7-DBDB-4CF8-B41A-9F4A00E17552.exe WmiPrvSE.exe C:\WINDOWS\system32\wbem\wmiprvse.exe cmd.exe C:\WINDOWS\system32\cmd.exe conhost.exe C:\WINDOWS\system32\conhost.exe SearchFilterHost.exe C:\WINDOWS\system32\SearchFilterHost.exe backgroundTaskHost.exe C:\WINDOWS\system32\backgroundTaskHost.exe notepad.exe C:\WINDOWS\System32\NOTEPAD.EXE WMIC.exe C:\WINDOWS\System32\Wbem\WMIC.exe
可以看到,netkeeper已经露出马脚啦。无论进程的名字如何变化,程序的启动路径是不变的,其中都会含有
netkeeper\run
字样。这样,写出自动化的批处理脚本就容易了。
最终KillNetkeeper.bat
文件编写如下:
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 32 33 34 35 36 @echo off chcp 936 >nul set PATH =%SystemRoot% ;%SystemRoot% \system32;%SystemRoot% \System32\Wbemset PATHEXT=.COM;.EXE;.BAT;.CMD ;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSCtitle killNetKeeper by Beanbangecho 本批处理用于结束联通wo的校园NetKeeper软件进程echo 请右键使用管理员权限来运行:bac echo ----------------------------------------------------------------------echo 开始查找NetKeeper进程名...echo +for /f "delims= " %%i in ('wmic process get executablepath^,caption^|findstr NetKeeper\run') do ( if not "%%i "=="update.exe" set name=%%i ) if not defined name echo 未找到&echo 进程可能已结束,或没有以管理员权限运行&goto exit if defined name echo 找到了!进程名为 %name% TASKKILL /F /IM %name% ||echo 进程可能已结束&goto bye:exit echo +echo +echo 退出...ping -n 3 127 .1 >nul exit :bye echo +echo +echo 再见了,NetKeeper! :Pping -n 2 127 .1 >nul exit
运行文件就能自动查找并结束进程。
之后我又发现了netkeeper每次启动都会运行update.exe
文件来检查更新。于是打开codeblocks,写了一个简短的文件。
1 2 3 4 5 6 7 8 9 #include <iostream> #include <stdlib.h> using namespace std;int main () { system ("cmd /c killNetkeeper.bat&exit" ); return 0 ; }
目的就是运行killNetkeeper.bat,编译成update.exe。没错,偷梁换柱!当netkeeper启动后,想要检查更新时,它不知道已经打开了结束自己的文件。
KN运行后自动退出
从此以后,被限制网络的日子终于一去不复返了,也可以给自己和小伙伴开热点了。再见了,NetKeeper!
下载
killNetkeeper.exe
自解压文件,可以直接运行,也可以用WinRAR
打开。将文件重命名替换掉’Netkeeper/run/乱码’下update.exe即可。
后记
这个方法只能在Windows下能用,Mac没用过,Linux…连客户端都没有。
做这个软件的叫西安信利软件科技公司 ,产品的定义是“防私接客户端”,从功能上看确实做得挺好的。
有研究Netkeeper算法的项目叫SimpleNetkeeper,曾经一段时间用这个可以代替联通客户端,很好用。但是后来联通更新了算法,SN就不能用了,不过他们的通过路由器拨号的方法还是可以的(但我自己没试成功,而且个人网限速2mb/s,也不适合集体网使用)。不过最近好像不维护了,看官网 和这里 。