惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
罗磊的独立博客
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
T
The Blog of Author Tim Ferriss
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
博客园 - Franky
F
Fortinet All Blogs
D
Docker
博客园 - 司徒正美
腾讯CDC
Recent Announcements
Recent Announcements
The Cloudflare Blog
B
Blog RSS Feed
GbyAI
GbyAI
T
Tailwind CSS Blog
雷峰网
雷峰网
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志

云萧的咕咕屋 - RSS

分享一下字节跳动内部的前端 cdn - 云萧的咕咕屋 利用漏洞解锁 OPPO Find X8 - 云萧的咕咕屋 自编译更新服务器内核 - 云萧的咕咕屋 部署完整WebUI功能的MinIO - 云萧的咕咕屋 在Windows中用GPG签名Git的commit - 云萧的咕咕屋 联通友华PT927G光猫破解小记 - 云萧的咕咕屋 【小白向】Android内核折腾计划(一)——起步 - 云萧的咕咕屋 咕咕的2023年终总结 - 云萧的咕咕屋 GitHub Actions上手全指南 - 云萧的咕咕屋 在QEMU安装Windows on ARM - 云萧的咕咕屋 E3神教装机体验 - 云萧的咕咕屋 多语言网站工具 —— Vue I18n轻松上手 - 云萧的咕咕屋 使用zsh美化你的终端并提高开发效率 - 云萧的咕咕屋 Redmi K20 Pro类原生搞机指南 - 云萧的咕咕屋 云萧 以及他的博客的2022年终总结 - 云萧的咕咕屋 如何使Vite将不同类型的文件输出到不同目录下 - 云萧的咕咕屋 通过各云厂商的邮件推送配置WordPress发信机器人 - 云萧的咕咕屋 快速上手前端打包工具Webpack(二) - 云萧的咕咕屋 安卓设备通过Termux实现本机ADB - 云萧的咕咕屋 快速上手前端资源打包工具 — Webpack - 云萧的咕咕屋
壹教云班牌程序反编译破解密码思路及实现 - 云萧的咕咕屋
2025-10-30 · via 云萧的咕咕屋 - RSS

高中时候写的草稿,到了大学了应该能放心发了吧_(: з」∠)_

教室门口的智能班牌是个跑 AOSP 8.1 的 rk3399,平时我们当平板用。但被维护员更新 launcher 后,开机就会自动屏蔽状态栏和导航栏,无法退出班牌程序,除非输入密码进入维护模式。好在咕咕此前已提取了 launcher 和软件,尝试反编译破解发现逻辑并不难,故分享。

#确定密码是否为联网下发

首先进入对应界面随便输入个密码,并在此时打开抓包工具。两个 App 在提交密码时都没有出现任何网络请求 —— 说明其密码均为本地算法生成。

那很好了,直接解包开干😋

#破解 MDM launcher

以下是班牌的默认桌面: 横屏全屏的,长这样

横屏全屏的,长这样

首先打开密码输入界面,查看提示文字以定位 class。

那么直接解包 APK,打开它的 dex,搜索 “请输入密码”,找到了该对话框所在的 class。

要想分析输入密码后发生了什么,就看点击文字为 “确定” 的按钮后会发生什么。该按钮的代码即 .line 1407 中的内容: 而根据 Android API 文档,用户点击按钮时会调用实现该 API 的类的 onClick() 抽象方法。此时我们就可以定位到 com.eyijiao.mdm.MainActivity$3onClick 方法,它就是密码被传递的地方:

第 67~84 行,程序将传入的 EditText 数据转为字符串存储在 p1 中,然后程序比对 p1 是否为空(第 86~97 行),非空则将 p1 赋给 v0,并以 v0 为参数调用 MainActivity.access$1700() 方法:成功则跳转 AppInfosActivity(第 112~126 行,即维护界面),失败则提示密码错误(第 128~141 行)

然而找到 access$1700,发现它传给 getPsd() 方法了😅搁这套娃呢

回到 MainActivity 找到 getPsd,发现也是纯逆天 —— 这玩意儿是当天日期生成的!

首先,给 Calendar 对象设置为当前日期。

然后获取该对象的月份和日,分别存储在 v1 和 v0。

将 v1(月)和 v0(日)以字符串形式拼接起来,存储在 v0。举个栗子:今天是 7 月 21 日,那么 v0 寄存的就是 “721”。

最后转换为数字再乘以 0x141,即十进制的 321,就是密码!比如 721×321=231441,那么 231441 就是 7 月 21 日的密码。(我去这不是三角洲吗)

现在 MDM laucher 已经被顺利破开了,接下来就是班牌主程序了。乖乖躺好吧我要开动啦~~

#破解主程序

由于主程序 APK 及用于破解的网页现已因意外丢失,故暂无法更新,希望理解~

如果有样本,欢迎在评论区联系,感谢!

#样本下载

MDM launcher:mdm.apk - 蓝奏云

#说结论!

MDM 桌面的密码是:当月和当日拼接后乘以 321。举个栗子,721×321=231441,那么 231441 就是 7 月 21 日的密码。

班牌主程序的密码需要打开这个链接(注:已失效)扫描二维码即可~