Posts Tagged ‘SCM’

改进后的Blackberry 9530修改ESN方法已经发布

星期四, 六月 18th, 2009

友情提示:烧号有风险,操作需谨慎!!

为了简单,我直接在原文上进行了修改,已经标明具体修改内容,请大家查看:

http://honeyhan.cn/200906/09_965.html

http://honeyhan.cn/200906/09_968.html

http://honeyhan.cn/200906/09_976.html

http://honeyhan.cn/200906/09_992.html

经过本人数十次测试,该方法稳定可靠,简单易行,欢迎选用,呵呵!

有问题请及时提出,那可能是我文章描述的问题,我会及时修改。

Blackberry 9530 写号方法的改进

星期二, 六月 16th, 2009

根据网友反映,前面的方法有些步骤存在一定的偶然性,所以我们重新研究了,修订了方法,随后发布,此方法操作简单,非常可靠,不会出错。

经Coolfrog多日研究,终于研究出完美修改9530 的方法。


应该是最完美的方法了,敬请关注。

[4]BlackBerry 9530 CDMA烧号过程分享(手工写入ESN/MEID)

星期二, 六月 9th, 2009

最后更新:2010年4月26日

建议从第一篇开始看,本文是第四篇,共四篇。

十三、             写入手机

接下去就是搞定了,这个过程很痛苦,我2月份研究过,以完美的失败告终。最近几天是重新研究,尝试过很多方法,有些没意义的,就不写了,有些有意义的,我会记录下来,供大家参考。

[分析说明]

2月份研究过的方法包括:

1、通过 Workshop 3.3.5直接写(有很多写的方式),全部失败;

2、经典的内存扫描+QXDM手写方式(此处只是分析,该方法的操作步骤见后文):

a)         通过 Workshop(或 Universal、或UniCDMA)扫描9530的可读内存;

b)        把可读内存段导出,存为.bin文件;

c)         用16进制编辑器在导出的.bin文件中搜索9530的(按“字节反序”,即,如果你手上的9530的是1A-2B-3C-4D的话,你要在文件中搜索4D-3C-2B-1A),找到之后把地址全部记下来,并且换算成真实地址(该方法的操作步骤后面详述);

d)        用QXDM,打开Memory Viewer,找到所有的上述所在地址,把这些全部清为00000000,或者改成自己UIM卡的 F5XXXXXX;

可是面临的问题是,一旦重启,又会恢复成9530自己原先的

所以最近几天主要在研究这个的问题。经过对年初写号失败的反思,我有如下思路:

[分析说明]

1)        年初写失败,可能是存在一些未知问题;例如:我找到的可读内存地址段不准确,导致从内存中搜索到的数量不够全面,有遗漏,所以即使把我找到的全部改写了也无效?

2)        是否存在硬件上或不可读取的系统文件内,9530的系统程序会从硬件上或系统文件中读取,所以我们无论如何修改内存都无效?

3)        我们修改内存,到底起到的是怎样的效果,拔掉电池之后我们写入的信息不会丢失吗?9530怎么才能将自己管理的交给我们来修改呢?……

带着这些问题,最近几天,在google进行了一些关键字搜索,到国内外的网站上看了看帖子,了解到的新知识梳理如下:

[原理知识]

1、9530除了之外,还有个的东西(见上文的介绍),并且看起来好像9530是控制硬件识别的(不好意思,之前一直不知道这么回事情,所以总是盯着);

2、有一定的对应关系(知道可以推算出,但反之不行);

3、9530中有一个(可以翻译成状态类别码/状态类别标识、标记):

(Station Class Mask)

If the Value is 0x2A then Phone is Based

If the Value is 0x3A then Phone is Based

这个大家都能看懂吧,不解释了。

[分析说明]

此时,再加上其他一些杂七杂八的信息,我在脑中仔细思考了一下摆在面前的困难,决定,坚决放弃原先只盯着的思路,现在开始盯着//,我决定对这3个东西同时下手。

[A]攻坚战预备阶段:

修改过程中,我们要做的第一阶段工作,就是扫描9530的可读内存段,并将这些可读内存导出来保存为.bin文件,然后在这些文件中找到位置。

[操作步骤]

[A-1]扫描可读内存

2月份用 Universal扫描内存、导出内存都很正常,最近却碰到了一些问题,不知道是不是因为我换了操作系统的缘故(当时是2003,现在是2008);所以我改用 Workshop扫描内存(试用版也可以),大家可以根据各自情况选择 Workshop、UniCDMA、 Universal工具中的一个。

将9530连接到电脑,打开DM,再打看 Workshop,选择COM端口(例如COM9),点“Connect”,如果连接成功,可以点击一下“Read”,看看读取9530信息是否正常,如果正常,则将 Workshop切换到Memory一页进行内存扫描:

memory-scane589afe69cac

 

选择开始地址、结束地址以及步长,我选择的扫描步长是256字节,所以扫描速度很慢(一般用1024-4096),第一次扫描,从0000:0000开始,扫到3E24:1900时被我手工停掉了(没时间),扫描结果如下:

Scanning memory for readable areas:

Unreadable area from:  0000:0000

Readable area from:  01DF:2B00

Unreadable area from:  0268:5300

Readable area from:  17AE:B100

Unreadable area from:  17B2:6700

Readable area from:  17B2:8A00

Unreadable area from:  17FC:CB00

Process is stopped at:  3E24:1900

[特别注意]

上述扫描结果,我们需要从中挑出成对的“Readable”、“Unreadable”,例如第一对是:

Readable area from:  01DF:2B00

Unreadable area from:  0268:5300

表明从01DF:2B00到0268:5300这一段内存地址可读。

这是一个不严谨的说法,但是不影响我们的操作。如果要严谨地来说,应该是:

a)         从01DF:2B00开始的内存可读;

b)        也有可能在01DF:2B00之前某个地址的内存就已经可读,但不会提前到超过01DF:2A00(因为0x01DF2B00-×100=0x01DF2A00,步长256就是×100);

c)         我们所选择的这一段内存,也有可能中间会出现不可读的部分,因为我们是按照步长256字节进行跳跃式搜索的,不是一个字节一个字节地搜索的,可能不可读的部分被我们刚好跳过了,当然这种可能性很小,因为256字节在内存分配中是很小的数值了;

d)        直到0268:5300这个地址,内存开始不可读;

