学生端杀手

前言

目前大多数电子教室使用的学生端软件是极域电子教室,杀除它的方法也有很多。但对于大多数小白,记下这些方法并不容易,于是萌生了开发这样一款傻瓜软件的想法。

现有的杀除学生端方法

通过注册表获取学生端密码

这个方法是我最早接触的方法,小学时想着杀除学生端于是就开始百度,排名前几就是这个。

具体而言有以下几步

1.win(键盘左下角的Windows徽标)+R,打开运行,输入regedit,点击确定。打开注册表管理器。

2.依次进入HKEY_LOCAL_MACHINE,SOFTWARE,TopDomain,e-Learning Class Standard,1.00。右侧UninstallPasswd的键值假设是psswd123,真实密码为去掉前5位psswd即123。

3.右键单击右下角任务栏上的学生端,点击设置,输入密码后,找到防杀进程,取消。

4.右键任务栏打开任务管理器,在进程中找到一项名为StudentMain的进程,结束任务即可杀除。

通过命令杀除学生端

主要有几种

一是通过刚刚的任务管理器,二是taskkill命令。但如果开了防杀进程,这两种都是无效的。

有没有有效的命令呢?

自然是有的。

ntsd是Windows中系统级的调试命令,但是自Windows Vista后不再集成于Windows中。

假设要杀除进程PID为123的进程,语法为

1
ntsd -c q -p "123"

当然,也可以直接杀除进程名为xxx的进程,但由于PID才是进程的唯一对应标识(即可以有多个同名进程,但PID是唯一的),所以通常使用PID。

程序设计

计划实现功能

1.立即杀除,很好理解

2.定时杀除,广播前可以开启,广播到一半学生端就会被杀除

3.连续杀除,算是定时杀除的升级版,每隔一段时间定时杀除

4.重新开启学生端,显然,并不是所有人都知道学生端在哪,也并不是所有人都想一直关着学生端

关键代码

获取学生端PID,已知学生端进程名为StudentMain,其中,s=”””StudentMain.exe”””

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim WmiService As Object, Processes As Object, Process As Object
Set WmiService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set Processes = WmiService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = " & s)
Dim x As String
x = "x"
For Each Process In Processes
x = x & " " & Process.ProcessId
Next
If (x = "x") Then
getpid = -1
Else
getpid = Val(Mid(x, 2, Len(x) - 1))
End If
Set WmiService = Nothing
Set Processes = Nothing
Set Process = Nothing

释放ntsd,因为Windows 7应该没有集成了

首先要把ntsd.exe加到资源中,然后每次杀除前释放到程序目录(万一有熊孩子把生成的ntsd给删了)

1
2
3
4
5
Dim arr() As Byte
arr = LoadResData(101, "CUSTOM")
Open App.Path & "\ntsd1.exe" For Binary As #1
Put #1, , arr()
Close #1

杀除,其中,pid即为刚刚get的PID

1
Shell App.Path & "/ntsd1 -c q -p """ & Str(pid) & """"

定时方面,总共使用3个计时器。

第一个计时器interval=1000,用于检测学生端状态并修改状态text和提示label的内容。

第二个和第三个计时器分别对应定时查杀和连续查杀。

最终效果

下周(2019.3.25-29)将去学校机房验证,现在在家就拿notepad++作为小白鼠叭orz

3.29更新:

的确可行,偷传至FTP,不少同学发现了。

关于360报毒

360报毒原因:使用了资源文件附带ntsd.exe,凡是使用资源文件,360都会报毒。

有没有毒呢?

自然是没有的。请看完整代码: