最近想要从使用一个网速监控的软件来查看自己的电脑,看看计算机中到底哪个进程占用的网络资源比较多。发觉360中的网络监控还不错,可以看到每个进程所使用的带宽多少,但是又不想安装整个360安全卫士,于是自己就决定自己把网络监控部分功能的文件提取出来,单独使用。
首先打开360安全卫士的网络监控功能,使用procexp.exe(这个程序在SysinternalsSuite中有,需要可以到微软网站去下)可以看到对应的进程的Image文件是360AppLoader.exe,自己直接运行360AppLoader.exe发现无法启动,就觉得可能是Command参数没有输入。当然在procexp.exe中看到的CommandLine是空的,这是360AppLoader.exe把它给清空了,于是便使用Windows注册表中Image File Operation注册项下的Debugger值,设置成WinDbg。 使用WinDbg挂着360AppLoader.exe运行,于是就把Command参数给取得了,如下:
"C:\Program Files\360\360safe\360AppLoader.exe" /module=netmon\360NetFos.dll /compatible=1 /create=CreatePage /init=InitPage /uninit=UnInitPage /canrun=IsSupported /border=5 /title=360流量监控 /wndclass=Q360NetFosClass /disableskin=1
按照这个命令行,把360AppLoader.exe和对应的netmon目录都拷贝出来。再使用WinDbg直接运行360AppLoader.exe,当然需要输入上面的Arguments,运行时把发现不能加载的模块都从原来安装目录拷贝出来,最后就可以单独运行了。
上图就是这些基本的文件,其中config是界面配置文件,可以不要。
再使用CMD,在拷贝出来的文件中直接运行360AppLoader.exe /module=netmon\360NetFos.dll /compatible=1 /create=CreatePage /init=InitPage /uninit=UnInitPage /canrun=IsSupported /border=5 /title=360流量监控 /wndclass=Q360NetFosClass /disableskin=1就可以使用网络监控功能了。
也可以给360AppLoader.exe创建一个快捷方式,在快捷方式的目标中输入上面的参数:如下图(显示不全)
当然还有些问题,程序启动的时候会提示找不到deepsacn目录下的一些文件,这些文件本身对网络监控应该是没有用处的,是用于扫描的。如果你不希望它弹出提示,可以把deepscan目录和其下的几个文件拷贝过来就可以了。
其实我估计可能根本都不需要这么多文件,也不需要360AppLoader.exe 文件,使用Depend.exe可以看到360NetFos.dll会导出函数
CreatePage、InitPage、UninitPage、IsSupported,估计所有处理的代码都在360NetFos.dll中,而360AppLoader.exe 只是提供一个显示的容器,就像Windows的Exporer属性中的扩展Page一样。所有要处理,显示的都在自己的explorer插件dll中。
这样一来只要自己写一个外部的显示容器,直接调用360NetFos.dll导出的函数就可以了,当然这可能要你先反汇编360AppLoader.exe文件,看看它原来的处理逻辑是什么样的就可以了(这个文件不大,也没有加壳过)。今天就偷懒不反汇编看了。有时间再弄弄吧。如果想反汇编分析逻辑,推荐IDA+WinDbg(或OD)。
下面我提取出来的文件。文件都是360原来的文件,都是有360公司的数字签名的,我没有修改过。
直接运行下载下来的文件中“360AppLoader.exe - 快捷方式”。
不过需要根据360AppLoader.exe的位置设置才能用。可以参考其中的ReadMe.txt文件。