通用式学生机破解攻略

本文原创。目前已经测试过的学生机:苏亚星伽卡他卡电子教室这篇文章是从本页面转载得来,虽然发布时间更早。本来是想更新那篇文章,不过是先写在了这里。

首先说明,本文针对的是Windows系统。(难道有普通学校的机房不装Windows吗?)
还有就是,我们不会对程序进行逆向……不是那种通用。

1.都是套路

在我看来……大家基本上都想过破解机房的学生机/电子教室程序。各位也可能已经也摸透了这类软件的套路:

  • 1.保护进程
    ①双进程守护使你无法杀掉进程
    ②创建进程的权限很高导致你无法杀掉进程
    ③禁用掉任务管理器(有的甚至禁用了taskkill命令)
  • 2.密码保护设置项,卸载程序上锁等
  • 3.衍生功能,包括禁止进入特定页面,禁用特定程序,禁止USB设备插入等。
    image
    当然,这几个功能想要实现,前提就是学生机程序能运行。
    那么显然,我们下手的方向,就是解决掉学生机进程。当然这也是我们很早就意识到的。

2.间接杀死进程

一开始最原始的解决办法,就是通过任务管理器杀进程,此时当然是杀不掉的。
于是转念一想:我是否可以破坏程序文件使其无法启动呢?所以第一版的解决方法就出现了——只要到学生机安装目录,删掉足够多的文件,就可以导致学生机无法启动。(当时那个学生机程序没有禁用任务管理器,所以可以使用任务管理器解决问题
当时的解决方法是:
首先到学生机安装目录,全选文件来删除;
此时有一些文件由于程序占用,自然无法删除,但是此时某个守护程序因为缺少必要文件,已经可以结束掉了。结束一个进程之后又有部分文件解锁,点击重试将它们删除后,就可以再次结束……
最终将学生机主进程结束,并且删除掉所有学生机文件。
当然这个方法对于不同学生机,不一定全部好用,并且有一些学生机禁用了任务管理器,无法使用此方法。

3.“比你更快”

此时你不免想到:是否可以通过编写一个程序,不停发送结束进程的命令,并且速度比学生机重启进程更快,从而达到杀死学生机的目的?
那么最简单的方法当然是:编写一个批处理程序,这样方便在所有Windows上都可以运行。
其代码自然也很简单。通过Windows命令taskkill,可以方便地按照进程名结束进程。
举个例子,此处学生机进程名为Student.exe,并有一个守护进程MarsCltSvc.exe。

:loop
taskkill /f /im Students.exe
taskkill /f /im MarsCltSvc.exe
goto loop

将代码复制到一个.bat文件,双击即可运行。
不过批处理只能按照代码顺序,依次向下运行,只能通过goto来跳转。这样按顺序执行taskkill两个程序,速度可能不够。解决方法也简单,分别把两个命令放在两个批处理并同时运行即可。再顺便开一个批处理用于删除学生机的安装文件夹,防止其一直尝试启动。

echo :loop> killa.bat
echo :loop> killb.bat
echo :loop> delete.bat
echo taskkill /f /im Students.exe>> killa.bat
echo taskkill /f /im MarsCltSvc.exe>> killb.bat
echo rd /s /q "C:\Program Files (x86)\AsiaStar\Mars8.1\">> delete.bat
REM 此处的路径是x64系统的安装路径,x86系统没有此文件夹,需要删去“(x86)”
echo goto loop>> killa.bat
echo goto loop>> killb.bat
echo goto loop>> delete.bat
start killa.bat
start killb.bat
start delete.bat

对于这一招来说,各种的学生机应该都有一定效果。不过,命令中的进程名称和安装目录名称只是苏亚星学生机的,而每次改代码显然麻烦。不如直接做成输入式的,程序向用户请求安装目录。
同时,由于可执行的学生机文件都为exe格式,并且进程名都与文件名相同,那么我们也无需手动输入进程名了,只要程序通过安装目录获取到里面所有exe格式文件的文件名,并为每个进程都安排一个批处理用于结束进程即可。并不需要筛选exe的名称,因为我们也不确定具体是哪个参与进程守护。并且这些进程可能都占用着部分文件,最终阻碍文件删除,全部通杀即可。
最后,我们再安排一个批处理用于删除学生机依赖文件。通过start+启动参数实现把文件名&目录名在批处理之间传递。这样就完成了一个简易程序:(想要正确的看到中文,使用notepad保存时请选择ANSI编码)

rem 以下内容写入到main.bat
@echo off
set /p way=请输入学生机安装路径(需要添加双引号)并回车:
echo on
start "学生机文件删除程序" del.bat %way%
for /f "tokens=* delims=" %%i in ('dir %way% /a-d /b /s ^| findstr /E "\.exe$"') do start "学生机进程结束程序" /MIN /REALTIME kill.bat "%~nxi"
@pause
rem ------------------
rem 以下内容写入到del.bat
echo off
:go
rd /s /q %1
goto go
rem ------------------
rem 以下内容写入到kill.bat
echo off
:go
taskkill /f /im %1
goto go

运行后,程序自动检索exe文件,结束进程并删除安装文件夹。

4.使用高级权限

某些情况下,程序的权限比较高,无法结束进程。可能是因为学生机在后台放了服务,无法禁用。此时可以通过更改注册表来解决。

此处暂不提供教程,请自行搜索;未来可能会重新编辑此处。

同时,对于某些程序设置的权限较高,我们需要通过SYSTEM用户的权限来解决问题。标准的切换system用户的做法是使用SysinternalsSuite套件中的PsExec,不过我看到了一个网友编写的程序2SYSTEM,比较方便,可以下载使用。

我打包的批处理

同时一开始我也写过一个批处理,原理和上面给出的代码类似,并且可以选择调用psexec提权来结束进程&删除文件,同时稍微提供了一些选项,做成向导模式方便操作。可以访问这里下载。

5.其他限制

某些学生机和机房电脑的其他限制,也是可以破解的。

①限制USB设备

限制之后,显然你就无法复制和运行自己带来的程序了。其禁用方式有好几种,需要逐一排查。(内容主要源自网络

  1. 禁用了某些服务
    此时禁用的可能是USBSTOR服务。可以前往服务管理或者编辑注册表来启用。具体值项保存在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services中,更改对应服务的start值可以实现启用或禁用服务。
  2. 启动写保护
    需要编辑注册表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\StorageDevicePolicies下的值WriteProtect改为0。
  3. 盘符被隐藏
    对应的注册表项HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer下的值NoDrives需要设为0以禁用任何对盘符的隐藏。如果同一项下还有名为NoViewOnDrive的值,也一样设为0。

如果是程序运行过程中对USB进行限制(这应该是大多数的实现方式),就必须结束程序才能恢复访问。而如果删除了某些驱动等,很可能无法直接恢复,这种情况最好使用PE启动来复制文件。有一些电脑设置了开机还原,而上面几个注册表更改项想要生效可能需要重启,此时也建议使用PE操作。

②BIOS设置密码

有密码的BIOS无法对设置进行更改,某些情况下这会带来麻烦。不过在选择启动项(启动PE)时,因为机房管理员有时也会使用PE调试电脑,为了方便,应该会开启F12启动菜单,这个启动菜单是不需要输入密码的,所以PE启动不会受到阻碍。而对于调整boot顺序、开启虚拟化支持等,则必须需要密码。取下CMOS电池或者连接BIOS用于清除数据的条线,可能有助于清除掉BIOS密码,但是如果你身处机房,不建议尝试。

③开机自动还原

某些电脑开机时会自动还原C盘等处的文件,抵消掉上次的更改。此处只对联想硬盘保护系统做出说明。

  • 联想硬盘保护系统储存在硬盘一个隐藏的分区中,分区包含C盘(有时有其他盘)的备份文件,通过DiskGenius可以访问。想要跳过联想硬盘保护系统并且你没有管理员密码,只需要将这个分区格式化即可。这里建议使用PE,并且上一次硬盘中的系统需要正常关机。如果你好心,可以把这个分区备份一下放在本地。不要尝试删除这个分区或者将这个分区与其他分区合并,容易出问题。

对于其他自动还原系统,建议自行查询解决方式。

posted @ 2022-12-28 15:05  nsdimo  阅读(727)  评论(0编辑  收藏  举报