首頁(yè) 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場(chǎng)

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測(cè) / 活動(dòng)區(qū)

交流區(qū) | 測(cè)硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問(wèn)我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 200355|回復(fù): 32
上一主題 下一主題
[軟件教程分享]

廣東廣電u點(diǎn)盒免拆機(jī)裝第三方軟件破簽名沖突安卓逆向教程

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2022-2-2 19:21 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式 | 來(lái)自廣東
本帖最后由 xigxmmbc 于 2022-2-3 10:47 編輯

    修改有危險(xiǎn),事先備份!事先備份!事先備份!備份教程論壇里找??梢杂胐d命令備份,好像也可以用hitool的上載備份。用hitool的燒寫還原,用hitool要拆機(jī)。
    只在e900-s Hi3796MV310上實(shí)踐過(guò),可能所有U點(diǎn)盒通用。解決簽名沖突錯(cuò)誤,或者adb安裝中出現(xiàn)的INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES錯(cuò)誤。這可能是因?yàn)榘沧肯嚓P(guān)源碼被修改為只有指定簽名的安裝包才能安裝。教程涉及到修改安卓系統(tǒng)源碼編譯后的jar文件,需要有一定編程語(yǔ)言基礎(chǔ)。

1.打開(kāi)adb調(diào)試
    遙控器語(yǔ)音說(shuō)“應(yīng)用設(shè)置”打開(kāi)原生設(shè)置,再打開(kāi)usb調(diào)試。遙控器語(yǔ)音“設(shè)置”打開(kāi)非原生設(shè)置,輸入96956,打開(kāi)adb調(diào)試,此時(shí)不會(huì)有反饋。

2.提取services.jar文件
    論壇里下載開(kāi)心電視助手,連接電視。點(diǎn)擊解鎖 System,再點(diǎn)擊文件管理器,先返回上一級(jí)目錄,再打開(kāi)/system/framework,提取services.jar。我的盒子是自帶root權(quán)限的,沒(méi)有root這一步可能無(wú)法完成。有些機(jī)子有root,但adb調(diào)試沒(méi)有獲取root,但我的不是這種情況,獲取方法自行研究。

3.提取PackageManagerService.smali
    吾愛(ài)破解論壇里下載BatchApkTool,services.jar放到工具目錄下的_INPUT_JAR文件夾里,反編譯services.jar,得到一個(gè)文件夾,裝著很多.smail文件。檢索PackageManagerService.smali,找到它。參考https://www.52pojie.cn/thread-1136160-1-1.html。

4.獲取java文件
    百度并下載jadx-gui或者其他能smali轉(zhuǎn)java的軟件,用jadx-gui打開(kāi)PackageManagerService.smali,它會(huì)自動(dòng)轉(zhuǎn)換,之后點(diǎn)左上角保存為一個(gè)嵌套文件夾,里面有PackageManagerService.java文件。

評(píng)分

參與人數(shù) 1金幣 +1 收起 理由
TXK-1 + 1 感謝分享^_^

查看全部評(píng)分


上一篇:一包煙求教刷機(jī)康佳LED42R6680AU,我進(jìn)不去刷機(jī)哪里
下一篇:安卓9固件解包修改封包簽名個(gè)人獨(dú)創(chuàng)教程
推薦
發(fā)表于 2023-3-8 16:25 | 只看該作者 | 來(lái)自廣東
鏈接失效了,大佬是否可以再分享一下呢?感激不盡!
推薦
 樓主| 發(fā)表于 2023-2-6 14:31 | 只看該作者 | 來(lái)自廣東
1OmMM_nX2n2x4tsMAbB8oog
amcp
推薦
 樓主| 發(fā)表于 2022-11-4 10:03 | 只看該作者 | 來(lái)自山東
本帖最后由 xigxmmbc 于 2022-11-4 10:12 編輯

/s/16WaSDBqdI0OcnxiojcIkmA
mkew
帶圖版的和services.jar在這里了, 之前圖發(fā)不出來(lái). services.jar能用的話回來(lái)說(shuō)一聲.
沙發(fā)
發(fā)表于 2022-2-2 20:07 | 只看該作者 | 來(lái)自河南
感謝樓主分享
板凳
 樓主| 發(fā)表于 2022-2-2 23:25 | 只看該作者 | 來(lái)自廣東
