在創(chuàng)維E900-S悅Me盒子上安裝第三方軟件

在創(chuàng)維E900-S悅Me盒子上安裝第三方軟件

0x00 不甘寂寞

創(chuàng)維E900-S這款悅Me盒子功能還算可以,但不能接受它禁止安裝第三方軟件這一點。網(wǎng)上搜了半天,可能是比較新的機(jī)型沒人關(guān)注,找不到任何方法,只好自己動手試試。

0x01 Fiddler尋路

請出小伙伴Fiddler,盒子上Wifi掛代理。在高級設(shè)置的WLAN中,在已連接的SSID上按住確認(rèn)鍵幾秒鐘會出現(xiàn)修改網(wǎng)絡(luò)選項,設(shè)置好代理服務(wù)器(運(yùn)行Fiddler的機(jī)器)的IP和端口。

在應(yīng)用市場里面安裝幾個軟件,抓包看到一些APK下載地址。在Fiddler的AutoResponder中替換為需要安裝的apk,比如電視貓。再次安裝會出現(xiàn)下載不完整的錯誤提示,初步猜測對文件大小或者Hash值進(jìn)行了校驗。下載原始文件,修改一個字節(jié),AutoResponder替換,發(fā)現(xiàn)還是同樣的錯誤,基本判定是對文件Hash進(jìn)行校驗。請求的文件名包含一個32字節(jié)的16進(jìn)制串,估計是MD5,但是經(jīng)過計算,與文件實際MD5值并不相同。懷疑是經(jīng)過加了Salt或者其他處理方式得出的最終結(jié)果,不知道算法的話無法偽造。而且Url也不是通過網(wǎng)絡(luò)請求獲取,估計是在應(yīng)用市場里面內(nèi)置的數(shù)據(jù)。

想劫持應(yīng)用市場的路不通,只能換條路走。還是開著代理,重啟盒子,逐條觀察Http請求。發(fā)現(xiàn)了一個更新應(yīng)用的請求 http://appStoreRrc.cnitv.net:8090/tv/updater2?userId=&mac=&brand=YUEME&model=E900-S&areaNo=null&osver=990104900.1008000000.10000000200&applist=[{"pkgName":"com.keylab.speech.core.yueme","version":"3.02.008"},{"pkgName":"com.keylab.speech.view.yueme","version":"3.01.008"},{"pkgName":"com.hisense.bluetooth","version":"3.01.008"}] ,返回的Json格式化之后如下:

[
    {
        "result": {
            "code": 0,
            "description": "成功獲取升級信息",
            "appURL": [
                {
                    "pkgName": "com.keylab.speech.core.yueme",
                    "version": "3.02.008",
                    "isUpdate": false,
                    "url": ""
                },
                {
                    "fileName": "aiView_YueMe.apk",
                    "appName": "語音助手view",
                    "pkgName": "com.keylab.speech.view.yueme",
                    "version": "3.02.008",
                    "isUpdate": true,
                    "url": "http://RSAppStore.cnitv.net/TV_appation/ctviptv/AD/aiView_YueMe.apk",
                    "md5": "a5e7af5648aa6d2a6d34ffdc925857c0"
                },
                {
                    "pkgName": "com.hisense.bluetooth",
                    "version": "3.01.008",
                    "isUpdate": false,
                    "url": ""
                }
            ]
        }
    }
]

于是打算在此做文章。同樣的,在Fiddler中攔截替換該請求,保證有一個應(yīng)用的isUpdate值為true,它就會自動嘗試下載安裝該apk。AutoResponder中替換所有*.apk請求指向本地apk文件,重啟盒子。Fiddler里面看到的確下載了我替換的apk文件,再到盒子里面看一下,安裝成功?。?/p>

至此,基本有比較清晰的思路了。攔截update請求,將返回的JSON中isUpdate值置為true,url替換為真正需要安裝的apk的地址。url如果不是可以直接訪問下載的互聯(lián)網(wǎng)地址,而是本地apk文件的話,進(jìn)一步在Fiddler中進(jìn)行攔截替換。

經(jīng)過測試,一般系統(tǒng)啟動時會檢查3個內(nèi)置軟件的版本更新情況,如果返回的JSON中應(yīng)用列表數(shù)量小于3的話,則不會下載安裝。如果返回數(shù)量大于3,則只下載安裝前3個應(yīng)用。所以這種方法盒子每次啟動安裝的軟件數(shù)量是有限制的。

0x02 Go小程序

按照前面的方法,已經(jīng)可以正常安裝第三方軟件了。但是,還是嫌步驟復(fù)雜了一些,尤其是要幫很多朋友大量安裝的話就太麻煩。

簡單用Go語言實現(xiàn)了一個小程序E900-S-proxy,實現(xiàn)代理和數(shù)據(jù)替換功能。只要把待安裝的apk文件放到同一目錄下,啟動程序,即可在電腦上啟動一個默認(rèn)端口為8080的代理服務(wù)器。在盒子上設(shè)置HTTP代理指向這臺電腦的IP,重啟設(shè)備就可以實現(xiàn)自動安裝,大大簡化了操作過程,降低門檻。存在的局限是每次最多只能安裝3個軟件。

需要Windows下編譯好的exe文件的朋友,請移步我在高清范發(fā)的帖子。

最后,軟件安裝完畢后,別忘了把HTTP代理取消。

0x03 更多……

除了設(shè)置HTTP代理服務(wù)器IP端口意外,其實根據(jù)HTTP代理的本質(zhì),還可以通過DNS劫持來實現(xiàn)。具體而言,可以在路由器上將域名appStoreRrc.cnitv.net和PROXY都指向運(yùn)行程序的電腦,當(dāng)然代理端口要改為8090才行。

嘗試了3款不同一鍵Root工具,都沒能搞定這款機(jī)器。更多玩法,期待高手們分享。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容