坏的过程不多说了,此机现在的状态是:恢复出厂设置失败,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>