SH-12C之全开五 导出AMSS/Radio for ttheaven---不完美完成,导出全区数据

nemogz

普通会员
2007-08-21
259
0
0
[i=s] 本帖最后由 nemogz 于 2012-10-29 12:01 编辑 [/i]

路人看看也罢,千万别用。
adb pull /proc/config.gz
浏览附件config.gz
浏览附件boot-backup-2012-09-21.rar
浏览附件ipl-backup-2012-09-21.rar
浏览附件recovery-backup-2012-09-21.rar
浏览附件ramdisk1.rar
浏览附件ramdisk2.rar


结果:
http://pan.baidu.com/share/link?shareid=100045&uk=354977061

http://pan.baidu.com/share/link?shareid=100046&uk=354977061


想学习、参考的看这里,后续看帖:


代码:
Discuz! X 短消息记录(此消息记录不支持重新导入)

================================================================
消息对象: ttheaven
================================================================

ttheaven 2012-10-15 13:05
你有sh-12c/02d的AMSS部分吗,有的话共享个,我没机器。

nemogz 2012-10-15 15:46
呵呵,还没学如何玩基带,不如你开个帖教教大家,我也顺便学学,回报是帮你提取AMSS。

ttheaven 2012-10-16 11:40
dump a partition only, 至于么。。。

ttheaven 2012-10-16 11:42
AMSS也就一ELF,l4的RTOS,我也在想怎么找到我要找的部分,比较大啊

nemogz 2012-10-16 12:09
你不教也罢,自己来;你教的话,省很多时间,底层开发的资料难找;做了管理层后,技术功能退化了。

唉,有得必有失。

ttheaven 2012-10-16 16:17
你可以先去找高通的oncrpc的资料。

ttheaven 2012-10-16 16:21
我暂时也就跟到这里了,我有部分的头文件,所以读起来相对容易些。

nemogz 2012-10-17 10:29
分区表中没有AMSS,你是如何提取的?

另SH-01D是TI家芯片,SH-12C是高通芯片。

/dev/mtd/mtd0 > boot 

/dev/mtd/mtd1 > persist

/dev/mtd/mtd2 > misc

/dev/mtd/mtd3 > recovery 

/dev/mtd/mtd4 > ipl 

/dev/mtd/mtd5 > system

/dev/mtd/mtd6 > cache 

/dev/mtd/mtd7 > log

/dev/mtd/mtd8 > battlog 

/dev/mtd/mtd9 > calllog 

/dev/mtd/mtd10 > ldb

/dev/mtd/mtd11 > userdata

ttheaven 2012-10-17 14:18
所以我好奇啊,比如某些BOX

省略控制流程的这个函数内容大概是这样