e)         也有可能在0268:5300这个地址之前,内存就已经不可读了,但不会提前到超过0268:5200(因为×02685300-×100=×02685200,步长256就是×100)。

f)         ……

memory-teche589afe69cac

是不是很罗嗦?呵呵,技术工作就是这么个东西,不能不严谨,有可能不严谨会侥幸没出问题,但是如果你的技术工作是关系到重要系统或重要事件,等你出问题了就太晚了,要养成严谨的习惯。

后来我有空的时候,又从3E24:1900开始扫描,到6724:F900结束,这一段没有扫到可读内存。再后来我就没继续扫下去了。

经过上述过程,我通过扫描得到的可读内存区间段如下:

[重要数据]

共三段(没有扫完,只扫了0000:0000到6724:F900的部分,因为我觉得后面的内存肯定没啥用)

第一段可读内存:

起始地址:01DF2B00

结束地址:02685300

总字节数:8988672 bytes(10进制)

第二段可读内存:

起始地址:17AEB100

结束地址:17B26700

总字节数:243200 bytes(10进制)

实际导出时在17B266E0处结束

实际字节数:243168 bytes(10进制)

第三段可读内存:

起始地址:17B28A00

结束地址:17FCCB00

总字节数:4866304 bytes(10进制)

(这一段我忘记是否全部导出了,反正不会相差太多,因为我的扫描步长是256字节,已经足够精确了。)

特别注意:关于扫描内存,我走过弯路,感谢maxpda论坛的1007给我解答,请大家务必注意——新版本的ROM限制了内存扫描操作,请使用老版本ROM,否则你会发现无法进行。(我用的是9530AllLang_PBr4.7.0_rel140_PL4...125_A4.7..99)

[A-1]导出可读内存,存为.bin文件

大家可以根据各自情况选择 Workshop、UniCDMA、 Universal工具中的一个,将上述可读内存全部导出;我用的是 Workshop 3.3.5。

[操作步骤]

read-bine589afe69cac

read-bin-2e589afe69cac

[A-2]在内存镜像文件中搜索

有了这3个.bin文件,我们就可以找了;

[操作步骤]

打开UltraEdit,并依次用16进制编辑方式打开.bin文件,并在该文件中搜索16进制的内容(9530手机自身的),注意,搜索的内容需要“按字节反序”,例如:

是A0 00 00 0D F1 E2 D3

是80 1A 2B 3C

则我们需要搜索的实际上分别是:

D3 E2 F1 0D 00 00 A0

3C 2B 1A 80

友情提醒:其实你可以搜索两、三个字节,即可。

如下图所示,我们在第一个.bin文件中,在0086ebdf-0086ebe6这个位置搜索到了第一个

meide589afe69cac

 

由于第一个.bin文件实际上是从01DF2B00开始的,因此,我们找到的这个实际上在内存中的位置是:0x01DF2B00 + 0x0086ebdf = 0x026616DF。

以此类推,你需要从所有的文件中找出所有的

下面是我找到的所有地址记录(我的9530用的是.99的ROM,你的可能跟我的不太一样):

[重要数据]

先说,共3处(看绝对地址就行):

起始地址:0x01DF2B00

偏移地址:0x0086ebdf

绝对地址:0x026616DF

起始地址:0x17B28A00

偏移地址:0x0011dbb8

绝对地址:0x17C465B8

起始地址:0x17B28A00

偏移地址:0x0029fe10

绝对地址:0x17DC8810

还有两个地址,有时候会用来存放

0x17DC88E0

0x17DD1960

我觉得它们只是缓存,临时用的内存地址,不需要关注。

此外还有个特殊地址0x17FCB20D,请见内存部分的描述。

接着说比较不确定,我找到10余处,有些地址会永远都是码,有些地址却有时候会变化。不多说,列在这里:

[重要数据]

0x02663F1C

0x02663F33(以上这两个地址非常重要,我们可以称它们为第一组地址)

注:第一组地址会发生变化,根据我最近操作过的所有记录来看,我一共发现过三组这样的地址,其规律就是都在×0266:0000至×0266:FFFF这一段内存空间中。另外两组分别是×02664042和×02664059,以及0x0266405A和×02664071。你也会有一组这样的地址。

0x17AEB8A4

0x17B0FCDC

0x17B1C244

0x17B9F0B8

0x17C4613C

以上5个地址也很重要,我们可以称它们为第二组地址,目前我实验过N次,这些地址没有发生过变化。

下面还有几个地址,有时候会存放,大部分时候是,可以适当关注:

0x17C46214

0x17C4C8A0

0x17C5AC2C

还有一个特殊的地址:

0x17FCB20D

第一次研究的时候,发现该地址有时候是,有时候是00000000;在本文刚写成的时候,在我修改成功的那一次,它还变成过;在本文v1.1版本修订过程中,可以确定该地址为QXDM的command缓存地址,事实上可以不用关注。

这样,我们一共找到11处,有些是会变的,大家记住这一点就行了,反正我们在操作过程中对这些地址进行多次检查,注意不要遗漏即可。

[B]正式开战

本部分包括如下操作:

1、用QXDM Memory Viewer改内存中的,共3处,全部改为

2、用QXDM Memory Viewer改内存中的,共7-10处左右(不一定每个都是必须,但为了保险,我全部改了);全部改为

[关键节点检查]

这个时候在内存中均为,此时应该出现一个现象,即,你可以使用命令修改中的任意一个(我在这里列出关键节点,是为了让你方便检查错误,如果上述两个步骤没有成功,这个检查就会有重要帮助了;你不需要手工检查,直接做下面的第3步,如果出错,再回头检查上面的内容):

l         可以用命令修改为任意值,包括

l         可以用命令修改为一个非值了(只有×00000000000000不可以,其他都可以,如果你输入位数不足14位,它会自动在前面补,如果你输入位数超过14位,系统会报错)——这个仅仅是我自己感兴趣的测试,大家不需要测试,该动作不是必须的,而且,如果用命令修改了,请注意一定会随之发生变化;

3、接下来应该通过QXDM的命令把修改为自己UIM卡的,同时确保为全

4、将网络设置为GSM,并尝试打开网络;

5、拔下USB线,然后冷启动(拔电池,再装上电池);

6、机器启动之后,检查GSM网络和信号标示状态,应该是SOS;

7、此时内存中的第一个地址(0x026616DF)处应该已经恢复位,用QXDM的Memory Viewer将其改为;然后将网络改为1XEV,然后拨打10000号、拨打自己的其他手机,看是否正常;

