小米MiFlash刷機免認證的方法
小米對線刷包中的【prog_ufs_firehose_sdm855_ddr.elf】文件(是個二進制文件,9008線刷就是靠它)進行了加密。miflash進行【9008】線刷,其實本質(zhì)就是調(diào)用高通的驅(qū)動。高通線刷工具叫【qpst】,網(wǎng)上都可以下載。
電腦會把這個【prog_ufs_firehose_sdm855_ddr.elf】文件下載到手機,通過此文件來把線刷包中的所有文件按照各個xml的配置代碼,依次寫入手機中。
小米對【9008】加密,其實就是把【prog_ufs_firehose_sdm855_ddr.elf】給加密了,導致miflash或者高通的qpst在讀取這個【prog_ufs_firehose_sdm855_ddr.elf】文件時,強制報錯。miflash強制報錯后,就會彈出登陸框,讓你登陸小米賬號,如果此小米賬號有【9008】權(quán)限的話,便重啟線刷并走完。這就是整個刷【9008】的過程。
【prog_ufs_firehose_sdm855_ddr.elf】只有一個簽名,用來保護手機型號,因為不用型號的手機【prog_ufs_firehose_sdm855_ddr.elf】文件是不能通用的,簽名就在這里發(fā)揮了作用,防止其它型號的手機刷入。而小米似乎就在這個【prog_ufs_firehose_sdm855_ddr.elf】里面多加了一個小米自家的簽名,用來驗證你的小米賬號是否具有【9008】權(quán)限的。
所以,解方式有兩種
一、解【prog_ufs_firehose_sdm855_ddr.elf】文件中的小米自家簽名認證,刪除掉那段簽名認證的代碼,這樣線刷就不會報錯(彈出沒有【9008】權(quán)限)了。
二、直接對miflash下手,用com口抓包工具,對正處于【9008】線刷狀態(tài)的miflash進行抓包,看看miflash到底對手機com發(fā)送了神馬代碼(這個代碼就是把線刷包中的文件寫入到手機),然后捕獲此代碼,將其稍加修改,使其能直接用高通qpst進行線刷,而無需用miflash來線刷,這樣就算沒有【9008】權(quán)限的小米賬號,也能直接刷。因為高通qpst工具不需要任何登陸。
目前我試著改了【prog_ufs_firehose_sdm855_ddr.elf】中驗證權(quán)限的代碼,發(fā)現(xiàn)改了之后,需要重新用高通的簽名來簽名elf,因此,此法不通。所以,要想解,就只能從miflash來入手了。
用IDA_Pro_v7.0(百度下載)反編譯【prog_ufs_firehose_sdm855_ddr.elf】文件,查看其源代碼,或者直接用16進制工具(010Editor.exe)也可以查看其代碼。你能在源代碼中,找到這樣的代碼【only nop and sig】,這個就是小米自家的簽名權(quán)限認證。破解它,就完事了。就是它,讓我們在【9008】線刷時,彈出登錄框。你用老版本的miflash沒有任何用,它只是讓你miflash強制報錯中止線刷而已,所以高通qpst也是如此被強制報錯中止。所以要用最新的miflash,最新的miflash在接收到這樣的強制報錯后,就會彈出登錄框,登陸成功后鏈接服務器,判讀是否具有【9008】權(quán)限,沒有則提示你沒有【9008】權(quán)限,然后就沒有然后了。如果判斷為有【9008】權(quán)限,miflash便會自動清除錯誤信息并開始線刷(它會從服務器就收一些數(shù)據(jù)包,用來給【prog_ufs_firehose_sdm855_ddr.elf】文件中的【only nop and sig】這個代碼驗證判斷用)。然后我發(fā)現(xiàn)修改【prog_ufs_firehose_sdm855_ddr.elf】后,需要重新使用高通的簽名對其簽名,不然手機的cpu不認未簽名的文件,也就無法下載。所以,似乎只能從miflash入手了。
從miflash入手,用記事本(其他編輯工具可能看不到)打開【XiaoMiFlash.exe】,有很多亂碼,不管他直接搜索代碼【f h _ l o a d e r . e x e】,這個文件其實是高通提供的,【9008】線刷就是它把線刷包中的文件寫入到手機的。miflash也是調(diào)用的它來寫入刷機包的。你能在記事本中找到類似于這樣的代碼【fh_loader.exe –port=\.\COM20 –sendxml=partition.xml,patch4.xml,rawprogram4.xml –search_path=D:\Users\R\Desktop\test –noprompt –showpercentagecomplete –memoryname=UFS】看不懂?鏈接:【 查看附錄1 】我就懶得一個一個解釋參數(shù)的含義了?!緁 h _ l o a d e r . e x e】文件就是通過這樣的命令將線刷包中的文件,一個一個的寫入到手機磁盤的。所以,對其正處于【9008】線刷狀態(tài)的miflash用com抓包工具,進行抓包,看看miflash到底發(fā)送了神馬樣的指令。如果成功將指令截取出來了,那么以后的【9008】強刷都無需這坑爹的miflash了,直接高通qpst線刷之,或者直接用cmd命令,依次執(zhí)行這些命令,就可以完成【9008】線刷,那么,小米所謂的【9008加密,售后賬號才能刷寫,這就完全成為了擺設】。
【9008】線刷走向:通過【QSaharaServer.exe】文件將【prog_ufs_firehose_sdm855_ddr.elf】文件下載到手機,再通過【fh_loader.exe】文件,執(zhí)行刷寫命令,把線刷包中的所有文件依次一個一個的寫入手機磁盤中。
小米【9008】加密走向:使用miflash或者高通qpst開始線刷,調(diào)用【QSaharaServer.exe】文件將【prog_ufs_firehose_sdm855_ddr.elf】文件下載到手機,再調(diào)用【fh_loader.exe】文件,執(zhí)行刷寫命令,執(zhí)行到小米自家的簽名驗證代碼處,強制【return eoor】,迫使線刷工具(miflash或者高通qpst)報錯中止線刷,高通qpst就沒有然后了,最新版本的(MiFlash2018-5-28-0)miflash接收到這個強制報錯信息,調(diào)用mi目錄下的【account_auth.exe】進行登陸小米賬號,鏈接服務器判斷張否權(quán)限問題,無權(quán)限就沒然后了,有權(quán)限,就從服務器下載相關(guān)數(shù)據(jù)包到本地,再次以接收的數(shù)據(jù)包去執(zhí)行【fh_loader.exe】文件,小米自家的簽名認證就通了,接下來就是開始正常刷入手機磁盤了。
關(guān)于QFIL下載工具
1.下載qpst工具,在QFIL文件夾下找到fh_loader.exe和QSaharaServer.exe文件2.使用QSaharaServer.exe 下載firehorse代{過}{濾}理,如下:
QSaharaServer.exe –p \.\COM5 -s 13:C:\images\prog_emmc_firehose_8909.mbn
com5是diag端口號
C:\images\prog_emmc_firehose_8909.mbn是firehose代{過}{濾}理路徑
3.開始下載升級
fh_loader.exe –port=\.\COM5 –erase=0 –sendxml=rawprogram_unsparse.xml –
search_path=C:\8909images –noprompt –showpercentagecomplete –
memoryname=eMMC –reset
–erase=0代表全擦升級,也代表物理分區(qū)0擦除。例如erase=x。
–sendxml代表要用的xml文件,如果是兩個xml,可以這樣使用:–sendxml=rawprogram_nand_p2K_b128K.xml,patch_p2K_b128K.xml。
–search_path下載版本路徑。
–noprompt 取消用戶與fh_loader交互。
–showpercentagecomplete 指示下載百分率
–memoryname內(nèi)存類型。
–reset 下載完成后自動重啟。
以上是主要下載的可選參數(shù),也可以不選擇,例如,不全擦升級,可以如下操作fh_loader.exe –port=\.\COM5 –sendxml=rawprogram_unsparse.xml –
search_path=C:\8909images –noprompt –showpercentagecomplete –
memoryname=eMMC –reset。
總結(jié):使用QFIL下載,實質(zhì)就是下載firehorse代{過}{濾}理后,通過代{過}{濾}理下載即可完成。
以上來自吾愛破解網(wǎng)友的分享,希望大家也可以相互分享一下自己的一些刷機新心得!