5.修改smali文件
    打開(kāi)java文件,這里用vscode打開(kāi),檢索-104,可以找到大約10處。-104就是簽名沖突錯(cuò)誤或者INCONSISTENT_CERTIFICATES錯(cuò)誤對(duì)應(yīng)的代碼,要找到并修改對(duì)應(yīng)代碼,跳過(guò)中斷安裝的代碼塊。我們分析java文件只是為了方便修改與之對(duì)應(yīng)的smali文件,而不能直接修改java文件,因?yàn)閟mali文件夾和jar文件的轉(zhuǎn)換是可逆的,而java文件夾與jar文件的轉(zhuǎn)換使不可逆的,jar文件幾乎就是安卓系統(tǒng)直接運(yùn)行的文件,而我們的目標(biāo)是使jar文件按照我們的想法改變。分析java文件的原因是smali文件雜亂且冗長(zhǎng),不好分析。看下面的分析。

    分析這個(gè)代碼結(jié)構(gòu),是一個(gè)最外面的if括起來(lái)的結(jié)構(gòu),這個(gè)大if里又有很多個(gè)小if和else結(jié)構(gòu),而這些小結(jié)構(gòu)里每一個(gè)都有return null,這會(huì)退出當(dāng)前函數(shù),中斷安裝過(guò)程,而這個(gè)大if結(jié)構(gòu)里又沒(méi)有必要的安裝代碼,所以這整個(gè)大if結(jié)構(gòu)都可以跳過(guò)。有很多方法可以跳過(guò),但我們要使smali代碼的容易修改。這里我選擇使if的條件永假。觀察條件,只要使needVerify永遠(yuǎn)為0即可。翻譯needVerify,它的意思是需要驗(yàn)證,容易知道needVerify為1時(shí)需要驗(yàn)證,為0不需要。觀察代碼我們知道needVerify是由函數(shù)checkIsNeedVerify賦予的,改checkIsNeedVerify的輸出可以同時(shí)改變所有needVerify的值,并且checkIsNeedVerify函數(shù)名在smali文件和java文件中是同名的,找查易于修改。觀察代碼,由boolean知這個(gè)函數(shù)輸出值不是0就是1,這就更好改了。
    用vscode打開(kāi)smali文件(彈出提示安裝一個(gè)插件),檢索checkIsNeedVerify,把它修改成如下的樣子,只會(huì)輸出0。

    再看下一個(gè)地方,同樣的結(jié)構(gòu),同樣的思路,使verifySignaturesLP永遠(yuǎn)輸出1。

    改后如下。

    下一處,這里沒(méi)有那種大if嵌套結(jié)構(gòu),又好像有很多代碼和安裝相關(guān),所以找到包含-104的小if結(jié)構(gòu),跳過(guò)它。

    觀察java代碼,在smali文件中檢索字符串New package has a different signature:,向上幾行可以看到條件跳轉(zhuǎn)語(yǔ)句,對(duì)應(yīng)java中的if,改為無(wú)條件跳轉(zhuǎn)語(yǔ)句goto,改完如下。

    下一處,觀察發(fā)現(xiàn),圖中String oldCodePath = null;之前的代碼都是對(duì)錯(cuò)誤情況的處理,String oldCodePath = null;之后的代碼才似乎是安裝相關(guān)的代碼。所以最好能直接跳到String oldCodePath = null;的相關(guān)位置。

    由相關(guān)字符串檢索定位到String oldCodePath = null;前面的if語(yǔ)句對(duì)應(yīng)的smali代碼,修改條件跳轉(zhuǎn)為無(wú)條件跳轉(zhuǎn)到:cond_19b(標(biāo)簽不一定相同,這個(gè)前面帶冒號(hào)的東西叫標(biāo)簽,可以標(biāo)定要跳轉(zhuǎn)到哪里),改后如下。上圖剩下的兩個(gè)-104相關(guān)代碼只改第一個(gè)跳轉(zhuǎn)到:cond_19b即可,程序順序執(zhí)行,第二個(gè)被跳過(guò)了。

