海思系类机顶盒STB的Hacker记录

来源:互联网 发布:java hide 的作用 编辑:程序博客网 时间:2024/04/27 09:25

说明

有许多的机顶盒都是使用海思的SoC方案, 这些盒子一般都是用Android 4.4,或者5.0的系统. 然后都没有root权限. 有的是否我们需要做些更改, 例如修改servicemanager,那么就无法简单的root然后使用cp命令替换完成了, 因为servicemanager一直在运行, 就算kill掉也会自动重启, 因此无法在正常模式覆盖.


如果可以进入到recovery模式,那么也可以解决. 更为简单的方式是可以直接将system分区dd出来,然后更改后dd回去.


获取console

如果机顶盒有四线/3线的TTL串口,那么第一步就是连接串口, 获取Root权限.


查看分区

然后查看mmc/emmc的layout:

root@Hi3796MV100:/ # ls -l //dev/block/platform/hi_mci.1/by-name/              lrwxrwxrwx root     root              1970-01-01 08:00 baseparam -> /dev/block/mmcblk0p5lrwxrwxrwx root     root              1970-01-01 08:00 bootargs -> /dev/block/mmcblk0p2lrwxrwxrwx root     root              1970-01-01 08:00 cache -> /dev/block/mmcblk0p19lrwxrwxrwx root     root              1970-01-01 08:00 deviceinfo -> /dev/block/mmcblk0p4lrwxrwxrwx root     root              1970-01-01 08:00 fastboot -> /dev/block/mmcblk0p1lrwxrwxrwx root     root              1970-01-01 08:00 fastplay -> /dev/block/mmcblk0p9lrwxrwxrwx root     root              1970-01-01 08:00 fastplaybak -> /dev/block/mmcblk0p10lrwxrwxrwx root     root              1970-01-01 08:00 hibdrv -> /dev/block/mmcblk0p14lrwxrwxrwx root     root              1970-01-01 08:00 kernel -> /dev/block/mmcblk0p11lrwxrwxrwx root     root              1970-01-01 08:00 logo -> /dev/block/mmcblk0p7lrwxrwxrwx root     root              1970-01-01 08:00 logobak -> /dev/block/mmcblk0p8lrwxrwxrwx root     root              1970-01-01 08:00 misc -> /dev/block/mmcblk0p12lrwxrwxrwx root     root              1970-01-01 08:00 pqparam -> /dev/block/mmcblk0p6lrwxrwxrwx root     root              1970-01-01 08:00 private -> /dev/block/mmcblk0p21lrwxrwxrwx root     root              1970-01-01 08:00 qbdata -> /dev/block/mmcblk0p16lrwxrwxrwx root     root              1970-01-01 08:00 qbflag -> /dev/block/mmcblk0p15lrwxrwxrwx root     root              1970-01-01 08:00 recovery -> /dev/block/mmcblk0p3lrwxrwxrwx root     root              1970-01-01 08:00 sdcard -> /dev/block/mmcblk0p22lrwxrwxrwx root     root              1970-01-01 08:00 system -> /dev/block/mmcblk0p17lrwxrwxrwx root     root              1970-01-01 08:00 unuse -> /dev/block/mmcblk0p20lrwxrwxrwx root     root              1970-01-01 08:00 userapi -> /dev/block/mmcblk0p13lrwxrwxrwx root     root              1970-01-01 08:00 userdata -> /dev/block/mmcblk0p18

在操作之前,我们最好备份一下, 直接将各个重要分区dd出来即可.例如对于system:

dd if=/dev/block/mmcblk0p17 of=/mnt/sda/sda1/system.img

启动adbd

dd出来后, 我们启动adbd:

start adbd

接上网线, 然后使用netstat -apn来adbd查看使用的端口号, 一般都是5555, 然后在电脑上面使用adb connect连接, 即可使用adb. 那么也可以使用adb install来安装应用.

然后push上来:

adb pull /mnt/sda/sda1/system.img .

然后可以看看它的类型(在console中使用mount也可以看到类型):

$ file system.img system.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (needs journal recovery) (extents) (large files)

这个是我们熟悉的ext4, 我们完全可以直接mount起来,然后更改.

更改完成后, 我们可以使用HiTools将这个分区重新烧写进去. 但是HiTools的HiBurning工具需要在Windows上面运行, 因此我们也可以简单的将修改后的system.img push到板子上面, 然后直接dd进system分区即可.


其他信息

海思的板子/机顶盒启动后, 一般都会打印启动流程的log, 包括: fastboot的启动, uboot启动, kernel启动.

这之间会提示使用的storage的类型

Fastboot 3.3.0 (arvin@haisi) (Jun 20 2016 - 08:34:09)Fastboot:      Version 3.3.0Build Date:    Jun 20 2016, 08:35:15CPU:           Hi3796Mv100 Boot Media:    eMMCDDR Size:      1GB


SDK的版本好, 例如:

SDK Version: HiSTBAndroidV600R001C00SPC063_v2016022921

根据SDK的版本, 我们可以自己编译一些东西欧放进去.


但是有些UBOOT的Autoboot的key interrupt被禁用了, 或者是被换成了非简单的d, ctrl+c, space等按键了, 如果不dump出uboot来disassemble的话, 难以进入到uboot的命令行:

6311 get key in uboot directly get key 0 2




0 0