ハイス系セットトップボックスSTBのHacker記録


説明
多くのトップボックスは海思のSoC案を使用しています.これらのボックスは一般的にAndroid 4.4、または5.0のシステムを使用しています.root権限がありません.servicemanagerを変更するなど、変更する必要があるかどうかは、簡単なrootを使用してcp命令で置き換えられません.servicemanagerはずっと稼働しているので、killが落ちても自動的に再起動します.したがって、通常モードで上書きすることはできない.
recoveryモードに入ることができれば、解決することもできます.もっと簡単な方法は、システムパーティションddを直接出て、変更してddを返すことができます.
コンソールの取得
セットトップボックスに4ライン/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/mmcblk0p5
lrwxrwxrwx root     root              1970-01-01 08:00 bootargs -> /dev/block/mmcblk0p2
lrwxrwxrwx root     root              1970-01-01 08:00 cache -> /dev/block/mmcblk0p19
lrwxrwxrwx root     root              1970-01-01 08:00 deviceinfo -> /dev/block/mmcblk0p4
lrwxrwxrwx root     root              1970-01-01 08:00 fastboot -> /dev/block/mmcblk0p1
lrwxrwxrwx root     root              1970-01-01 08:00 fastplay -> /dev/block/mmcblk0p9
lrwxrwxrwx root     root              1970-01-01 08:00 fastplaybak -> /dev/block/mmcblk0p10
lrwxrwxrwx root     root              1970-01-01 08:00 hibdrv -> /dev/block/mmcblk0p14
lrwxrwxrwx root     root              1970-01-01 08:00 kernel -> /dev/block/mmcblk0p11
lrwxrwxrwx root     root              1970-01-01 08:00 logo -> /dev/block/mmcblk0p7
lrwxrwxrwx root     root              1970-01-01 08:00 logobak -> /dev/block/mmcblk0p8
lrwxrwxrwx root     root              1970-01-01 08:00 misc -> /dev/block/mmcblk0p12
lrwxrwxrwx root     root              1970-01-01 08:00 pqparam -> /dev/block/mmcblk0p6
lrwxrwxrwx root     root              1970-01-01 08:00 private -> /dev/block/mmcblk0p21
lrwxrwxrwx root     root              1970-01-01 08:00 qbdata -> /dev/block/mmcblk0p16
lrwxrwxrwx root     root              1970-01-01 08:00 qbflag -> /dev/block/mmcblk0p15
lrwxrwxrwx root     root              1970-01-01 08:00 recovery -> /dev/block/mmcblk0p3
lrwxrwxrwx root     root              1970-01-01 08:00 sdcard -> /dev/block/mmcblk0p22
lrwxrwxrwx root     root              1970-01-01 08:00 system -> /dev/block/mmcblk0p17
lrwxrwxrwx root     root              1970-01-01 08:00 unuse -> /dev/block/mmcblk0p20
lrwxrwxrwx root     root              1970-01-01 08:00 userapi -> /dev/block/mmcblk0p13
lrwxrwxrwx 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)

これは私たちがよく知っているext 4で、私たちは完全に直接mountして、それから変更することができます.
変更が完了すると、HiToolsを使用してこのパーティションを再書き込みできます.しかし、HiToolsのHiBurningツールはWindows上で実行する必要があります.そのため、簡単に変更したsystem.img pushをボード上に、直接ddをsystemパーティションに入れることもできます.
その他の情報
海思のボード/トップボックスが起動すると、fastbootの起動、ubootの起動、kernelの起動など、起動プロセスのロゴが印刷されます.
この間に使用するstorageのタイプが提示されます
Fastboot 3.3.0 (arvin@haisi) (Jun 20 2016 - 08:34:09)

Fastboot:      Version 3.3.0
Build Date:    Jun 20 2016, 08:35:15
CPU:           Hi3796Mv100 
Boot Media:    eMMC
DDR Size:      1GB

SDKのバージョンは、次のようになります.
SDK Version: HiSTBAndroidV600R001C00SPC063_v2016022921
SDKのバージョンによると、私たちは自分でいくつかのものをコンパイルすることができます.
しかし、UBOOTのAutobootのkey interruptが無効になったり、単純ではないd、ctrl+c、spaceなどのボタンに変更されたりして、ubootをdumpしてdisassembleに来ないとubootのコマンドラインに入ることができません.
6311 get key in uboot directly 
get key 0 2