华为荣耀4X使用eRecovery恢复系统

坏的过程不多说了,此机现在的状态是:恢复出厂设置失败,Fastboot不能连接USB(请求设备描述符失败),充电时按音量+开机,可以进入eRecovery模式,可以连接wifi但“获取安装包信息失败”。

经过论证与实践,找到一个可行方案:搭建服务器,让手机能获取到安装包信息。先贴上两个重要的地址

荣耀4X官方刷机包,我的型号是CHE-TL00H,从下面的链接中可以找到我的型号,点了一下可以下载。

https://cn.club.vmall.com/thread-11625493-1-6-1610.html

搭建升级包服务器的一个例子,他是用一种代理软件来获得手机的请求地址,并给予特定的返回信息。

https://www.micropissed.com/2017/01/you-can-upgrade-to-android-7emui-5-before-it-says-theres-an-update

下面来讲一下我的具体实现:

1,电脑开热点,让手机连接上来,把它请求的地址利用Hosts文件直接解析到本机。通过上面的例子可以知道POST地址是

http://query.hicloud.com/sp_ard_common/v2/Check.action

所以我的hosts文件增加一条 192.168.137.1    query.hicloud.com

2,写一段程序来接收这个POST请求,并返回刷机包信息

;POST请求 /sp_ard_common/v2/Check.action 时,返回以下json{
"status": "0",
"autoPollingCycle": "1",
"components": [{
"name": "FRD-L04C567B360-OTA",
"version": "CHE-TL00HB580",
"versionID": "80022",
"description": "4X (2017/01/03)",
"createTime": "2017-01-03T03:18:12+0000",
"url": "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1020/g223/v80022/f1/"
}]
};上面的url是我手机的下载地址,必须跟自己的手机对应啊

这样再连接wifi就可以获取到安装包了。

我还遇到恢复系统时卡在99%不动了,我按电源强制重启,竟然正常开机了,手机修复。

下面再贴一下关键代码,用go语言的,有个叫gin的web服务端框架,很好用。

package mainimport ("fmt""net/http""github.com/gin-gonic/gin"
)func main() {gin.SetMode(gin.DebugMode) //全局设置环境,此为开发环境,线上环境为gin.ReleaseModerouter := gin.Default()    //获得路由实例//添加中间件router.Use(Middleware)//注册接口router.POST("/sp_ard_common/v2/Check.action", HuaweiJson)//监听端口http.ListenAndServe(":80", router)
}func HuaweiJson(c *gin.Context) {retjson := `{
"status": "0",
"autoPollingCycle": "1",
"components": [{
"name": "FRD-L04C567B360-OTA",
"version": "CHE-TL00HB580",
"versionID": "80022",
"description": "4X (2017/01/03)",
"createTime": "2017-01-03T03:18:12+0000",
"url": "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1020/g223/v80022/f1/"
}]
}`c.Data(http.StatusOK, "application/json", []byte(retjson))return
}

最后,再上几张图吧,使用wireshark抓包分析的

/full/filelist.xml<?xml version="1.0" encoding="utf-8"?>
<root>
<component>
<name>TCPU</name>
<compress>0</compress>
</component>
<vendorInfo name="common" subpath="" logfile="changelog.xml" package="update.zip" />
<files>
<file>
<spath>changelog.xml</spath>
<dpath>changelog.xml</dpath>
<operation>c</operation>
<md5>B77CE557BE18D9AE56EF75AFE989CF7A</md5>
<size>2534</size>
</file>
<file>
<spath>update.zip</spath>
<dpath>update.zip</dpath>
<operation>c</operation>
<md5>FA2AA6B0FAE8416842CFCA6A13CB3ACF</md5>
<size>1622005806</size>
</file>
</files>
</root>

 

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注