前言
目前大多数电子教室使用的学生端软件是极域电子教室,杀除它的方法也有很多。但对于大多数小白,记下这些方法并不容易,于是萌生了开发这样一款傻瓜软件的想法。
现有的杀除学生端方法
通过注册表获取学生端密码
这个方法是我最早接触的方法,小学时想着杀除学生端于是就开始百度,排名前几就是这个。
具体而言有以下几步
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的进程,语法为
ntsd -c q -p "123"
当然,也可以直接杀除进程名为xxx的进程,但由于PID才是进程的唯一对应标识(即可以有多个同名进程,但PID是唯一的),所以通常使用PID。
程序设计
计划实现功能
1.立即杀除,很好理解
2.定时杀除,广播前可以开启,广播到一半学生端就会被杀除
3.连续杀除,算是定时杀除的升级版,每隔一段时间定时杀除
4.重新开启学生端,显然,并不是所有人都知道学生端在哪,也并不是所有人都想一直关着学生端
关键代码
获取学生端PID,已知学生端进程名为StudentMain,其中,s="""StudentMain.exe"""
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给删了)
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
Shell App.Path & "/ntsd1 -c q -p """ & Str(pid) & """"
定时方面,总共使用3个计时器。
第一个计时器interval=1000,用于检测学生端状态并修改状态text和提示label的内容。
第二个和第三个计时器分别对应定时查杀和连续查杀。
最终效果
下周(2019.3.25-29)将去学校机房验证,现在在家就拿notepad++作为小白鼠叭orz
3.29更新:
的确可行,偷传至FTP,不少同学发现了。
5.3更新:
有次老师走到身后时刚巧查杀,非常尴尬,寻思在全屏广播时也能自由控制,而不是定时。
学生端杀手gen2能在鼠标移至左上角时自动杀除,下周将带去学校试验。
关于360报毒
360报毒原因:使用了资源文件附带ntsd.exe,凡是使用资源文件,360都会报毒。
有没有毒呢?
自然是没有的。请看完整代码: