|
警告:本文提到的方法可能存在未知风险,使用与否请自行斟酌。如因采用本方法而导致你的机器损坏,本人概不负责!
6 A/ M! N) K4 P
% X0 @- z( I4 j9 W7 M 在论坛经常看到有pre变半砖的消息,就是手机信号没了,左上角变成Phone Offline(以下简称PO),这种情况多数是meid和esn不匹配造成的。我的pre是meid始终无法清零的那种,不管怎样改,一重启就回复原样,因此以为PO问题与我无关,没想到,几天前在写号的时候PO了,于是开始修砖,折腾了很久,无法成功,看了论坛的很多帖子,比较公认的方法是先清meid,esn,然后重新写回meid,我对此深信不疑,而且当时也认为这是唯一正确的方法,但是对于meid一直无法清零的pre,这种方法是无法实现的,正当深感修砖无望之际,忽然的一个想法,让我的Pre复活了……* @) J* `0 F! }! ?. o- C
- n, F1 q/ ^; x5 B# ^+ p8 S1 |
为了减轻广大砖友的痛苦,我经过反复试验,总结出快速变半砖和快速修半砖教程。之所以要写变半砖的教程,目的在于说明修砖的原理,同时也可供高手测试用,作为研究写号技术的参考,使用正常的机友就不要轻易尝试了。
9 f5 t# N0 S! R# _- [
$ A* [7 Y* J. t6 Y4 y. j在开始教程之前,先说一下本人使用pre的一些经历,以更好地阐明meid,esn的作用原理,对部分机友可能有所帮助。0 G7 d" J9 v1 a% s: I
我的pre大概是4、5个月前买的,meid一直无法清零,但这并不意味着就无法打电话,我采用的方法是不去管meid,直接在内存中改esn,这样也可正常打电话,也许有人会问,这样不就造成meid,esn不匹配吗?是不匹配,但没问题,后面的教程将会告诉你怎样才是真正的不匹配。
2 H# I1 I! m! l' I4 }9 B( O虽然这样做有个好处,就是不用打meid补丁,profile就能正常sign in,app catalog也能正常使用,不过手机就不能做重启或使用飞行模式等操作,因为那会使esn复原,需要重新改,当然,可把内存改esn的操作写成脚本在QXDM运行,使这个操作变 得非常快速方便,代码如下:- RequestItem "Poke DWORD Request" 0x00A5BEC4 1 0x12345678 0 8 I& x+ V- V1 g) n
- RequestItem "Poke DWORD Request" 0x00A62618 1 0x12345678 0
$ y& T" G* P! [0 n5 I3 G- P - RequestItem "Poke DWORD Request" 0x00A86188 1 0x12345678 0 8 f( f" l4 a3 J! m
- RequestItem "Poke DWORD Request" 0x00AACF40 1 0x12345678 0 * m# {0 F: q# W1 `3 l \
- RequestItem "Poke DWORD Request" 0x00AAD0FC 1 0x12345678 0 ( N ~1 O5 _# {- u
- RequestItem "Poke DWORD Request" 0x0109B2AC 1 0x12345678 0
/ W n% ^$ L& ?* h% x/ D - RequestItem "Poke DWORD Request" 0x0122199D 1 0x12345678 0
复制代码 以上代码是基于1.03rom的,其他rom也一样,只要用相应rom下的esn地址就行了。/ B9 s% X, s9 I. E* N
5 n2 R9 a! f/ }9 f6 W; c9 P# x r- U
(在此顺便说一下怎样取esn地址,不用去扫描内存了,基本上有用的地址都在A00000-12D0000这一段,直接去cdma workshop或UniCDMA2005存下来就行,不过在保存的过程中最好不要在你的计算机上做其他操作,不然很容易中断。): i7 k( p) f- H$ S
+ |) v6 j& o h* y
好了,继续上面的问题,把代码中的0x12345678改为你要写的esn,然后存为xxx.scr(文件名随便起,但扩展名一定要.scr),打开QXDM,选Option->Settings,在Alternate Script Path一栏填入xxx.scr所在的路径,点OK,然后在Command中输入run xxx.scr就行了。
' Z. v k( i$ Q% Y$ o! T1 u说明一下,不一定要所有esn地址都改,而且最好是改最少的地址而使RequestNVItemRead esn时查到的是本机的esn而在电话拨号面板中用##3282#查到的是你写入的esn,这样变砖的概率更小,尽管全改变砖的概率也不大。虽然这样做使得改esn变得很方便,而且我试过手机几个星期不重启也没问题,但毕竟当手机没电或误操作飞行模式(还有其他操作也会使esn复原,如##000000#)而身边没有电脑就没办法了。因此,我还是不断做meid清零的尝试,几乎在各个rom下都试过,始终无法成功,最后一次在1.4rom下,结合PmModemFactory的使用,终于使Pre变半砖了,于是有了上面提到的修砖行动,期间刷过了几次rom,最后在1.03rom下,还是用PmModemFactory,修砖成功。由于在这个过程中做了很多操作,无法确定那些步骤是必要的,那些是不必要的,为了能总结出有效的方法,本着为了革命,不怕牺牲,不入虎穴,焉的虎子的精神,我决定让我的Pre再变砖,之后做了不下20次的变砖、修砖操作,终于总结出了快速变半砖、修半砖的简明教程。
% F9 m: Z9 u5 \7 J3 g
- k! ]& B5 X3 P& J) Z好了,罗嗦了这么多,主题就要开始了,以下提到的方法在1.03rom下进行,在其他rom下应该也没问题。* M. y$ W; J7 {' M& t
. ( R6 J$ b5 K* W2 y
. @5 [3 ]$ U4 s! U$ w E5 Q- @准备工作:首先要有QXDM和PmModemFactory,PmModemFactory在低版本的rom中就有,如果你是使用高版本的rom,请去低版本的rom中提取,并放在pre的/usr/bin下面,接着在电脑上运行那个talk.py,打开wifi,用telnet的方式上pre(具体方法请参见论坛上的其他教程)。为什么不通过putty用8023端口直接上,是因为那样输入mpt d后,在diag模式下putty会断开。
2 R1 u# `0 n# a2 k; {& e) N- a2 t6 {' E: V( \* ~9 j& O
一、Palm Pre快速变半砖教程
- Z3 E8 ?5 }- A( P0 a; i说明:本教程仅适应于没有改本机的pre,即meid,esn为出厂的值,scm为0x3A + w; u7 v) o9 O$ F% Q
1、在telnet窗口下,输入mpt d
5 m) ?1 z/ X( \ t! t ^) V+ ?2、把前面代码中的0x12345678改为0x0或除本机esn外的任一数值,保存为xxx.scr,然后打开QXDM,在Command中运行run xxx.scr,可用RequestNVItemRead esn查询,确保esn已改变(esn地址一定要全)/ T2 |4 ?6 ~0 A* T7 ~3 K
3、关闭QXDM,切换到telnet窗口下,输入mpt x
. T0 `; \' J+ K" a4、接着输入PmModemFactory -r 0(恢复工厂nv项目,这一步是关键)\
[' k* N: k) B5、在pre上打开飞行模式再关闭,你会发现左上角一直是searching了(这一步可以省略)- & ~* `/ {9 V8 S. P2 a3 J
6、在telnet窗口下,输入reboot,重启,pre的左上角变成Phone Offline了
0 y6 v! }4 B; h1 G" x9 t这时候在##3282#中查到的meid,esn都为0(不管你在第2步动写入的是0x0或其他值,因不匹配,radio异常,取不到就显示为0),而在QXDM中RequestNVItemRead meid显示为本机meid,RequestNVItemRead esn显示为你写入的值,RequestNVItemRead scm变为0x2A了。如果这时候你再逐个meid地址去检验,就会发现有几个meid地址变零了,只剩下2、3个保持原值。
2 M9 l8 A0 z$ C' c7 |0 b0 O. \
; c. |3 w0 P1 q: a4 ]7 u$ T4 h9 O6 I0 ?; O% ]
, |5 Q) K1 d3 I9 _6 J; d- R
二、Palm Pre快速修半砖教程:
3 z0 x4 {4 n0 ]* O3 T C& z说明:本教程对采用上面教程后变成的半砖机能100%修复,相信对大多数因meid,esn不匹配造成的半砖机也能修复 / j/ [+ a( |% X" R7 @) X
1、在telnet窗口下,输入mpt d# {) w9 L7 n1 [- h' F3 n
2、把前面代码中的0x12345678改为跟本机meid匹配的esn,保存为xxx.scr,然后打开QXDM,在Command中运行run xxx.scr,可用RequestNVItemRead esn查询,确保esn已改变(esn地址一定要全)9 _2 z2 @( `/ P
3、关闭QXDM,切换到telnet窗口下,输入mpt x4 h4 P4 L# s7 R$ ^$ V) p |
4、接着输入PmModemFactory -r 0(恢复工厂nv项目,这一步是关键)
& l1 V3 ^2 T3 @( P- L/ ^* f' C, w5、接着输入PmModemFactory -o 2(modem reset),可以去看你的手机了,大概10秒后,开始搜索信号了,修复成功 $ @" I2 r2 m* [, J* J
4 [% l& Y1 C2 Z# y这时候在##3282#中查到的meid,esn都变为原值了,在QXDM中查meid,esn也是原值,scm变为0x3A。再去检验meid地址,也都恢复了原样。 9 z' K7 n# q8 o' T1 f
& l2 x, R% W3 y: C; U总结: ( S2 P0 _8 b+ p2 A. h' t: l# X; I. j; E
为什么说PmModemFactory -r 0是关键呢?我估计是这个对meid,esn进行匹配校验,教程一校验不通过,使radio异常,教程二校验通过,radio正常。而一般情况下的重启只是把meid换算出esn,然后恢复。
p T8 _5 l+ a. h: z2 o4 @ " h& i; j! z9 B) J0 [4 b
个人看法:本人认为重刷radio对修复这种情况的半砖没什么作用,因为radio可看作是程序部分,而meid,esn是nv项目,可看作数据部分,再刷radio还是原来的radio,除非对radio作修改,这和重刷rom没什么区别(目前情况rom中都是带radio的),不过,这对真砖可能有作用(真砖没看过,猜的)。而那种通过恢复在qpst下备份文件的方法也是无效的,因为在恢复nv项目时meid,esn是无法以这种方式恢复的,否则修改meid,esn就变得非常容易了。
; E5 \' ?: ?# x/ Y# Y" z" e6 N4 Q$ y ~6 z. Q1 [" r4 @
在此,本人想提出一些不禁用meid而改esn的思路,已供机友共同探讨研究。 / k. Q. t1 G0 X" \3 b9 j* t
一、直接在内存中改esn要用到电脑,pre不就是一部电脑吗?能否写linux下的程序,在pre上直接运行改esn,最好是能写成daemon进行监控,发现esn恢复了就立刻重写。不过这种方法难度较大,因为应用和通讯是两套独立的系统,有各自的cpu和内存,应用程序对通讯处理器的访问是通过AT命令的,想要直接访问那边的内存是很难的,想要实现daemon就更难了,因为通讯方面内存的变动在linux这边应该是监控不到的。-3 m* R+ }% `! c x/ `
2 h: b5 Q- N( a# f/ j% Y二、修改radio。从radio的文件可看出,esn是由meid通过hash算法换算出来的,那么就可通过修改这部分,不管它怎么换算,把结果替换成你想要的esn,或者使它换算后,不对esn进行恢复。这个难度也不是一般的,主要是很难找到高通芯片方面的资料,如果有这方面的反汇编工具,对radio进行反汇编,那么这个方法实现起来倒是较有可能。% z9 ~8 K& }' a
4 ~7 ?% O, I3 u1 `3 t+ x
(本文同时发于吹友吧和51) |
评分
-
查看全部评分
|