8、如果正常就再次冷启动,就大功告成了。

下文详述:

[B-1]第一步,把9530内存中所有的

得到上述重要数据(地址)之后,开始忙活,祭出法宝QXDM:

(要打开DM,并确认自己的9530连接电脑的端口是COM几,我的是COM9,然后用QPST Configuration配置一下端口,确认连接正常)

1、打开QXDM之后,先到Options-Communications里面设置连接的端口,然后打开两个窗口,一个Memory Viewer(F4),一个Command Output,并确认已经连接成功;

qxdm-communications

 

qpst-usee589afe69cac

 

2、在QXDM主窗口的左下角,有个Command输入框,在这里输入命令,依次输入:

RequestNVItemRead (敲回车)

RequestNVItemRead (敲回车)

RequestNVItemRead (敲回车)

这样在Command Output窗口就可以看到返回的执行结果,如下:

RequestNVItemRead

DIAG TX item:

= ×00000000

DIAG RX item:

= 0x80YYYYYY

RequestNVItemRead

DIAG TX item:

= ×0000000000000000

DIAG RX item:

= 0x00A000000DYYYYYY

RequestNVItemRead

DIAG TX item:

= ×00

DIAG RX item:

= 0x3A

不错,工作正常。

3、然后你可以试试看用RequestNVItemWrite命令改,会很顺利地失败的:)

meid-00-w-faile589afe69cac

 

4、因为我在直接折腾的时候,遭受过太多挫折,所以现在决定先灭掉,具体方式如下:

在QXDM的Memory Viewer中,找到如下3个地址

绝对地址:0x026616DF

绝对地址:0x17C465B8

绝对地址:0x17DC8810

把它们统统改成00000000000000并点击“Write”;

然后再通过Command去Read一下,确认是否修改完成。

5、接着也别耽误了,用同样的方法找到所有的,全部改为00000000

6、用Command确认一下:

all-zeroe589afe69cac

 

嗯,很完美。

到目前,我们做了3件事情:

l         被改成了0x2A

l         被清为了

l         被清为了

[B-2]第二步,把9530内存中的改为我们UIM卡上的

7、现在试试看用Command去写,写自己UIM卡上的,发现没有报错:

my-esne589afe69cac

8、继续通过Read的方式确认一下:

all-oke589afe69cac

 

不错,经过反复确认,发现没什么问题(修正:不必关注上图中的值,按照改进后的方法,此时应该是0x3A)。

9、在手机上进入Manage Connections菜单,选择Mobile Network Options,然后将Network Technology设置为GSM/UMTS;然后再退到Manage Connections里面,勾上Mobile Network前面的勾,这时候手机屏幕右上角的信号标示应该是个叉号,或者是个SOS;

10、我们需要把机器重新启动一下。经过kaka推荐,我用的是冷启动,就是直接拔电池,然后启动。

11、等手机启动好了之后,先检查一下手机屏幕右上角的信号标示,应该是个SOS;

12、在QXDM中通过命令读一下的值,应该分别是0x2A、老的、自己UIM卡的

13、如果你不放心,可以再次冷启动手机,并再次确认手机屏幕右上角的信号标示、;应该与11、12条一样;

14、在QXDM中输入命令RequestNVItemWrite meid_cd 1,并敲回车;然后通过QXDM的Memory Viewer,将修改为,正常的话,应该只有0x026616DF这一个地址需要修改,另外两个地址处都是,无需修改了;

15、在QXDM中输入命令RequestNVItemWrite meid_cd ,并敲回车;在QXDM中通过命令读一下的值,应该分别是0x2A、、自己UIM卡的

16、在手机上进入Manage Connections菜单,选择Mobile Network Options,然后将Network Technology设置为1XEV;然后再退到Manage Connections里面,勾上Mobile Network前面的勾,这时候手机屏幕右上角的信号标示应该显示出网络信号正常;

17、请拨打10000号,如果正常,再拨打其他手机号码试试看,如果正常就重新冷启动手机;

18、如果一切顺利,现在你的手机已经可以正常使用电话功能了。

此外,你还可以进入手机菜单的Options-Status,确认一下状态:

2e589afe69cac

你会看到两个重要变化:

l         原先这个界面的最下面是,现在变成pESN了!

l         更重要的是,这里的已经被改写成我们自己UIM的啦!

但同时还会发现另外一个问题:

##000000进入手编界面,你看到的pESN是

1e589afe69cac

而Status里面看到的是我们UIM卡上的(上文图),这两个不一致(目前使用中没有影响)。

一切正常,恭喜你终于可以使用自己烧号的9530了!

不论上述测试过程对大家是否有所帮助,都希望大家多提意见,集思广益,互相帮助,谢谢!

备注:

1、              第一次发布的方法,大家在实际操作中最容易出现的一个问题,就是会自动还原,不能保持的状态;

2、              因此,我仔细研究了这个问题,发现如下值得留意的信息:

A)在都是的情况下,可以用命令修改中的一个,不同的是——如果修改会自动随之变换成对应的值,如果修改当时是,而重启之后,会变成上一个有效值;

我推测,9530会自动保存上一个有效值,那么它到底如何判断“有效”呢?

A)要么是必须修改文件中的值;

B) 要么是必须用Write命令写成功;

C) 要么是它会根据上一次成功连接网络的情况自动保存一下,下次启动时恢复;

D)……

所以我想,可能得先让9530“忘记”它的,因此,我通过设置GSM-1XEV网络来回切换的方式,最终修改了,并让它记住了这个值。最后的修改版本,更彻底,直接用修改meid_cd标记的方式使机器不再校验,从而达到我们的目的。

以上为推测,不知道RIM是如何设计它的保护措施的,因此,仅供参考。

[全文完]

[3]BlackBerry 9530 CDMA烧号过程分享(手工写入ESN/MEID)

星期二, 六月 9th, 2009

最后更新:2010年4月26日

建议从第一篇开始看,本文是第三篇,共四篇。

十一、             工具的安装和基本使用方法(扫盲)

有些朋友可能对这些软件工具还不会用,其实只要大家勤快点上网去搜索搜索就可以学会了,为了让大家更方便,这里也简单列一下每一种软件的最基本用法:

