您的位置:首页 > 其它

通过逆向Anan刷机大师得到集成三星线刷的思路

2016-02-22 12:59 323 查看
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即可实现对三星手机解锁。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: