基调网络监测客户端状态监控工具

我初二时加入了基调网络监测联盟,成为了全国众多监测点中的一员。说通俗点,这就是一个高端的挂机网赚项目。作为一名资深的“业内人士”,我每个月都能从中获取一些报酬作为零花钱。这个平台的信誉很不错!至今,我已获得回报超过千元。呃,好像有些偏题……如果你想了解这个平台并加入其中,请自行百度。今天我只是想在这里发布最近自制的一个小软件而已~

官方开发的客户端向用户展现的信息是非常少的。你只能看到当前的任务信息,却无法知道你不在的这段时间里到底发生了些什么。于是我便策划着写个程序来监控客户端的行为,实时记录客户端的情况,并生成一份详细的日志供用户查看。

nbmonitor-1官方开发的客户端界面

学了那么多门语言,现在还掌握得不错的就是 Visual Basic 了……于是这次我又选择了 Visual Basic 2015 作为开发环境。

实现途径

注册表操作

经过对官方开发的客户端的不断深入研究,我 Get 了客户端的用户界面(表层程序)与执行部分(内部程序)之间的数据沟通方式,就是注册表。注册表里存储了许多信息,包括加密了的用户名和密码(项名称也不是明文,不知出于什么目的),侦测到的系统状态异常,详细的任务状态。我要做的就是把这些数据以友好的界面展示出来。

要想读取这些数据,无需使用 API 接口,通过 Wscript.Shell 中的 RegRead 方法可以很轻松地实现。

在对注册表进行操作的方面,Wscript.Shell 有三个方法,分别是 RegWrite,RegRead,RegDelete。

1.RegWrite

语法示例:RegWrite “HKCU\Software\Kagamiz\Test”, “Class”, “REG_SZ”
参数说明:第一个参数中,”HKCU\Software\Kagamiz\”,这是个主键及子键,”Test” 是值项。第二个参数就是值项的键值。第三个参数是键值的类型。
功能简介:在注册表中设置指定的键或值。

2.RegRead

语法示例:RegRead “HKCU\Software\Kagamiz\Test”
参数说明:同 RegWrite 的第一个参数。
功能简介:从注册表中返回指定的键或值。

3.RegDelete

语法示例:同 RegRead。
参数说明:同 RegRead。
功能简介:从注册表中删除指定的键或值。

服务控制

基调网络不同于其他常见的挂机程序之处在于,它使用安装系统服务的方式为执行部分的程序提权,从而绕过用户账户控制(UAC)。Visual Basic 2015 内置了控制系统服务的控件,调用起来十分简单。靠这个我就可以在我的软件中加入开始/停止执行任务的功能,同时如果发现侦测到的数据有逻辑错误(例如请求任务数量减少了,但服务并没重启过)时自动重置服务。

进程信息抓取

我希望我的软件能够获取服务开始运行的时间。基调网络的服务进程名为”NBService.exe”,该进程启动的时间也就是服务启动的时间。我们可以通过 WMI 来获取需要的信息。

WMI 是 Windows Management Instrumentation 的简写,它的功能主要是访问本地主机的一些信息和服务。

我的程序中是通过以下代码来获得进程启动时间的:

For Each Wmi In GetObject("winmgmts:\\.\root\cimv2:win32_process").instances_
If Wmi.Name = "NBService.exe" Then NBStartTime = Strings.Left(Wmi.CreationDate, 14)
Next

由于 Wmi.CreationDate 返回的是一个字符串,格式是 “YYYYMMDDhhmmssssssss” ,但时间的精确度太高,所以我们舍掉不用的部分,只取从左往右的 14 位值,也就是精确到秒,并赋值给 NBStartTime 这个变量,以便进行后续分割。

读写文件

既然要建设一个日志系统,那么肯定要涉及到读写文件。

在 Visual Basic 2015 中,我们可以通过 IO.File 来实现。

IO.File 的详细说明大家可到微软的 MSDN 社区上搜索。下面贴出我所使用的语句做示范:

IO.File.AppendAllText("NBMonitorLog\" & Format(TimeNow, "yyyy年M月d日") & ".txt", Format(TimeNow, "HH:mm") & " " & Log & vbCrLf)

这表示在当前软件运行目录下的 NBMonitorLog 目录中以当前日期为文件名的 .txt 文本中加入一句日志并换行。如果你想覆盖掉所有内容可把 AppendAllText 替换为 WriteAllText。

Format 用于把 Date 类型的变量进行格式变化。yyyy 代表 4 位的年份,M 与 d 分别代表月份与日期(不满两位也不用 0 扩充,例如 7 月就是 7 而不是 07。如果需要 0 来占位可使用 MM 与 dd),HH:mm 则分别代表扩充到两位了的时:分。特别要注意的是,这些特殊符号的大小写是有区别的。例如 M 代表月份,而 m 代表分钟。具体使用说明同样可在 MSDN 上查到。

功能与特色

请参见程序主界面。

nbmonitor-2

更新日志

2016 年 5 月 22 日 V3.0

1. 加入了看门狗功能

2016 年 5 月 15 日 V2.0

1. 修复了一些逻辑错误
2. 添加了图标

2015 年 7 月 21 日 V1.5

1. 一些小修订
2. 采取源代码保护措施

2015 年 7 月 20 日 V1.3&V1.4

1. 美化了程序界面
2. 减少了长时间运行错误发生的概率

2015 年 7 月 17 日 V1.2

1. 加入了 UAC 提示
2. 修复了一处注册表读取错误键值的问题
3. 当存在超时任务与上传失败任务时,该项文本将以不同颜色显示来提醒用户

2015 年 7 月 10 日 V1.1

1. 修复了部分情况下程序因权限不足而报错的问题
2. 大幅降低了 CPU 的占用率
3. 优化了日志的格式

2015 年 6 月 28 日 V1.0

1. 初始版本

下载地址

版本:V3.0
大小:249856 字节
SHA1:2C35034CEFAC4E99E95B4EFBAC59317C2D39B884
本地下载 | 百度云

注意事项

1. 如果运行程序时提示“应用程序错误”之类的错误,可能是由于你的计算机未安装 Microsoft .Net Framework 4.0 框架,请自行安装。如果仍不能解决,请在评论区回复。
2. 如果本软件的功能无法正常使用,请检查是否以管理员身份运行。
3. 本软件不损害任何个人与组织的利益。

支持我

如果小伙伴们觉得我的文章不错,请帮助我下载并运行集成了我账号信息的监测客户端吧~
它只会安安静静地躲在后台自己做任务,不会干扰你的正常使用,也不会给你的计算机带来安全隐患。
如果安全软件提示添加自启动项,安装服务之类的,恳请选择信任。
本地下载

11 条评论

发表评论

*

  • 求问博主,那个“集成了账号信息”的客户端,该如何制作呢…

    • 喔,好久没玩这个了= =
      首先利用NBUpdate.exe这个官方升级工具,它在运行时会自动联网检查目录下必要文件的版本,不存在或者非最新都会被下载更新。所以只要把它打包进去,用户启动它就可以自动从服务器补齐所需文件。
      其次是账号信息导入,比对安装登录前后注册表的变化,再根据键值推断含义,把有用的提取出来,写一个导入注册表的脚本就可以了~

  • 为什么不用Microsoft.Win32命名空间下的Registry.LocalMachine