注意,以下部分图片所示的软件版本可能不是最新的,请根据你的具体情况参考,例如QPST,是2.7的老版本,不是build 323版本;例如QXDM,是3.9.19,不是3.11.36; Workshop是3.3.5,不是3.4.1,你最好使用尽量新的版本。(我现在就用的是最新版本,新改进的方法也是用的新版本反复验证的,当然,就本文描述的内容而言,这些不会影响结果,用新的版本,会在其他工作中带来帮助。)

特别说明: Workshop是收费软件,但并不是必须的,对于本文而言,不用这个软件也一样可以实现预期结果。

1、将9530连接至电脑

首先,我们需要把9530手机连接到电脑,这样就需要安装DM,然后用USB线将手机连接到电脑,然后打开DM的设备管理器:

device-managere5b19ee680a7e589afe69cac

可以看到,我们的9530已经连接成功了。

接下来要确认这个连接用的是哪个端口,“我的电脑”-右键-“属性”-“设备管理器”-“端口”,能看到两个RIM Virtual Serial Port v2:

e7abafe58fa3e589afe69cac

在我机器上分别是COM8、COM9,通常我们要用的就是第二个(在我这里就是COM9),请把这个端口号记下来。

2、使用 Workshop

如果你使用 Workshop的话,可以在上述连接完成的基础上,打开这个软件:

 

connecte589afe69cac

 

如上图,你需要先选择Port(就是端口号,我这里是COM9);然后点击下面的“Connect”,如果连接成功,这个按钮会变成Disconnect。

为了测试是否连接成功,请点击旁边的“Read”,如果一切正常,你就可以看到左边的这些Phone Information(手机信息)了。

Workshop的Demo版有使用时间和功能的限制,但基本功能也够用了。

3、使用 Universal

如果你没有 Workshop正式版,又不喜欢Demo版,你也可以使用 Universal或UniCDMA(其实一样的,不过UniCDMA 2005好像不支持COM8以上的端口,你需要手工修改COM端口号,这个我就不多说了)。

具体使用方法:

cdma-universale589afe69cac

 

5、使用计算器

别不耐烦,你很可能还得用到计算器进行10进制、16进制的计算和转换。

calce589afe69cac

 

6、使用QPST和QXDM

上述软件只要复制就可以使用,这两个软件都需要安装。

安装好了之后需要先打开QPST Configration:

qpst-configuratione589afe69cac

 

点击“Add New Port”,添加你所要试用的COM端口。

然后打开PXDM,并从菜单“View”中选择“New”-“Common”,再选择“Command Output”和“Memory Viewer”两个窗口视图:

qxdm-viewe589afe69cac

接着就可以看到如下界面:

qpst-usee589afe69cac

 

本文中描述的方法只用到上述这两个视图:

在Memory Viewer中的“Address”输入框输入内存地址,下面的窗口中就会显示内存数据,如果你对内存进行了修改,需要点击旁边的“Write”按钮,使写入生效。

在主窗口下方的“Command”输入框中输入命令并回车,在Command Output窗口就能看到命令执行结果。

十二、             将IMSI写入手机(简述)

先简单说一下IMSI如何写进BB 9530,其实很简单。

在拨号界面,输入##000000,然后拨号,就出来手编界面,直接在IMSI_S那里写就行了(写10位阿拉伯数字的MIN:6181XXXXXX)。

当然你也可以用工具软件来写:

cdma-universal-name589afe69cac

cdma-workshop-write-imsie589afe69cac

注意,你要填写MCC、MNC、MIN,这样才是完整的IMSI。

写好IMSI之后,在手编界面填写HOME SID(上海电信是13840)应该就可以拨打10000号了,试试看!如果拨打其他电话,会提示没有开通此功能之类的。

如果你现在希望将写入手机,建议用软件实现,这里也就不描述了,网上关于IMSI和的文章非常多:

cdma-workshop-write-akeye589afe69cac

cdma-universal-name589afe69cac

[未完待续]

[2]BlackBerry 9530 CDMA烧号过程分享(手工写入ESN/MEID)

星期二, 六月 9th, 2009

最后更新:2010年4月26日

建议从第一篇开始看,本文是第二篇,共四篇。

 

 八、             准备工作1:获得UIM卡三码 

首先,这个东西只能通过电信内部的人拿到,或者还有个办法,就是找人帮你关闭鉴权,这样就不需要了(不推荐); 

其次,我们可以通过UIM卡获得IMSI(如前所述,其实我们需要的只是MSIN而已)和;方法很多: 

[操作步骤] 

i)               把UIM卡插在我的三星手机(S259+)中,依次按“菜单、4、*”键,出现一个输入密码的界面“系统程序”[图1]:输入000000;这时会出现“Service Mode”,第一页显示的就是(请看最后一行的8个16进制数)[图2];按“确定”可以看到第二个页面,就是MSIN[图3];继续按“确定”,直到手机重新启动[图4];——你用其他手机也可以,只不过操作方式略有差异,请大家查阅网上资料; 

anycall-cdma 

 

ii)               还是用三星手机,插入UIM卡,开机,输入*759#813580,就可以进入测试模式,手机屏幕显示一个TEST NONE的界面[图5],这时候就可以输入测试指令了,例如“024”,就可以看到界面出现“Send ”字样[图6],这个时候慢慢按“*”键,就可以看到了[图7];按4次*号键之后,你会发现024后面出现了一个“.”号[图7],表示这个指令结束了;如果你需要自己结束一条指令,开始下一条指令,也可以直接按“#”键;另外一个指令是“022”,按完之后也是用*翻页,就能看到MSIN了[图8]。 

特别注意:这个手机通过此种方法看到的MSIN好像有点问题,大致是这样: 

6181XX-XXX6181XX-XXX2A 

说它有问题,一方面是它位数不符合我们所了解的知识,它一共有6+9+4个数字,再加一个字母,而我们需要的是10位数字; 

另一方面,它的数字是有重复的,也就是我们可以猜测,它就是以6181开头的,不过第一次出现只有9位数字,第二次出现有10位数字,可惜的是第二次出现的10位,最后一位数字和前面一种方法看到的MSIN不一样,一个是,一个是2,呵呵,不知道怎么回事。(我采用的是第一种方法看到的MSIN) 

最后一条指令,002,手机会重启的。[图9] 

test-mode

(特别注意:三星有的机型指令是2位,不是3位,例如024,可能是24。)

iii)你还可以把UIM卡插在手机、上网卡等设备上,然后连接到电脑上,通过电脑上的工具软件去读取UIM卡信息(工具可以见后文);