6.收尾
    jar文件和改后的文件夾放在_INPUT_JAR中,重新編譯,編譯后的jar文件在_OUT_JAR中。用開(kāi)心電視助手刪除盒子中原有services.jar文件,再把改后的發(fā)送進(jìn)去。開(kāi)心電視助手中點(diǎn)擊工具箱,再雙擊重啟。重啟后成功則會(huì)進(jìn)入電視桌面,失敗則會(huì)卡在開(kāi)機(jī)畫面。若失敗則用hitool燒寫還原,因?yàn)橹桓膭?dòng)了system區(qū),只燒寫system區(qū)即可。

一些說(shuō)明和疑問(wèn)
1.為什么要修改services.jar文件
    參考https://blog.csdn.net/RussellTheRush/article/details/43705951,安卓源碼中的java文件和反編譯出來(lái)的smali文件的文件名是對(duì)應(yīng)相同的。百度文件名或許可以找到j(luò)ava文件被編譯到了那個(gè)jar文件中,可能有其他方法我不知道,請(qǐng)教各位如何知道java文件被編譯到哪里。

2.為什么只改PackageManagerService
    一開(kāi)始并不知道改哪個(gè),把網(wǎng)上出現(xiàn)最多的幾個(gè)文件都找出來(lái)改改,發(fā)現(xiàn)PackageManagerService最可疑,有g(shù)uangdong這個(gè)字符串,可能是調(diào)用廣電的簽名和app的簽名比較,相同的才安裝,所以問(wèn)題出在它。

3.-104是怎么知道的
    可以把盒子里的安裝包拉出來(lái),用AndroidKiller分析,找到簽名沖突字符串對(duì)應(yīng)的資源id,再檢索即可知道-104。還可以在安卓源碼搜索網(wǎng)站上搜索INCONSISTENT_CERTIFICATES,溯源得到-104?;蛟S可以在進(jìn)一步溯源直接知道要修改PackageManagerService文件,而不必百度。但是我卡住了,有一個(gè)參數(shù)不知道是從哪傳進(jìn)來(lái)的。在此請(qǐng)教各位如何鎖定PackageManagerService文件。

非計(jì)算機(jī)專業(yè),都是這幾天在網(wǎng)上東拼西湊弄的,若有更好的方法,請(qǐng)各位指出。備份出img文件后用相關(guān)ROM工具安裝應(yīng)用再刷回不知是否可行,可以試試。

地板
 樓主| 發(fā)表于 2022-2-3 10:25 來(lái)自ZNDS手機(jī)版 | 只看該作者 | 來(lái)自廣東
本帖最后由 xigxmmbc 于 2022-2-3 10:42 編輯

若沒(méi)有root,則可以先備份img文件,再修改img文件再刷回,要拆機(jī)。可以用rom相關(guān)工具修改,原理同上。
5#
 樓主| 發(fā)表于 2022-2-3 10:26 來(lái)自ZNDS手機(jī)版 | 只看該作者 | 來(lái)自廣東
本帖最后由 xigxmmbc 于 2022-2-3 10:39 編輯

備份可以用dd命令,adb調(diào)試即可,不用拆機(jī)。刷回好像不能用,因?yàn)閍db輸入命令依賴于system分區(qū)的文件,刷回不就改變了system分區(qū)了嗎,不太清楚,但我試過(guò)失敗了。只能拆機(jī)刷回。
6#
 樓主| 發(fā)表于 2022-2-4 10:55 | 只看該作者 | 來(lái)自廣東
本帖最后由 xigxmmbc 于 2022-2-4 20:32 編輯

7#
發(fā)表于 2022-3-25 18:01 來(lái)自ZNDS手機(jī)版 | 只看該作者 | 來(lái)自廣東
太復(fù)雜,不適合小白初學(xué)者
8#
發(fā)表于 2022-3-26 17:55 來(lái)自ZNDS手機(jī)版 | 只看該作者 | 來(lái)自廣東
luo396825486 發(fā)表于 2022-3-25 18:01
太復(fù)雜,不適合小白初學(xué)者

確實(shí)
9#
發(fā)表于 2022-5-21 21:09 | 只看該作者 | 來(lái)自廣東
樓主修改代碼圖沒(méi)了,不會(huì)smali代碼
10#
發(fā)表于 2022-5-31 09:54 來(lái)自ZNDS手機(jī)版 | 只看該作者 | 來(lái)自四川
是否可以直接替換services.jar這個(gè)文件??

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-10-23 04:44 , Processed in 0.078282 second(s), 16 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表