云萧的咕咕屋

以万象之不息,致不息之万象

博主头像
云萧是个咕咕怪
大一狗,在前端路上奋斗的人类
18
文章
4
分类
7
标签
本页内容

壹教云班牌程序反编译破解密码思路及实现
壹教云班牌程序反编译破解密码思路及实现
高中时候写的草稿,到了大学了应该能放心发了吧(: з」∠) 教室门口的智能班牌是个跑 AOSP 8.1 的 rk3399,平时我们当平板用。但被维护员更新 launcher 后,开
2025-10-30 5 分钟 1438 字 折腾

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

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

确定密码是否为联网下发

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

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

破解 MDM launcher

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

横屏全屏的,长这样

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

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

要想分析输入密码后发生了什么,就看点击文字为 “确定” 的按钮后会发生什么。该按钮的代码即 .line 1407 中的内容:

new-instance v2, Lcom/eyijiao/mdm/MainActivity$3;
invoke-direct {v2, p0, v0}, Lcom/eyijiao/mdm/MainActivity$3;-><init>(Lcom/eyijiao/mdm/MainActivity;Landroid/widget/EditText;)V
const-string v0, "确定"
invoke-virtual {v1, v0, v2}, Landroid/app/AlertDialog$Builder;->setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;

第 1 行,创建了类 com.eyijiao.mdm.MainActivity$3 的实例,保存到名为 v2 的寄存器。第 2 行,调用了实现了 DialogInterface.OnClickLinstenerAPI 的类 v2,将寄存器 v1(即用户输入的密码,见图第 9611 行)的内容作为参数传递了过去。

而根据 Android API 文档,用户点击按钮时会调用实现该 API 的类的 onClick() 抽象方法。此时我们就可以定位到 com.eyijiao.mdm.MainActivity$3onClick 方法,它就是密码被传递的地方:

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

然而找到 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 日的密码。

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

壹教云班牌程序反编译破解密码思路及实现

https://blog.crrashh.com/posts/18-eyijiao-esign-crack.html

除特殊声明转载之外,本文由博主云萧原创且非 AI 生成内容,依据 CC BY-SA 4.0 许可协议授权,若需转载请注明出处及本声明。

尚未开启评论功能,敬请期待