view-esn-imsi 

特别注意:这个阶段,需要注意,应该获取UIM卡的信息,不要搞错了,别拿到手机机身的信息当作UIM卡信息。

九、             准备工作2:获得9530手机设备/

此外,在开始干活之前,还得记录下9530手机设备(机身)当前的,因为你在工作中需要查找这些东西,并且修改它们,还要确认是否修改成功。先说一下方法:

[操作步骤]

1、拨号界面按##000000,拨号,就可以得到,例如80YYYYYY

2、菜单,进Options,选Status,就能看到,例如A000000DYYYYYY

当然,你也可以通过软件读取,并记录。

十、             准备工作梳理和信息确认:

我们了解了简单的基本知识

1)        准备好了UIM卡对应的三码:

a)         :F5AABBCC

b)        IMSI:6181XXXXXX(MIN)

c)         :XXXXXXXXXXXXXXXX

2)        准备好了9530设备对应的

a)         :80YYYYYY

b)        :A000000DYYYYYY

3)        准备好了9530、USB线和自己的电脑,以及必备的工具软件;

4)        建议在手机中不要插入GSM网络的SIM卡,并且在开始时先将网络设置为1XEV。

[未完待续]

[1]BlackBerry 9530 CDMA烧号过程分享(手工写入ESN/MEID)

星期二, 六月 9th, 2009

BlackBerry 9530 烧号过程分享(手工写入/)v1.4 

Coolfrog <coolfrog#gmail.com

KaKa <kaka.maillist#gmail.com

因为本文的形成与kaka同志的贡献密不可分,因此,我们选择把文章首先发表在kaka的博客上,大家转载请注明出处,也请大家支持kaka的博客“籽籽在发芽”<http://honeyhan.cn/>,谢谢! 

 修订: 

V1.4 2009/12/12 改进在重启后会自动恢复的处理方法,绝对稳定,可靠,可操作(2010年4月26日在本博客发布) 

V1.3 2009/6/23做一些小的调整(错别字、措辞等) 

V1.2 2009/6/18制作发布版PDF 

v1.1 2009/6/18 对方法进行改进,改进后的方法更加稳定,避免了原方法中的一些偶然因素,重点修改在第十三章。其他修改: 

第七章,软件版本的说明; 

第十章,增加准备工作中的网络设置; 

第十一章,增加对软件版本的说明; 

第十二章,对IMSI增加补充说明; 

备注也进行了修改; 

对内存地址也进行了标准化,都加上了0x标记。 

 一、             致谢 

感谢kaka同志提供BB 9530供我随意折腾,10年来的hacking工作给了我们不断学习不断提高的机会; 

感谢1007对于9530内存扫描问题的解答(ROM版本问题),并感谢1007对于我解决该问题思路的启发; 

感谢Jacky和我的面对面沟通,让我更清晰地了解了很多技术问题。 

在此本人把最近研究BlackBerry Storm 9530烧号的进展汇报一下,主要是手工写入/部分的技术攻关。 

希望朋友们能够在此方法的基础上进行测试(注意不要弄坏你的BB,注意安全操作,宁愿多问,不要冒险),如果将来证明方法确实如我所认为的那样稳定可行,加之如果时间宽裕的话,也许会写个烧号程序供大家使用,因为这个过程还是有些繁琐的。 

二、             背景 

08年底,我开始使用189;不久后,kaka和另外一个兄弟各买了一台BlackBerry Storm 9530,于是他们决定也支持一下电信,考虑对9530进行烧号。 

经过kaka在网上的大量查阅资料,并进行筛选,给了我工作的基础,依靠这些资料,我基本了解了烧号到底是啥意思。 

随后的烧号尝试不断碰壁,首先是找人帮忙,可能由于该机器刚刚面市,国内外又没有多少人研究,所以在电信工作的朋友们尝试了很多种方法,都失败了(注:只考虑在手机上烧号,不考虑去电信后台更改配置)。 

Kaka怒了,就去买了一个正版 Workshop 3.3.5软件,结果发现这个软件也搞不定。 

困难在哪里呢?就是的问题——无法将手机号对应的UIM卡写入手机设备。 

