提示/Alert/Amaran

华文

本文章中所提供的方法仅供开发者调试使用,其使用后产生的任何法律和硬件损坏等后果与本人和马来西亚电讯公司(Telekom Malaysia Berhad)无关。

English

The methods provided in this article are intended for developer debugging purposes only. Any legal consequences and hardware damages arising from their use are not the responsibility of the author and Telekom Malaysia Berhad.

Bahasa Melayu

Kaedah yang disediakan dalam artikel ini hanya untuk tujuan penyahpepijatan pembangun sahaja. Sebarang akibat undang-undang dan kerosakan perkakasan yang timbul daripada penggunaannya tidak menjadi tanggungjawab pengarang dan Telekom Malaysia Berhad.

前言

由于搬家到了新的屋子,新的屋子客厅里有个电视,有一天与好友聊到如何利用起这个电视,好友提到他那边有一个闲置的Unifi Plus Box,来自于办理TM家宽的附带产品,历经几日之奔波,这个电视盒子最终到了我手上。

加注

感谢某位网友提供的关键数据,这个分析流程在基于Android12的新版Unifi Plus Box(创维HP43A)也可用,但有可能会被其自带的远控更新设置后变为不可用状态,请恢复出厂设置后再尝试。

特殊

到手后,发现其采用的是Amlogic S905X2的SoC,有4核心A53,主频为1.8Ghz,2GB的运行内存和16GB的闪存,Android版本为9,在大多数电视盒子中都属于较高配置。
首先尝试执行系统更新,没想到居然接收到了更新到Android 10的大版本更新,对于我这种熟悉中国电视和电视盒子市场的人来说是颇为惊讶的,从来没有在这类型的设备上看到过有Android大版本更新。执行更新之后,发现了更多奇妙,于是则开始了以下的流程。

开发者选项密码?

正常情况下,如果想对这个盒子深挖,首要就是要打开USB调试,不管是无线还是有线调试。
然而当我尝试以正常方式打开开发者选项时,其弹出了一个与AOSP完全不同的密码输入界面。
UTVCK_Password1
当然目前是不知道实际的密码是什么的,其为什么会有个密码也不是很明确,也无法进行后续的分析了。

获取系统包

UTVCK_GetBFg
后来一天与另一位朋友闲聊,他跟我说他逆向了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包,依据个人经验,这类密码一般存在于系统设置之本体。
UTVCK_InsideOfPkg
所以首先从SYSTEM分区镜像中找到TvSettings的apk
UTVCK_GetTvSettings
找到之后,我们需要一个特征来找到这个密码部分
尝试在密码输入框内胡乱输入,其输出了一个有“Password is error!!”的Toast信息,我们就以此入手
UTVCK_PasswordErr
在Jadx中以字符串搜索Password is error这个字符串,很快得到了有效回应
UTVCK_JadxSearchStr
打开这个代码段后,得益于Jadx强大的反编译能力,我们可以得到非常清晰的程序逻辑,分析这些判断语句,很容易即可得到密码。
输入进密码输入框,开发者选项成功被启用!
UTVCK_DevSettingsPass

USB调试密码?

但是当尝试打开USB调试时,其又出现了跟前面一样密码输入框,输入上一个判定中得到的密码,又一次提示密码错误。
尝试找到了开发者模式中USB调试开关的逻辑,会发现有一个额外的source判定
再混合前面所提到的逻辑语句得到的字符串密码,成功打开了USB调试!
UTVCK_ADBAuthPass

后记

以上则为这个电视盒子如何打开开发者选项和USB调试的办法了
其实历经以上分析,发现这个盒子还有个很特别的点,其几乎用了可谓是”围追堵截“的办法来屏蔽Netflix,关于这个事情如何解决,请等待我的后续更新了!

知识共享许可协议
本文及其附件均采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

25 条评论

  1. Bc Bc

    我的是 Unifi Tv box..想請教如今打開開發者模式。。謝謝

    1. Yuu Yuu

      請透過TG聯係我,謝謝

  2. Tank-XL Tank-XL

    您好,再次请教一个问题,一盒子音量部分不能操作,换几个摇控和用键盘均不都能操作音量,用手机摇控app也是没反应,请问知道了那方面问题吗?感谢!

  3. 你好你的telegram是?怎么私聊呀

    1. Yuu Yuu

      https://t.me/saga0324

  4. Gixxer Gixxer

    请问您的telegram怎么加您

  5. Ckwai Ckwai

    哈咯 请问下 你这个方法需要电脑完成? 还是可以直接在tv box里面操作呢? 我手上有两台 unifi tv box plus 想安装其他app 不能安装 可以指点一下不?

    1. Yuu Yuu

      打开USB Debug可以直接在TVBOX完成。但是如果需要安装App,最好是使用电脑,但是如果实在没有。另一个Android手机也可以,去搜索Mobile ADB即可。

      1. Ckwai Ckwai

        可是我打不开那个usb debug 因为需要密码

        1. Yuu Yuu

          密码请在上面找到关于,通过EMAIL或者Telegram私聊我

添加新评论