通過逆向Anan刷機大師得到集成三星線刷的思路

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/autohacker/article/details/50716037


0x01發現設備

     一旦有線刷模式的三星手機通過USB連接上PC,三星的USB轉COM口驅動ssudmdm.sys就會在註冊表

鍵爲\HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM增加值項\Device\ssudmdmXXXX,如下圖1:


圖1

很明顯,三星的設備都是\Device\ssudmdm開頭,後面的XXXX是由驅動分配的序號,這裏配合Windows的USB的熱插拔消息能很好的發現三星設備。

 

 

0x02 集成安安的三星刷機shell

     安安的三星的刷機shell其實是改過後的odin3,如圖2,通過修改程序入口處, LoadLibrary一個名爲CONDLG32.dll的動態鏈接庫以達到在進程中修改odin3程序行爲的目的。我們不妨調用它的shell與


圖 2

odin3進行交互線刷,能省去不少精力。相應的shell文件以及其依賴的文件全部放在報告中odin文件夾下。

     詳細的交互流程請見報告中src文件夾下的demo工程http://download.csdn.net/detail/autohacker/9438947


圖3

全部邏輯全部在函數startshell裏面,startshell的參數說明如下:

Id – 線刷ID , shell會通過這個id去查找註冊表查找對應的串口號,所以我們需要先準備好註冊表相應的值項(詳見代碼)

deviceName– 串口設備名 , 就是上一節我們介紹的\Device\ssudmdmXXXX

comport – 串口號

romFileName– 刷機包路徑 , 這裏即支持安安的刷機包,也支持三星原版的刷機包

通過匿名管道重定向shell的輸出流後,我們能清晰地看到整個詳細的刷機進程,如下圖



圖4

 

0x03 如何提取安安的刷機包

     安安的dx3刷機文件是一種對tar格式的刷機rom的壓縮加密之後的自定義文件格式,它通過hook住kernel32.CreateFileW,kernel32.ReadFile等文件操作函數實現一個微型文件沙盒從而對dx3文件進行解密並無縫調用odin3的相關線刷函數,如下圖5,kernel32.ReadFile的函數開頭處被inline hook。


圖5

因此,研究它的文件解密算法還不如直接注入到shell進程裏面去調用被它hook住的相關函數,具體邏輯請參見報告中src文件夾下的dumptar工程,它是一個dll工程,我們需要把dumptar.dll注入到shell進程裏面去,因此這裏採用微軟detours裏面的工具setdll將這個dll寫入到shell的導入表裏面去,如下圖:


運行安安優化大師進行刷機既可以將刷機tar文件解密到c:\parker.tar。

0x04 總結

     安安解鎖三星機型的具體邏輯在rom包的相關文件中,直接拷貝安安刷機包中aboot.mbn即可實現對三星手機解鎖。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章