在网上查阅了无数的国内外资料,没有找到搞定9530的的方法。其间,kaka经常会打电话给我,说在某论坛又看到某人搞定了9530写号问题,经过总结,我告诉kaka,理论上这些人都没搞定,肯定都是在电信开后门把机身写到电信设备上了,因为在全球范围内还真没找到这个问题的解决方法……于是,在经历了数轮打击之后,kaka同志很郁闷,并愤而在博客上发了一篇文章《作风一定要严谨》(http://honeyhan.cn/200903/05_767.html),当然他说的“作风”其实是指对待技术的态度,通过此文表达了对于那些研究技术、阐述问题不严谨的朋友们的强烈不忿。 

后来大家工作也忙,就休息了相当长一段时间(2月下旬至5月底),没有继续研究这个东西。 

2台9530在睡觉,其间kaka还丢了一台8300,不爽啊。 

5月底,kaka的战斗热情再次燃起。某日与kaka夫妇、swan博士吃完陕北菜后,kaka把9530又翻出来了,再次交给我,让我继续研究。 

其实我偷懒了好几天,直到大约6.1之后才开始折腾,这中间kaka打电话问进展,我就说没进展(本来就没进展嘛)…… 

三、             如何阅读本文 

在写这篇文章的过程中,很多朋友在问相关的问题,如果要一一解答确实很累。其实要写一篇对大家真的有所帮助的文章还真难,因为不同的朋友技术基础不同,所需要的内容也不尽相同。有的朋友只需要操作步骤和截图,有的朋友会在过程中碰到问题,需要一些分析和解释说明,还有些朋友只关心关键几个节点的原理、手段或测试思路等,甚至有朋友会关心一些扩展或更深入的话题。 

为了适应不同朋友对本文的不同要求,我把文章内容的不同针对性部分进行了标示: 

操作步骤——表示这一部分是对操作步骤的记录和指导; 

原理知识——表示这一部分是对技术原理的说明,属于知识方面的内容; 

分析说明——表示这一部分是对问题的分析、推导、测试碰壁的记录,以及思路的梳理等内容; 

重要数据——表示这一部分列出了重要的数据信息; 

特别注意——表示容易出错、容易忽视、需要特别注意的问题。 

请大家在阅读时各取所需,跳过自己不需要的部分。 

注意:请大家先通读本文,具备整体印象,并了解我的实际操作和总结方法之间的差异,同时对所有可能碰到的问题有一个概念,然后再实际去操作。 

另外,我是在大量的尝试中最终烧号成功的,过程中可能有些运气的成分,本文是我事后的整理,虽然我尽力将我的理解、我的操作描述得更加详细,但本文可能仍然不够准确或难免有所遗漏,实际情况也未必跟你的机器完全一样,通常你还会碰到一些问题,需要独立思考或与大家探讨来解决,特别是对于计算机基本知识和BB手机本身不太熟悉的朋友,你碰到的问题一定会很多,记得要坚持! 

同时,也希望大家将碰到的问题或总结的经验都记录下来,以便我们不断完善这个方法。 

四、             工作基础 

[分析说明] 

年初虽然没有搞定烧号问题,但至少知道已经尝试过的方法是不行的。经过实验并确认无法完成写号的方法和相关重要结论如下: 

1、  IMSI、的写入,在9530上不是问题,不需要专门研究,网上有很多兄弟都给出了方法,建议用工具软件写入,工具软件或手编输入IMSI,在本文就不浪费篇幅做具体详细描述(当然大家如果有疑问也可以提出); 

2、  用 Workshop 3.3.5无法直接对9530进行修改操作(该软件的各种方式均不适合9530); 

3、  用UniCDMA2005、 Universal无法直接对9530进行修改操作; 

4、  用扫描内存(找出可读内存段)、导出内存镜像文件(.bin)、搜索位置并改写的方法,在机器重启后,会自动复原。 

五、             知识准备(烧号的基本概念) 

根据网上查阅的资料和帖子,以及向各位热心朋友的请教解答,我们可以简单整理一下烧号所需要的知识点。 

这里只列出本文所需的知识点,更多详细的知识请查看网上的其他整理帖,例如lingxw 兄弟的转帖《关于智能机中手机写号问题的汇总》(转载于 www.anranpda.com ),该帖URL请参见http://bbs.maxpda.com/thread-240701-1-1.html,或请大家去翻阅原文。 

[原理知识] 

假设: 

我现在用的是中国电信189号码,三星手机(型号S259+)+UIM卡 

现在希望用BB 9530的模式,9530是双模单待手机,是支持CDMA2000的3G手机,该机型GSM模式是机卡分离(需要插入SIM卡),模式是机卡一体(需要把号码写入到手机中); 

所谓“烧号”,就是把号码写入到手机中,那么我们到底需要把哪些东西写到手机中呢? 

其实,一共需要三个信息: 

a)         IMSI:国际移动用户识别码(唯一标识),IMSI = MCC + MNC + MSIN,其中MCC是指移动台国家代码(3 位,中国460),MNC是指移动网代码(2位,中国电信03),MSIN是指移动用户识别号码(10 位),例如上海电信的189号段常见MSIN是6010******、6181******等。 

b)        ):是“电子序列号Electronic Serial Number”的缩写,是移动手机的身份识别符。为32位,即8个十六进制数字标识,例如F5XXXXXX。 

而Mobile Equipment IDentifier () 是全球唯一的56bit移动终端标识号。由于号段是有限的资源,基本上耗尽,所以制定了56位的号段,用来取代32位的号段。主要分配给制式的手机。 

的格式: 

由14个十六进制数字标识,第15位为校验位,不参与空中传输。 

RR:范围A0-FF,由官方分配 

XXXXXX:范围 000000-FFFFFF,由官方分配 

ZZZZZZ:范围 000000-FFFFFF,厂商分配给每台终端的流水号 

C/CD:-F,校验码 

例如我们手上的9530 可能是:0xA000000D****** 

c)         :Akey也叫鉴权码,16位16进制的一组数字,是存储在MS(标准名称叫做移动站,简单点理解就当它是整部手机好了)中进行鉴权和加密的密钥,是分配给MS的64bit数据,并且仅对MS和相关的归属位置寄存器/鉴权中心(HLR/AC)是可知的。 

每个手机出厂时都有一个号,MIN号是运营商分配的,用以区别用户,一个手机能够正常服务,在交换上写号时必须输入。这个号和MIN号是一一对应的,在鉴权时使用,对于机卡一体手机,需要写号时只需提供手机中的号给交换人员,他们会分配一个MIN号给你,在手机中写入即可。在用户鉴权时会用到手机中固有的号,所以对于不同的机卡一体手机,由于号不同,把获得的MIN值写入其它手机,手机可以识别网络,但无法通过鉴权,故无法通话(准确地说是在国内只能拨打10000号);对于机卡分离的手机,手机出厂时也有号,但在写号时在UIM卡中另外写入一个号,所以手机鉴权时不用手机中固有的号,而是用UIM卡中人为写入的号,这样UIM卡就可以做到放入任何一个C网手机中都可以打电话。 

一个机卡合一的手机进入网工作,最初只需要三个数据:一是码;二是IMSI码(机卡合一写在手机里面,机卡分离的 IMSI在卡里面);三是鉴权码,存储的位置和IMSI一样。 

六、             整体流程 

为了大家对整个烧号过程有更好的全局观,知道自己每一步需要做什么,特对整个过程大的步骤进行说明如下(注意本文讨论的是自己动手将UIM卡中的写入手机的方式,如果您是通过其他途径将手机中的写到电信设备上,则本文对您并无帮助): 

1、              获得自己需要写入的号码的IMSI(MIN)、/(若通过其他途径关闭则不需要); 

2、              通过手编方式,将自己UIM卡的IMSI(MIN)、HOME SID(所属地标示,上海电信是13840)等基本信息写入手机,确保可以拨打中国电信10000号客服热线; 

3、              通过软件,将写入手机; 

4、              通过本文描述方法,将自己UIM卡的写入手机并验证; 

5、              测试通话并修改手机通话的相关设置,例如国家码(+86)等等; 

6、              再次测试并验证,如未成功则返回一一检查,排除故障。 

 七、             准备工具软件和所需物品

BlackBerry Desktop Manager(即大家常说的DM,我用的是4.70 B059多国语言版,我们需要的其实是其中的设备管理器,即Device Managment)——该软件用于把手机连接到电脑(驱动、端口)

Universal Unpacked(或UniCDMA 2005)——读手机信息、扫描内存等;

