Unifi Plus Box(创维HP40A3/HP43A)电视盒子的开发者模式和USB调试破解
前言
由于搬家到了新的屋子,新的屋子客厅里有个电视,有一天与好友聊到如何利用起这个电视,好友提到他那边有一个闲置的Unifi Plus Box,来自于办理TM家宽的附带产品,历经几日之奔波,这个电视盒子最终到了我手上。
加注
感谢某位网友提供的关键数据,这个分析流程在基于Android12的新版Unifi Plus Box(创维HP43A)也可用,但有可能会被其自带的远控更新设置后变为不可用状态,请恢复出厂设置后再尝试。
特殊
到手后,发现其采用的是Amlogic S905L3B的SoC,有4核心A53,主频为1.8Ghz,2GB的运行内存和16GB的闪存,Android版本为9,在大多数电视盒子中都属于较高配置。
首先尝试执行系统更新,没想到居然接收到了更新到Android 10的大版本更新,对于我这种熟悉中国电视和电视盒子市场的人来说是颇为惊讶的,从来没有在这类型的设备上看到过有Android大版本更新。执行更新之后,发现了更多奇妙,于是则开始了以下的流程。
开发者选项密码?
正常情况下,如果想对这个盒子深挖,首要就是要打开USB调试,不管是无线还是有线调试。
然而当我尝试以正常方式打开开发者选项时,其弹出了一个与AOSP完全不同的密码输入界面。
当然目前是不知道实际的密码是什么的,其为什么会有个密码也不是很明确,也无法进行后续的分析了。
获取系统包
后来一天与另一位朋友闲聊,他跟我说他逆向了Google的OTA分发系统的API,问我有没有需求来测试一下,我就想到这个盒子系统更新时候的界面十分原生,其内置的阉割版本Google Play商店也可以下载到AIDA64来获取到当前软件版本的编译指纹,于是我就把编译指纹发给了这位朋友,于是得到了以下结果。
{
"code": 200,
"message": "success",
"data": {
"title": "New software version is now available. ",
"url": "https://android.googleapis.com/packages/ota-api/package/xxxxxxxxxxxxxxxxxxxxxx.zip",
"size": "803.6 MB",
"size_num": 842585223,
"fail": "Upgrade failed!",
"inst": "Upgrade successfully!",
"desc": "<b>A new software update is available.</b> <br>1. Fix issue Error code 01999 of unifi tv application <br> 2. Update Android TV security patch<br> <br><b>Note: The update may take up to 10 minutes to complete. You will not be able to use the TV during the update. Thank you for your patience.</b> <br>"
}
}
(请私信我以取得完整链接以作他用)
成功拿到了完整的系统更新包!!
逆向TvSettings
首先我们打开获取到的ZIP包,依据个人经验,这类密码一般存在于系统设置之本体。
所以首先从SYSTEM分区镜像中找到TvSettings的apk
找到之后,我们需要一个特征来找到这个密码部分
尝试在密码输入框内胡乱输入,其输出了一个有“Password is error!!”的Toast信息,我们就以此入手
在Jadx中以字符串搜索Password is error这个字符串,很快得到了有效回应
打开这个代码段后,得益于Jadx强大的反编译能力,我们看到了非常清晰的程序逻辑,查看这些判断语句,很容易就得到了密码。
输入进密码输入框,开发者选项成功被启用!
USB调试密码?
但是当尝试打开USB调试时,其又出现了跟前面一样密码输入框,输入上一个判定中得到的密码,又一次提示密码错误。
尝试找到了开发者模式中USB调试开关的逻辑,发现了一个额外的source判定
再混合前面所提到的逻辑语句得到的字符串密码,成功打开了USB调试!
后记
以上则为这个电视盒子如何打开开发者选项和USB调试的办法了
其实历经以上分析,发现这个盒子还有个很特别的点,其几乎用了可谓是”围追堵截“的办法来屏蔽Netflix,关于这个事情如何解决,请等待我的后续更新了!