大华电子班牌折腾记

前言

我们学校为了实现“食堂-门禁-考勤”的统一管理,全面更新了设备,其中就包含了一款电子班牌。我们折腾的过程,记在下面。

信息

关于这款电子班牌,我们已知的信息列在下面。

  • 瑞芯 rk3288 方案(包含 2.4GHz WLAN 和蓝牙)
  • 屏幕在 17” ~ 21” 之间
  • Android 7.1.1,带有无限制的 su
  • 有一个分辨率极低的摄像头和质量超低的麦克风
  • 包含 NFC 读卡器

初见

初安装时,向我们暴露出来的是一个原生的 Android 系统。版本是 7.1.1。我们在系统设置里发现了“USB 模式”这样比较特别的设置项,不过倒也似乎没什么用。

然后,有一队工程师来插上了神秘 u 盘,就安装上了班牌应用。这时候的限制似乎是挺大的:呼不出状态栏和虚拟按键,并且一旦班牌软件不在前台就会拉到前台去。

但是,有一个折腾的希望:班牌软件看起来非常粗制滥造——不算简陋但也完全算不上精美的、充斥着粗犷工业风(?)的ui,十分死板僵硬的 TTS(似乎是调用 Android 内置的),以及古怪难用的操作,无不让人冒出一种赶制品的印象;这也说明,极有可能存在某种我们能钻的空子。

折腾

打开浏览器

我们敏锐地发现,在文本框区域并没有一个班牌软件内置的软键盘,而是谷歌拼音输入法。这恰好给我们提供了一个可能(而且十分经典)的思路:利用输入法的设置打开其他应用。

很容易地,我们找到了一个打开浏览器的方法:在设置界面右上角菜单里的“关于”中,有一个“服务条款”。点击之后,会尝试打开 Google 的服务条款页面。

就这样,一个浏览器就被打开了。如此轻易(?)。

但是,打开浏览器之后,没过多久就又会回到班牌界面。看来,到这里还不是真正的成功。

安装软件

“先有原生系统、后安装班牌软件”的诡异方案,和班牌软件的粗制滥造,让我们有一种猜测:这个系统应该是能获取到 root 权限的。

于是我们就基于这个猜测,尝试利用打开的浏览器安装 Magisk。

令人意外的是,在安装完软件包之后会立即打开。感觉是为了方便安装班牌软件的吧,但是反正挺奇怪的。

很惊人的事情发生了:在 Magisk 安装方式里赫然有一个“直接安装”。这意味着 Magisk 能检测到可用的(权限正常的) su 存在,所以一般的应用也极有可能能直接拿到 root 权限。

然后我们试着点了“直接安装”,没有弹出鉴权界面,但是奇迹也没有发生。(后来我发现是 Magisk 不认为这款机器的 boot 有效。鉴于我在本地尝试配置装有 Magisk 的 AVD 时也有遇到这个问题,似乎是 Magisk 28.1 的概率性 bug?)

没有弹出鉴权界面,这是一个很值得思考的现象。这可能表示这台机器确实有不受限的 root 权限,也可能代表这个 root 权限是仅供特定进程(如电子班牌)使用的。但是我们决定相信幸运,继续尝试。

于是我们安装了 MT 管理器,在短暂的窗口里发现确实存在不受限的 root 权限。

事情变得好玩起来了。

大杀器-GameGuardian

在周围同学的异想天开里,我们得到了一个提醒:可不可以装游戏修改器?

思绪于是指向了 GameGuardian,它可以给我们提供进程监控等在这种情况下十分重要的功能。当然,最重要的是,作为游戏修改器,它的本体是一个悬浮 overlay。

悬浮窗的好处是,无惧班牌切到前台——因为悬浮窗是置顶的。

于是我们安装了 GameGuardian,在进程选择里发现了 com.cn.kdzn_p2:guard 这个特征很鲜明的名字(因为后面有个 guard)。很自然地想到了它也许就是监控班牌是否在前台的东西,于是决定把它干掉。

用 GameGuardian 把 guard 进程修改到 crash,再尝试钻空子打开浏览器。

提示:修改到崩溃最简单的方法是把所有的 BYTE 0 改成 1 ,或者反过来,再锁定数据。因为这两个值往往代表 falsetrue

忐忑地等待十秒后,班牌没跳回来。

成了!!!!

深入分析

已经找到了用 GameGuardian 干掉 watchdog 的方法,可以宣告越狱成功了,但是这个方法还是非常不方便。每次打开 GameGuardian 都要重新安装不说(因为我们只能在浏览器里打开),把 watchdog 进程修改到崩溃本身也是一件比较麻烦的事情。

所以我在某天放学回家前搞到了班牌软件的安装包,准备在本地环境调试。

准备环境

无非就是安装 Android Studio 并打开虚拟机,这里不过多赘述;不过,下面是我的一些小提示:

  • 如果你需要模拟 ARM 环境,很遗憾,Google 已经在 Emulator v30 的某个小版本里去除了 x86 上模拟 ARM 的功能;并且因为那个版本已经很古早了,在 Google 官方渠道上也找不到。但是,我经过苦心搜索,在这个网站找到了旧版 SDK Tools(包含旧版 Emulator)的安装链接~(ps.: 旧版 SDK Tools 和现在的版本默认存放 SDK 的路径不同。鉴于我们只需要虚拟机,在安装的时候建议略过 system img 之外的内容)
  • 如果你需要在 AVD 里拿到 root 权限,可以看看 RootAVD。(FAKEBOOTIMG 模式的成功率要高一些)

调试班牌

虽然在本地打不开电子班牌应用,但是 watchdog 是正常运行的。通过 logcat 可以知道,watchdog 检测的间隔是 10s,在 ps 中的进程名称就叫做 com.cn.kdzn_p2:guard

编写应用

基于在班牌上可以自由获取 root 权限中止 watchdog 就可以使班牌不回到前台,我按照我们的需求编写了 Enita’s Class Sign Jailbreaker。(由于我不会 Android 编程,这个项目 99% 的代码都是 Android Studio 内置的 Gemini 写的)

这个软件可以利用 root 权限,向系统注册一个开机自启的悬浮窗。大概是在右侧屏幕中心的品红色圆球,点击之后会出现“禁用班牌 Watchdog”和“启动 Launcher3”的按钮。

这个软件禁用班牌 watchdog 的方法是,每隔 3s 检查守卫进程是否存在,若存在则用 kill -9 将其杀死。

实际测试下来是非常有效的。()

(如果你有需要的话,这是便于国内访问的链接:https://r2.enita.cn/ecsjb.apk,基于 Clooudflare R2。)

后记

「在班牌上玩原神不再是梦。」

——佚名


大华电子班牌折腾记
https://enita.cn/2025/0324/c7b4a4074e61/
作者
Lingrottin
发布于
2025年3月24日
许可协议