QPST 2.7 build 323、QXDM 3.11.36——QUALCOMM提供的强大工具,后面详细介绍

我还有 Workshop 3.4.1正式版(kaka赞助的,多谢kaka),这个工具比较贵,不必强求,事实上,在本文的基础上,你只要用好QXDM即可,呵呵。当然,如果你能准备一下3.4.1demo版也很好,或者2.7破解版。

此外还需要Windows的计算器、UltraEdit(或其他的16进制编辑器)。

当然,还需要一根USB线(BB能用的就行,我用的是Nokia 6500c自带的USB线)。

最后,强烈建议,准备3张A4大小的白纸,准备好两支不用颜色的笔,在你操作的过程中,一定要尽量记录关键的内存地址、修改前后数值、你的疑问等等重要的内容!这一点真的很重要。

特别注意:如果你用的是Vista或Windows Server 2008,或者你安装了IE的最新版本,又使用的是QXDM 3.9.19版本,可能会碰到QXDM无法安装的问题(因为安装程序不能识别IE最新版本,所以会提示“需要IE 5以后的版本”,这个问题有解决方案,但受篇幅所限,不在本文中阐述,有困难的朋友可以联系我,等我有空也会另外写文章或工具提供给大家参考。)

[未完待续]

BlackBerry 9530 CDMA烧号成功!

星期五, 六月 5th, 2009

BlackBerry 9530 烧号成功!

不进机房改,完全手写,随后奉上方法,感谢各位朋友,感谢kaka的信任。

2009年6月5日,17:45

纪念一下!

最近几天BB 9530烧号进展(ESN/MEID/SCM部分)[2]

星期五, 六月 5th, 2009

先说一下IMSI如何写进BB 9530,超级简单。

在拨号界面,输入##000000,然后拨号,就出来手编界面,直接在IMSI那里写就行了。

接下去就是搞定了,这个过程很痛苦,我2月份研究过,以完美的失败告终。最近几天是重新研究,尝试过很多方法,有些没意义的,就不写了,有些有意义的,我会记录下来。

上篇文章忘记说了,在开始干活之前,还得记录下9530当前的

先说一下方法:

1、拨号界面按##000000,拨号,就可以得到

2、菜单,进Options,选Status,就能看到

2月份研究过的方法包括:

1、通过 Workshop 3.3.5直接写(有很多写的方式),全部失败;

2、通过 Universal扫描9530的可读内存;

然后把可读内存段导出;

接着用16进制编辑器在导出的.bin文件中搜索9530的(反序,即,如果你手上的9530的是1A2B3C4D的话,你要在文件中搜索4D3C2B1A),找到之后把地址全部记下来,并且换算成真实地址(后面详述);

用QXDM,打开Memory Viewer,找到所有的上述所在地址,把这些全部清为00000000,或者改成自己UIM卡的 F5XXXXXX;

可是面临的问题是,一旦重启,又会恢复成9530自己原先的

所以最近主要早研究这个的问题。

学到的新知识如下:

1、9530除了之外,还有个的东西(见上篇文章的介绍),并且看起来好像是控制的;

2、有一定的对应关系;

3、9530种有一个

(Station Class Mask)

If the Value is 0x2A then Phone is Based
If the Value is 0x3A then Phone is Based

因此,我放弃了原先只盯着的思路,现在开始盯着//,我决定对这3个东西同时下手。

工作基础:

2月份用 Universal扫描内存、导出内存都很正常,最近好像稍微有点问题,不知道是不是因为我换了操作系统的缘故(当时是2003,现在是2008);所以换成 Workshop 3.3.5,得到的可读内存区间段如下:

共三段(没有扫完,只扫了前面部分,因为我觉得后面的内存肯定没啥用)

第一段可读内存:
起始地址:01DF2B00
结束地址:02685300
总字节数:8988672 bytes(10进制)

第二段可读内存:
起始地址:17AEB100
结束地址:17B26700
总字节数:243200 bytes(10进制)
实际导出时在17B266E0处结束
实际字节数:243168 bytes(10进制)

第三段可读内存:
起始地址:17B28A00
结束地址:17FCCB00
总字节数:4866304 bytes(10进制)
这一段我忘记是否全部导出了反正差不太多,因为我的扫描步长是256字节,够精确了。

注意:关于扫描内存,我走过弯路,感谢maxpda的1007给我解答,请大家务必注意——新版本的ROM限制了内存扫描操作,请使用老版本ROM,否则你会发现无法进行。(我用的是9530AllLang_PBr4.7.0_rel140_PL4...125_A4.7..99)

有了这3个.bin文件,我们就可以找了;

先说,共3处:

起始地址:01DF2B00
偏移地址:0086ebdf
绝对地址:026616DF

起始地址:17B28A00
偏移地址:0011dbb8
绝对地址:17C465B8

起始地址:17B28A00
偏移地址:0029fe10
绝对地址:17DC8810

接着说比较不确定,我找到10余处,有些地址会永远都是码,有些地址却有时候会变化。不多说,列在这里:

17FCB20D(该地址有时候是,有时候是00000000;最近这次更夸张,在我修该成功的这一次,居然变成过……)

02663F1C

02663F33

17AEB8A4(有时候不是,在最后修改成功的这次,它居然变成过另外一个码)

17B0FCDC

17B1C244

17B9F0B8

17C4613C

17C46214

17C4C8A0

17C5AC2C

一共11处,有些是会变的,大家记住这一点就行了,反正我们多检查即可。

得到这些之后,开始忙活,祭出法宝QXDM:

(要打开DM,并确认自己的9530连接电脑的端口是COM几,我的是COM9)

1、打开QXDM之后,先打开两个窗口,一个Memory Viewer(F4),一个Command Output,并确认已经连接成功;

2、在QXDM主窗口的左下角,有个Command输入框,在这里输入命令,依次输入:

RequestNVItemRead

RequestNVItemRead

RequestNVItemRead

这样在Command Output窗口就可以看到返回的执行结果,如下:

RequestNVItemRead
DIAG TX item:
= ×00000000
DIAG RX item:
= 0x80XXXXXX
RequestNVItemRead
DIAG TX item:
 = ×0000000000000000
DIAG RX item:
 = 0x00A000000DXXXXXX
RequestNVItemRead
DIAG TX item:
 = ×00
DIAG RX item:
 = 0x3A

不错,工作正常。

3、先把改一下:

执行命令:

RequestNVItemWrite 0x2A