bool sh_simcontrol_cmd_req_pass_check(char *input_str) {

int input_len = strlen(input_str); // sp + 32

rpc_reply_header reply;

oncrpc_init();

oncrpc_task_start();

func();

xdr_s_type *p = rpc_clnt_lookup2(0x500000a0, 0x00010001, ONCRPC_INFINITY);

oncrpcxdr_mem_free(p);

p->ops->xdr_errchk(p, 1);

memset(lvar01, 0, 0x1c);

oncrpc_xdr_call_msg_start(p, 0x500000a0, 0x00010001, 4);

p->ops->send_uint32(p, &input_len);

p->ops->send_bytes(p, input_str);

int ret = p->ops->msg_send(p, &reply);

if (!ret) {

// LOG

return false;

}

if (reply.stat != RPC_MSG_ACCEPTED) {

// LOG

return false;

}

。。。,故下一部要去AMSS找id是0x500000a0这个program了

ttheaven 2012-10-17 14:24
夏普TI家的验证就在/system/bin/CB400SF

高通家的就是上面的东西

nemogz 2012-10-17 14:42
查了一堆资料,貌似无人能从手机中直接提取radio、amss。

你是如何做到?

nemogz 2012-10-17 14:44
那个CB400SF不会是你说的amss吧,sh-12c没有。

ttheaven 2012-10-17 14:51
显然不是啊

有思路,没实践

1. 找JS让他们用JTAG

2. 写内核模块patch MTD table,随便找个已有的改掉偏移和大小,不过如果还有别的读保护的话真不好搞,还不如1方便

ttheaven 2012-10-17 14:53
暴力搜索/dev/kmem应该也可以的,mtd表的定义去sharp发布的内核源码里面能找到,但不保证靠谱,HTC的手机可以用内核启动参数覆盖内核里的hard code。

nemogz 2012-10-17 15:04
原来如此。

你打算用JTAG,要开壳吧?TI的JTAG估计还好办,高通的JTAG可以么?

垃圾高通,JTAG电路图、CPU datasheet搞得像国家机密一样,花了我那么多时间找资料,结果凤毛麟角不着边际。

况且JTAG级加密不难做,生产前写好ROM,直接把CPU的JTAG线熔断即可,鬼子可鬼了。

ttheaven 2012-10-17 15:13
howard上看到那么多dump就是不在公共空间里面没法下载你觉得他们怎么做的

ttheaven 2012-10-17 16:03
你有稍微新点的机器么,eMMC的,这些root了之后应该能直接dump。

nemogz 2012-10-17 17:05
only SH-12C,太久不玩技术,只是近来无聊玩玩而已,不过SH-12C玩得像这样的还不多见。

ttheaven 2012-10-17 20:34
hello, 原来12c已经可以自己刷自己编译的内核的,事情好办了

去下载你机器对应的kernel,adb pull /proc/config .,我去略改下12c的分区表定义重新做个boot.img你刷回去

amss就能dump_image出来了

ttheaven 2012-10-17 20:36
http://worldtsunami.blog136.fc2.com/blog-entry-23.html

nemogz 2012-10-17 20:36
都full root了,还有什么不能干?只是学android时日短,太多未知而已。

nemogz 2012-10-17 20:42
网址要爬墙?

nemogz 2012-10-17 20:45
adb pull /proc/config.gz就有

http://bbs.blueshow.net/thread-1780266-1-1.html

nemogz 2012-10-17 20:46
你说的kernel 是源码 or other?

ttheaven 2012-10-17 20:52
sharp自己官网有kernel源码啊

自己改分区定义重新编译,让AMSS可以被访问到

ttheaven 2012-10-17 20:53
你系统什么版本?我去找对应的源代码,免得下错。

ttheaven 2012-10-17 20:53
用dump_image抓出你的boot吧

nemogz 2012-10-17 20:58
01.01.02 之前看过,好像没得下。

还有一只自己升了01.01.03返修未到。

boot.img ipl.img recovery.img 都有,用adb 的dd 命令pull出来,不知和你说的dump_image抓出来有区别否?

nemogz 2012-10-17 20:59
adb pull /proc/config.gz就有

http://bbs.blueshow.net/thread-1780266-1-1.html

.

ttheaven 2012-10-17 21:03
区别是一个有oob一个没有

ttheaven 2012-10-17 21:07
你先在能用的到底是哪个版本,我去下载对应kernel,然后改分区表定义重编译打包,让你能dump出radio。

nemogz 2012-10-17 21:08
01.01.02

nemogz 2012-10-17 21:10
早已看过为单缺版本

https://sh-dev.sharp.co.jp/android/modules/oss/index.php?/sh12c

ttheaven 2012-10-17 21:21
SH-12C (Build number 01.01.01~) オープンソースソフトウェア

这个啊

nemogz 2012-10-17 21:23
嗯,你是对的,打包过来吧,你熟,看半天还没消化。

ttheaven 2012-10-17 21:25
sh-01d注册机源代码包密码我放出去了,有爱自取。

ttheaven 2012-10-17 21:25
你的先给我你的boot.img。

ttheaven 2012-10-17 21:26
你recovery能用吧,先确认能进recovery看到boot分区并且能flash_image进boot,免得刷挂了。

nemogz 2012-10-17 21:35
原装的recovery,未修改,没有恢复菜单,需要先换掉recovery?

ttheaven 2012-10-17 21:37
保证你recovery能用flash_image修复boot,至少adb reboot recovery之后,你能adb shell,而且还要是root。

nemogz 2012-10-17 21:44
sh-01d的recovery,你是如何改的?

nemogz 2012-10-17 21:45
boot.img已传

http://bbs.blueshow.net/thread-1780266-1-1.html

ttheaven 2012-10-17 21:45
sh-01d没必要啊

nemogz 2012-10-17 22:28
recovery.img已传

问题有二:

1、未知如何热键开机进入recovery,普通的 音量+HOME+电源 三键无效

2、adb shell recovery 进入后直接机器人感叹号,无刷机菜单。



未自定制过recovery,请指导。

ttheaven 2012-10-17 22:57
adb shell recovery执行的就是recovery这个程序,自带的那个对我来说没有没必要深究。

adb reboot recovery行不行?可以的话,就改recovery.img,让adbd自启动(修改init.rc),修改build(名字我忘了).prop,改secure=0,然后重打包用flash_image刷进去。之后验证这个recovery可用,如验证通过,我去编译内核,再重打包recovery替换内核刷进去,然后可提取到AMSS了。

nemogz 2012-10-17 23:29
打错,是adb reboot recovery。

不如改recovery.img来提取AMSS,断电后会先启动到boot,这样就基本不会砖。

ttheaven 2012-10-18 08:57
ok,我去看看这个recovery怎么拆开。

nemogz 2012-10-18 09:31
http://www45.atwiki.jp/aquosphonesh12c/pages/28.html

http://www45.atwiki.jp/aquosphonesh12c/pages/29.html

由于时间原因,之前已拆开的boot和recovery:

http://bbs.blueshow.net/thread-1780266-1-1.html

ttheaven 2012-10-18 11:32
行,那我直接给你kernel你打包回去,记得开adbd服务和root,留个邮箱。

ttheaven 2012-10-18 11:34
另外给下/proc/mtd的内容,我需要知道一些offset和size去猜测,或者我加一个分区指向整个nand,但我需要大小信息。

ttheaven 2012-10-18 12:01
hello,在吗,给你zImage你换掉recovery里面的,准备放到你的上传帖去

完了之后会多出两个mtd分区,名字是PART1和PART2,对应ROM的前半和后半

麻烦你找出对应的设备号直接cat /dev/block/mtdblockN > /sdcard/aaa备份出来啦

ttheaven 2012-10-18 13:07
hello,又神隐了?

nemogz 2012-10-18 17:45
你给个recovery.img,我直刷flash_image recovery /mnt/sdcard/mtdbackup/recovery.img比较好,



刚刚搞掂Boot,冷开机可以热键启动到ADB+ROOT+SU。



cat /proc/mtd

dev: size erasesize name

mtd0: 00b00000 00020000 "boot"

mtd1: 00300000 00020000 "persist"

mtd2: 00100000 00020000 "misc"

mtd3: 00b00000 00020000 "recovery"

mtd4: 00f00000 00020000 "ipl"

mtd5: 26200000 00020000 "system"

mtd6: 06e00000 00020000 "cache"

mtd7: 00300000 00020000 "log"

mtd8: 00600000 00020000 "battlog"

mtd9: 00300000 00020000 "calllog"

mtd10: 01e00000 00020000 "ldb"

mtd11: 47da0000 00020000 "userdata"

ttheaven 2012-10-18 18:08
ok,正在传。

nemogz 2012-10-18 20:51
不行,刷完新recovery,用adb reboot recovery,无法连接到adb,大约3分钟后自动复位至boot启动。

换回旧recovery,用adb reboot recovery,直接机器人+感叹号,正常。

幸亏没去改、刷boot.img,否则极可能砖掉。



留意我早上给你的ramdisk2.zip中recovery的分离ramdisk文件夹/sbin/中缺adbd执行文件,init.rc文件中的adbd部分被屏蔽,当然default.prop也要改。



你给的新recovery.img尺寸较小,未仔细比较,如知原因,告知。

ttheaven 2012-10-18 21:30
尺寸不是问题,后面填充的部分省略了而已。

用的是别人给我的002版提取的boot,你的是什么版本?还是说我直接用你的贴出的boot改就行了?

ttheaven 2012-10-18 21:31
这个至少证明了内核大约是能启动的。

nemogz 2012-10-18 21:52
不能证明启动,无显示,无连接。

ttheaven 2012-10-18 21:57
你的boot给我一份,还是说我直接下载你发的。

boot这么大的原因是因为似乎是为了加快启动速度sharp用的不是zImage直接是未压缩的,用哪个都行。

一会重新上传kernel,你看是自己打包还是我来。

nemogz 2012-10-18 22:03
之前给你的boot,打包过来,直接刷入recovery区试试。

不可随便刷入boot区,SH-12C无bootloader,有问题就直接砖掉。

ttheaven 2012-10-26 17:52
hello, 这次给你内核模块看看

insmod mtd-hack.ko

成功的话,mtd分区会多出两个

nemogz 2012-10-26 19:03
# insmod /data/local/bin/mtd-hack.ko

insmod /data/local/bin/mtd-hack.ko

# cat /proc/mtd

cat /proc/mtd

dev: size erasesize name

mtd0: 00b00000 00020000 "boot"

mtd1: 00300000 00020000 "persist"

mtd2: 00100000 00020000 "misc"

mtd3: 00b00000 00020000 "recovery"

mtd4: 00f00000 00020000 "ipl"

mtd5: 26200000 00020000 "system"

mtd6: 06e00000 00020000 "cache"

mtd7: 00300000 00020000 "log"

mtd8: 00600000 00020000 "battlog"

mtd9: 00300000 00020000 "calllog"

mtd10: 01e00000 00020000 "ldb"

mtd11: 47da0000 00020000 "userdata"

mtd12: 40000000 00020000 "fullnand0"

mtd13: 40000000 00020000 "fullnand1"





dump_image_oob?

ttheaven 2012-10-26 19:59
oob就不用了,直接dump吧,fullnand0/1,每个1GB。

nemogz 2012-10-26 21:12
dump_image 出错mtd: ECC errors (0 soft, 60 hard) at 0x00000000...........

只能dd 或 cat 出来

nemogz 2012-10-26 21:32
不对头,dd 出来的数据,两个分区一样

ttheaven 2012-10-26 23:01
后面我补了个附件,看你帖子。

你觉得radio在前面1G还是后面1G呢。。。

nemogz 2012-10-27 00:27
网站的提醒功能有问题,没看到。

这次可能对了,上半区数据较多,所有mtd都共享了,龟速上传,共16个文件

http://pan.baidu.com/share/link?shareid=98475&uk=354977061

ttheaven 2012-10-27 13:18
お疲れ様。
 

nemogz

普通会员
2007-08-21
259
0
0
[i=s] 本帖最后由 nemogz 于 2012-10-18 23:26 编辑 [/i]

ttheaven 发表于 2012-10-18 22:41
用你的boot-backup做的,只换掉了内核。
boot_final.img.zip无法启动

经过再次测试和耐性等待(比一般的开机时间长),fake_recovery.img.zip 可进入系统但分区表如下,好像没改到或是进入了某种自带恢复模式。

C:\Apkdb\adb>adb shell cat /proc/partitions
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
major minor #blocks name

31 0 11264 mtdblock0
31 1 3072 mtdblock1
31 2 1024 mtdblock2
31 3 11264 mtdblock3
31 4 15360 mtdblock4
31 5 624640 mtdblock5
31 6 112640 mtdblock6
31 7 3072 mtdblock7
31 8 6144 mtdblock8
31 9 3072 mtdblock9
31 10 30720 mtdblock10
31 11 1177216 mtdblock11
253 0 33554432 stheno

C:\Apkdb\adb>adb shell cat /proc/mtd
dev: size erasesize name
mtd0: 00b00000 00020000 "boot"
mtd1: 00300000 00020000 "persist"
mtd2: 00100000 00020000 "misc"
mtd3: 00b00000 00020000 "recovery"
mtd4: 00f00000 00020000 "ipl"
mtd5: 26200000 00020000 "system"
mtd6: 06e00000 00020000 "cache"
mtd7: 00300000 00020000 "log"
mtd8: 00600000 00020000 "battlog"
mtd9: 00300000 00020000 "calllog"
mtd10: 01e00000 00020000 "ldb"
mtd11: 47da0000 00020000 "userdata"
 

ttheaven

普通会员
2012-02-16
64
0
0
[i=s] 本帖最后由 ttheaven 于 2012-10-19 10:04 编辑 [/i]

fake里面的kernel我改的有点问题
需要换成final里面的
你要是自己编译内核的话,先打这个补丁,编译器用ndk-r5的那个4.4的arm-eabi,用新的不行。
浏览附件show_whole_nand.diff.zip
 

nemogz

普通会员
2007-08-21
259
0
0
ttheaven 发表于 2012-10-19 09:52
fake里面的kernel我改的有点问题
需要换成final里面的
你要是自己编译内核的话,先打这个补丁,编译器用n ...
工作电脑还没相关环境,正在装vmware+ubuntu,学打包
 

nemogz

普通会员
2007-08-21
259
0
0
[i=s] 本帖最后由 nemogz 于 2012-10-19 10:42 编辑 [/i]

ttheaven 发表于 2012-10-19 09:52
fake里面的kernel我改的有点问题
需要换成final里面的
你要是自己编译内核的话,先打这个补丁,编译器用n ...
天才,你还是搞一个img给我直刷,去摸熟编译内核估计要一星期。

另:
原始的boot.img刷入Recovery区,adb reboot recovery,可以正常进系统。
原始的recovery.img刷入Recovery区,adb reboot recovery,机器人+感叹号,正常。
改boot.img,只要正确,应该可以进入系统dump出全分区。

你给我的fake_recovery.img和boot_final.img的ramdisk部分和原始boot.img的基本相同,在fake_recovery.img上继续改比较合适。
 

nemogz

普通会员
2007-08-21
259
0
0
[i=s] 本帖最后由 nemogz 于 2012-10-19 11:52 编辑 [/i]

ttheaven 发表于 2012-10-19 11:41
不科学。。。
第一个fake_recovery.img启动慢的原因找到,init.qcom.rc加了service autoexec /data/local/autoexec.sh oneshot.,找不到文件等超时。

第二个无法启动,等了5分钟。

咳,你是怎么改的,把人家的rootROM混到一起。

郁闷,帮人打工滋味不好受。

你要sh-12c的amss/radio来做什么,搞了这么久,连出发点都不清楚。
 

ttheaven

普通会员
2012-02-16
64
0
0
sh-12c的(有缺陷的)机制是
1.
input password <----> oncrpc <----> radio do check password
2. 如果1返回正确
tell radio to unlock <----> oncrpc <----> radio do unlock
你就是root之后把1给爆破了

而我是需要在radio里找到do check password的方法,明白了?
 

nemogz

普通会员
2007-08-21
259
0
0
ttheaven 发表于 2012-10-19 13:49
sh-12c的(有缺陷的)机制是
1.
input password oncrpc radio do check password
img改好了么?