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

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

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

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

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

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

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

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

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

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

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

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

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

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

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

評分

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

查看全部評分


上一篇:一包煙求教刷機(jī)康佳LED42R6680AU,我進(jìn)不去刷機(jī)哪里
下一篇:安卓9固件解包修改封包簽名個人獨(dú)創(chuàng)教程
推薦
發(fā)表于 2023-3-8 16:25 | 只看該作者 | 來自廣東
鏈接失效了,大佬是否可以再分享一下呢?感激不盡!
回復(fù) 支持 1 反對 0

使用道具 舉報

推薦
 樓主| 發(fā)表于 2023-2-6 14:31 | 只看該作者 | 來自廣東
1OmMM_nX2n2x4tsMAbB8oog
amcp
回復(fù) 支持 1 反對 0

使用道具 舉報

推薦
 樓主| 發(fā)表于 2022-11-4 10:03 | 只看該作者 | 來自山東
本帖最后由 xigxmmbc 于 2022-11-4 10:12 編輯

/s/16WaSDBqdI0OcnxiojcIkmA
mkew
帶圖版的和services.jar在這里了, 之前圖發(fā)不出來. services.jar能用的話回來說一聲.
回復(fù) 支持 1 反對 0

使用道具 舉報

沙發(fā)
發(fā)表于 2022-2-2 20:07 | 只看該作者 | 來自河南
感謝樓主分享
回復(fù) 支持 反對

使用道具 舉報

板凳
 樓主| 發(fā)表于 2022-2-2 23:25 | 只看該作者 | 來自廣東
5.修改smali文件
    打開java文件,這里用vscode打開,檢索-104,可以找到大約10處。-104就是簽名沖突錯誤或者INCONSISTENT_CERTIFICATES錯誤對應(yīng)的代碼,要找到并修改對應(yīng)代碼,跳過中斷安裝的代碼塊。我們分析java文件只是為了方便修改與之對應(yīng)的smali文件,而不能直接修改java文件,因?yàn)閟mali文件夾和jar文件的轉(zhuǎn)換是可逆的,而java文件夾與jar文件的轉(zhuǎn)換使不可逆的,jar文件幾乎就是安卓系統(tǒng)直接運(yùn)行的文件,而我們的目標(biāo)是使jar文件按照我們的想法改變。分析java文件的原因是smali文件雜亂且冗長,不好分析。看下面的分析。

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

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

    改后如下。

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

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

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

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

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

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

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

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

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

回復(fù) 支持 反對

使用道具 舉報

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

若沒有root,則可以先備份img文件,再修改img文件再刷回,要拆機(jī)??梢杂胷om相關(guān)工具修改,原理同上。
回復(fù) 支持 反對

使用道具 舉報

5#
 樓主| 發(fā)表于 2022-2-3 10:26 來自ZNDS手機(jī)版 | 只看該作者 | 來自廣東
本帖最后由 xigxmmbc 于 2022-2-3 10:39 編輯

備份可以用dd命令,adb調(diào)試即可,不用拆機(jī)。刷回好像不能用,因?yàn)閍db輸入命令依賴于system分區(qū)的文件,刷回不就改變了system分區(qū)了嗎,不太清楚,但我試過失敗了。只能拆機(jī)刷回。
回復(fù) 支持 反對

使用道具 舉報

6#
 樓主| 發(fā)表于 2022-2-4 10:55 | 只看該作者 | 來自廣東
本帖最后由 xigxmmbc 于 2022-2-4 20:32 編輯

回復(fù) 支持 反對

使用道具 舉報

7#
發(fā)表于 2022-3-25 18:01 來自ZNDS手機(jī)版 | 只看該作者 | 來自廣東
太復(fù)雜,不適合小白初學(xué)者
回復(fù) 支持 反對

使用道具 舉報

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

確實(shí)
回復(fù) 支持 反對

使用道具 舉報

9#
發(fā)表于 2022-5-21 21:09 | 只看該作者 | 來自廣東
樓主修改代碼圖沒了,不會smali代碼
回復(fù) 支持 反對

使用道具 舉報

10#
發(fā)表于 2022-5-31 09:54 來自ZNDS手機(jī)版 | 只看該作者 | 來自四川
是否可以直接替換services.jar這個文件??
回復(fù) 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

GMT+8, 2024-9-21 03:33 , Processed in 0.082407 second(s), 18 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

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