然后确认一下是否修改好了:

scm被改成0x2A

4、然后你可以试试看用上述命令改,会很顺利地失败的:)

直接尝试写MEID失败

5、因为我在直接折腾的时候,遭受过太多挫折,所以现在决定先灭掉,具体方式如下:

在QXDM的Memory Viewer中,找到如下3个地址

绝对地址:026616DF

绝对地址:17C465B8

绝对地址:17DC8810

把它们统统改成0000000000000000

然后再通过Command去Read一下,确认是否修改完成;

6、接着也别耽误了,用同样的方法找到所有的,全部改为00000000

7、用Command确认一下:

all-zero

嗯,很完美。

8、再试试看用Command去写,写自己UIM卡上的,发现居然没有报错:

write my esn

9、继续确认一下:

all ok

不错,经过反复确认,发现没什么问题,现在我们需要把机器重新启动一下。

我用的是冷启动,就是直接拔电池,然后启动,可以确认一下:

status

被改写成我自己的啦!

发现一个问题:

##000000看到的

Status里面看到的是我UIM卡上的(上文图)

所以,的问题基本上算是有了阶段性进展,至少解决了以前修改总是失败的问题。

现在剩下几个其他问题,我觉得这些问题还是很重要的,希望请大家一起出出主意:

1、##000000进入手编模式看到的为全,是否有问题?

手编界面ESN

2、目前改过的手机无法启动网络,应该如何解决?

猜想:

a)不匹配,导致无法启动网络?

b)不是0A开头,导致无法启动网络?

c)我目前没有把当作一个技术问题研究,目前也没有写入,这个会不会有影响?

……

如果有任何表达不清楚的地方,请大家指出,谢谢!

中间有个小插曲,除了×0000000000000000之外,我还试了一下RequestNVItemWrite 0x00A0000000000000,命令执行成功:

修改MEID为0A开头的编码

这个命令执行成功之后,曾经莫名其妙自己变了一个值:

ESN莫名变化

因此我推测,可能是机器自己从算出了对应的

整个测试过程,受到kaka、Jacky、1007的大力帮助,以及阅读了很多网上的各类帖子、资料,谢谢大家,不论上述测试过程对大家是否有所帮助,都希望大家多提意见,集思广益,互相帮助,谢谢!

——2009-06-06——

补充一下:
1、下午把/搞定之后,发现网络起不来,下午下班后解决了这个问题,因为时间比较紧,所以没有具体排查问题何在,我做了如下改动:
a)发现不是我期望的0000000000000000,而是00A0000000000000,于是继续用QXDM改,全部清为
b)用QXDM指令将改回×3A(为什么这么改,下次补充);
经过这样的修改,网络就好了,先给自己的移动手机打了个电话,振铃10余秒,没问题;然后给kaka打了个电话,聊了3分钟,很正常。
接着用移动手机给9530发了2条短信,一条中文,一条英文,中文显示不正常(编码问题),英文正常;短信回复正常(英文)。
注:我没有研究这两个修改是否都是必要的!只是时间比较紧,我凭感觉就这样去做了,后面有时间再研究。

2、晚上发现了几个新问题:
a)用9530拨号变得不太顺利,总是听到振铃几秒钟就断,很少有几个电话能振铃正常的,具体原因暂时不详,怀疑是网络问题,因为下午打电话正常,且以前 用三星的手机拨号也是经常需要拨很多次才可以——不同之处在于,三星手机拨号不会听到接通的声音,直接断掉;而9530是能听到一声“嘟——”, 然后慢慢断掉,大约持续5-10秒;如果拨10000号,则是听到“尊贵的我的e家用户……”,然后没声音了,计时还在继续,至少能到二三十秒;
b)通讯录中存的手机用户联系人,呼叫时会提示“您没有开通国际长途功能”;给这些联系人发短信也会失败;但回复短信、或直接手输接收者手机号码发送短信,都正常;这个我修改了拨号的设置:
拨号界面的菜单中,选择“Options”-“Smart Dialing”
里面有个Country Code,原来是+1,我改成+86
还有个National Number Lenth,本来是11,我改成13
还有个Use “1” for National Dialing,原来是Yes,我改成No
就一切正常了。

今天是高考第一天,祝每一位高考的学子都考出自己最好的成绩!


补充二

刚才和春天兄共同梳理了关键步骤,简单来说,我做了这几个步骤: 1、把改成0x2A(不确定是否必须);——QXDM,命令直接改 2、用QXDM Memory Viewer改内存中的,共3处,全部改为; 3、用QXDM Memory Viewer改内存中的,共10处左右(不一定每个都是必须,但为了保险,我全部改了);全部改为;这个时候应该出现2个现象: 1、可以用命令修改了; 2、可以用命令修改为0x00A0************了第二个我仅仅是为了测试,不是必须的,而且我觉得可能会带来麻烦;接下来应该把修改为自己UIM卡的,同时确保为全 接下来可以把改为0x3A,然后冷启动应该就好了。实际上,我的做法绕了点弯路,跟上述总结并非完全一致;具体来说是这样的: 1、我弄好之后,冷启动的时候,很可能是0x00A0000000000000,而不是全,这一点当时我没有注意; 2、我冷启动的时候,是0x2A;我觉得网络起不来,跟这两个因素多少有些关系。(我没有验证到底是其中一个因素还是两个因素共同作用)我是在网络无法启动的时候,重新检查了,发现不是全,于是重新修改了,用的是Memory Viewer直接改,而不是命令;然后我怕还不行,所以把又改成0x3A了,因为隐约记得如果是0x2A反而不行,而且反正已经是了,无所谓值是什么;重新弄好之后,热重启,网络就好了,就能打电话收发英文短信了另外,我的ROM是.99版本关于到底应该是什么,我不确定,唯一能确定的是,现在我是0x3A,工作正常,所以建议大家就这样做,有问题再换一换。(大家注意,我是先把 改成0x2A,然后写/,然后又把它改成了0x3A,实际上是否一定要按该顺序操作,没有验证,大家可以尽情地试试看)不过其实还有个细节,这个,在 workshop中读出来的数据,有两个:一个在这个位置,主界面左边一个在右边的NAM页这两个会出现不一样的情况(我发现它们会不一致) 3.3.5版本。我没有参考这个软件,直接在QXDM中折腾的,我觉得干脆以QXDM为准比较好,QXDM read出来是啥就当它是啥。