Categories: AndroidLinux

Como fazer backup (ROM dump) do sistema Android do celular Wei Dream (Y803 com SoC M

Achei num site russo especializado em telefones chineses um programa para fazer backup dos arquivos do sistema Android de celulares baseados no chip MT6516. É um aplicativo para rodar scripts shell do Linux, mais um script shell que automatiza todo o processo de cópia. Extraí as pastas deste ZIP e copiei-a para o cartão SD. Pelo gerenciador de arquivos do celular, entrei na pasta do programa e executei-o para instalá-lo. A seguir, adicionei o script ao programa. O script é este:

# CreateDir
mkdir /sdcard/backup_

# ddImage
dd if=/proc/mtd of=/sdcard/backup_/firmware.info
dd if=/dev/mtd/mtd0 of=/sdcard/backup_/preloader.img
dd if=/dev/mtd/mtd1 of=/sdcard/backup_/nvram.img
dd if=/dev/mtd/mtd2 of=/sdcard/backup_/seccnfg.img
dd if=/dev/mtd/mtd3 of=/sdcard/backup_/uboot.img
dd if=/dev/mtd/mtd4 of=/sdcard/backup_/boot.img
dd if=/dev/mtd/mtd5 of=/sdcard/backup_/recovery.img
dd if=/dev/mtd/mtd6 of=/sdcard/backup_/secstatic.img
dd if=/dev/mtd/mtd7 of=/sdcard/backup_/misc.img
dd if=/dev/mtd/mtd10 of=/sdcard/backup_/logo.img
dd if=/dev/mtd/mtd11 of=/sdcard/backup_/expdb.img

mount -o remount,rw -t yaffs2 /dev/block/mtdblock8 /system

cat /sdcard/Install/BackUp/yaffs_back_2.2/gen/mkyaffs2image > /system/bin/mkyaffs2image
chmod 4777 /system/bin/mkyaffs2image

/system/bin/mkyaffs2image /system /sdcard/backup_/system.img
/system/bin/mkyaffs2image /cache /sdcard/backup_/cache.img
/system/bin/mkyaffs2image /data /sdcard/backup_/data.img

Modifiquei um pouco este script para gerar arquivos com nomes adequados ao celular Wei Dream (preloader_bird16_a10y.bin, uboot_bird16_a10y.bin) e para dar mensagens mais descritivas do que está acontecendo. Executei este script (dando as permissões de root) e, depois de vários minutos trabalhando, aparece a mensagem “Tudo feito”, conforme indica a imagem abaixo.

Estes comandos todos poderiam ser emitidos em um terminal, um a um, mas num script é mais prático. “dd” é o programa padrão do projeto GNU para cópia de arquivos, convertendo o que for necessário conforme o arquivo de entrada e arquivo de saída. “if” é o “input file”, “of” é o “output file”. No caso, os input files são partições inteiras do Android, que são copiados para um arquivo de backup byte por byte. Isto se chama dump de memória ROM (despejo). Fácil, não? Linux rox!

O comando “dd” faz uma cópia bruta dos dados da memória flash. Depois de gerados estes arquivos, copiei-os para o PC e usei o MTK ROM Studio para eliminar dados desnecessários e deixar as ROMs no formato certo para ser reflashado de volta ao Wei Dream. Este programa também gera o arquivo scatter, usado para indicar as posições de memória em que os arquivos serão gravados. O MTK ROM Studio foi criado pelo russo linerty, talvez o maior hacker de MT6516 do mundo.

O interessante destas informações é que o script acaba informando sobre a estrutura das ROM e de arquivos do sistema. Segundo linerty, a estrutura das ROM de sistema é a seguinte, em tradução livre do russo:

  1. preloader (0,25 MB.) – Pré-carregador. Fornece ao telefone comunicação com o FlashTool em “modo USB”, e fornece a unidade de partida. Presumivelmente carrega uboot na memória e passa o controle a este módulo. Deve ser carregado com o cabo USB-serial TTL. As ROMs restantes, listadas a seguir, são gravadas pelo cabo USB normal.
  2. nvram (3,0 MB) – Mantém as células de calibração, IMEI, endereços MAC, endereços de BlueTooth e Wi-Fi e muito mais. O ponto de montagem é /data/nvram.
  3. seccnfg (0125 MB) – Coisa desconhecida, geralmente contém apenas vazio “FF FF …”.
  4. uboot (0,375 MB) – Drivers bootloader e para a inicialização do equipamento principal (monitor, CPU, GPIO).
  5. boot (6,0 MB) – o kernel e drivers de sistema operacional (câmeras, sensores). O ponto de montagem é o diretório raíz /.
  6. recover (6,0 MB) – mini-sistema (o sistema no kernel). Sua função é unicamente fazer o backup/restore de aplicativos do sistema, ou seja, restaurar as configurações de fábrica. A recuperação funcional estendida, naturalmente, é muito mais rica.
  7. secstatic (1,156 MB) – sec_ro, Pouco conhecido. Provavelmente ligado à informações de segurança. O ponto de montagem é /system/secro. O sistema de arquivos é YAFFS2.
  8. misc (0,375 MB) – Conteúdo desconhecido. Geralmente contém apenas vazio “FF FF …”.
  9. logo (3,0 MB) – A primeira imagem que aparece quando o celular é ligado [acho que a segunda imagem].
  10. expdb (0,65 MB.) – Conteúdo desconhecido. Geralmente contém apenas vazio “FF FF …”.
  11. system (~ 160-210 MB) – A partição de sistema Android. É tudo o que se relaciona com a operação do dispositivo. Contém uma série de funções suportadas pelo sistema operacional Linux. Tudo o que se mudar neste aquivo não está sujeito a restauração da reposição de fábrica. Ponto de montagem /system. Sistema de arquivo YAFFS2.
  12. cache (62,0 MB) – partição para a localização dos arquivos temporários. Normalmente usado por aplicações (“Mercado”, “Gerenciador de ROM” …). Completamente apagada quando se faz uma reposição de fábrica. Ponto de montagem é /cache. Sistema de arquivos YAFFS2.
  13. userdata (~ 220-290 MB) – dados do usuário. Esta seção guarda dados de softwares instalados como calendários, perfis, configurações de programas e sistemas diferentes. Com a perda de conteúdo da seção, geralmente o desempenho do sistema não é afetado. Completamente apagado quando se faz uma reposição de fábrica. O ponto de montagem é /data. Sistema de arquivos YAFFS2.

Nem todos estes arquivos são necessários para se reflashar com sucesso o Wei Dream.

A estrutura de arquivos também é indicada no log de boot, recuperado com o comando dmesg dentro do shell Android:

<5>[    1.055415] Creating 13 MTD partitions on "MT6516-Nand":
<5>[    1.056125] 0x000000000000-0x000000020000 : "preloader"
<5>[    1.058539] 0x000000020000-0x000000320000 : "nvram"
<5>[    1.060678] 0x000000320000-0x000000340000 : "seccnfg"
<5>[    1.062672] 0x000000340000-0x0000003a0000 : "uboot"
<5>[    1.064665] 0x0000003a0000-0x0000009a0000 : "boot"
<5>[    1.066647] 0x0000009a0000-0x000000fa0000 : "recovery"
<5>[    1.068716] 0x000000fa0000-0x0000010c0000 : "secstatic"
<5>[    1.070895] 0x0000010c0000-0x000001120000 : "misc"
<5>[    1.072997] 0x000001120000-0x00000bb20000 : "system"
<5>[    1.075592] 0x00000bb20000-0x00000f720000 : "cache"
<5>[    1.077709] 0x00000f720000-0x00000fa20000 : "logo"
<5>[    1.079599] 0x00000fa20000-0x00000fac0000 : "expdb"

O comando “cat /proc/partitions” revela o tamanho das partições em número de blocos:

# cat /proc/partitions
major     minor  #blocks  name

  31        0        128 mtdblock0
  31        1       3072 mtdblock1
  31        2        128 mtdblock2
  31        3        384 mtdblock3
  31        4       6144 mtdblock4
  31        5       6144 mtdblock5
  31        6       1152 mtdblock6
  31        7        384 mtdblock7
  31        8     174080 mtdblock8
  31        9      61440 mtdblock9
  31       10       3072 mtdblock10
  31       11        640 mtdblock11
  31       12     267520 mtdblock12
 179        0    1966080 mmcblk0
 179        1    1707008 mmcblk0p1
 179        2     258048 mmcblk0p2

E o comando “cat /proc/mounts” descreve os tipos de sistemas de arquivos e parâmetros de montagem:

# cat /proc/mounts
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/mtdblock8 /system yaffs2 ro,relatime 0 0
/dev/block/mtdblock12 /data yaffs2 rw,nosuid,nodev,relatime 0 0
/dev/block/mtdblock9 /cache yaffs2 rw,nosuid,nodev,relatime 0 0
/dev/block/mtdblock6 /system/secro yaffs2 ro,relatime 0 0
/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount ro 0 0
/dev/block/vold/179:1 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0

Com estas informações, posso recriar o firmware de um smartphone Android MT6516 a partir do despejo (dump) da ROM (Read Only Memory). A receita de bolo é a seguinte:

  1. Baixei o programa “MTK_Rom_Studio_1.1.77.146.rar” (Mirror 1 , Mirror 2, Traduzido para o português) e descompactei o arquivo para uma pasta.
    Por exemplo: “C:\MTK_Rom_Studio\”.
  2. Criei uma pasta para o firmware coletados.
    Por exemplo, “C:\FwForSPFT\”.
  3. Coloquei nesta pasta o dump da ROM.
    Por exemplo, uma árvore de diretórios e arquivos ficaria assim:
    • C:\
      • FwForSPFT\
        • boot.img
        • data.img
        • firmware.info
        • logo.img
        • preloader_bird16_a10y.img
        • recovery.img
        • secro.img
        • system.img
        • uboot_bird16_a10y.img
  4. Executei o programa “MTK_Rom_Studio.exe”.
  5. Escolhi o menu “Arquivo > Carregar firmware.info” na pasta com o firmware coletado:
    Por exemplo, o arquivo “C:\FwForSPFT\firmware.info”.
  6. Escolhi o menu “Modo > Profi”.
  7. Cliquei no botão “Confere arquivos”. Aparece a tela a seguir.

    Em vermelho, aparecem arquivos ROM incorretos; em azul, arquivos não-ótimos; em Preto, arquivos com estado desconhecido.
  8. Cliquei no botão “Corrige arquivos”.

    O programa MTK_Rom_Studio irá realizar as seguintes ações automaticamente:
    • criar um arquivo scatter para uso do programa SP FlashTool. Este arquivo informa sobre a distribuição (scatter) dos arquivos ROM na memória flashdo aparelho;
      Será um arquivo  “C:\FwForSPFT\MT6516 _Android_scatter.txt”. O nome do arquivo scatter depende de plataforma do celular.
    • Coletar e exibir informações sobre o arquivo de firmware (eles devem estar no mesmo diretório do arquivo “firmware.info”);
    • Verificar e corrigir os arquivos de dump para o sucesso da gravação do firmware para o telefone. Antes, o programa de ajustamento cria cópias de backup de arquivos em uma pasta chamada “bak”;
      Por exemplo, esta será uma pasta: “C:\FwForSPFT\bak”.
    • Remover firmwares que não puderam ser ajustados e podem ameaçar o reflasheamento, ou arquivos extras desnecessários.
      Por exemplo, todas as operações de arquivos serão realizados na pasta: “D:\FwForSPFT\”.
  9. A seguir, cliquei no botão “Grava ‘scatter'” para gravar o arquivo que define a distribuição das imagens na memória flash, para uso do SP FlashTool.
  10. O firmware pronto para ser flashado pelo SP FlashTool será colocado na pasta original com o dump. A subpasta “bak” pode ser removida.
    Por exemplo, uma árvore de diretórios e arquivos de firmware final será:
    • C: \
      • FwForSPFT \
        • boot.img
        • data.img
        • firmware.info
        • logo.img
        • MT6516_Android_scatter.txt
        • preloader_bird16_a10y.img
        • recovery.img
        • secro.img
        • system.img
        • uboot_bird16_a10y.img

Bonus track: Engineer mode

Entre no Modo Engenheiro do Wei Dream discando *#*#3646633#*#* (não é preciso clicar no telefonezinho). Podem ser configurados muitos ajustes de hardware neste modo. Incluindo desconfigurar tudo…

Programas e dados utilizados

Use por sua conta e risco. Não nos responsabilizamos por quaisquer danos ao seu celular.

Referências

José Antonio Meira da Rocha

Jornalista, professor das áreas de Editoração e de Mídias Digitais na Universidade Federal de Santa Maria, campus cidade de Frederico Westphalen, Rio Grande do Sul, Brasil. Doutor em Design pelo Programa de Pós-Graduação em Design (PGDesign)/Universidade Federal do Rio Grande do Sul (UFRGS), Porto Alegre, Brasil, 2023. Mestre em Mídias pela UNISINOS, São Leopoldo, RS, Brasil, 2003. Especialista em Informática na Educação, Unisinos, 1976.

View Comments

  • Jose tenho um aparelho wei de 4 chips que ja tem uns 3 anos deixei ele cair e a tela nao esta mais acendendo como posso recuperar a minha lista telefonica sera que tem jeito?

    • Olá, Carlos!
      Talvez ligando por cabo USB e ADB seja possível a recuperação de informações sem ver a tela, mas não tenho experiência nisto.

  • Olá amigo,será que alguem tem o vold.fstab original do H2000 (A611)?
    Por favor quem puder me ajudar,ficarei muito grato.

  • Olá amigo,nota 10 para seus tutoriais,adquiri a poucos dias no mercado livre um h2000(A611).E instalei com sucesso o clockworkmod no meu cel.Será que consigo instalar a rom CYANOGEN 6 ou 7 nele,por acaso você não sabe de algum site além do XDA que disponibilize rons para esta cpu(MTK6516).

    • Valeu o prestígio, Eduardo!
      Talvez o site russo http://forum.china-iphone.ru/ tenha o CWM. Mas o grande problema dos mods é que tem que ser para seu modelo específico, em função dos drivers de vídeo, tela, modens, GP etc.

  • Olá! Tentei o procedimento no meu SC8810, mas deu acesso negado. Eu sei que a postagem é referente a outro aparelho, mas estou "dando tiro" pra todo lado para obter o acesso root.
    Se tiver alguma dica aceito. :)
    Valeu o post!

    • Olá, Welson!
      Deve ter uma maneira similar de fazer isto no chip Spreadtrum do SC8810. Mas esta mensagem parece indicar que está sem acesso root.

  • Boa tarde amigo! Estou apanhando para conseguir para Instalar o CWM no meu celular chines. O senhor sabe como proceder?

  • tenho um nextel titanium, ele esta travado na tela de boot, ja dei hard reset e nada, gostaria de saber sse tem jeito

  • Olá amigo! Fiquei muito tempo sem ver o seu post. Sim, o link2sd foi a minha salvação, Mas ele não faz milagre, pois os dados de programa do usuário assim como o cache, ficam enchendo o pequeno \data\ de míseros 170MB. Seria legal se o programa link2sd linkasse tudo o que são dos apps do \data,, ou melhor ainda, se conseguíssemos ter a opção de montar o /data/ no SDCard /mnt/sdcard/data/ . O senhor descobriu algo sobre como dar boot pelo SDCARD ou montar o /data/ no SD? Grato e muito obrigado por toda a sua força!

  • Tenho um celular Android Y901
    http://mingdutech.en.made-in-china.com/product/eqMEOnkrCwhJ/China-2-8-Resistive-Touch-Screen-WiFi-TV-Cellular-Y901.html

    um amigo meu foi tentar atualizar o android dele, e ele não inicia mais. Só fica na tela de carregamento do android. Tentei baixar a pasta update.zip e coloquei no cartão SD para tentar reinstalar pelo system root (botão Volume+ e Power), e não consegui também. Alguem dá uma ajuda aew????

1 2 3
Share
Published by
José Antonio Meira da Rocha

Recent Posts

Sempre faça um fotão

Colheita de soja. Foto: Wenderson Araujo/Trilux Fotógrafos de mídias rurais já perderam a conta das…

1 year ago

A corrupção dos tolos

João Batista MezzomoAuditor fiscal O que está por trás de tudo o que está acontecendo…

4 years ago

Naomi who? Naomi Wu!

A.k.a. "SexyCyborg". A mulher do século 21. Naomi Wu testa seu iluminador de implantes na…

5 years ago

Raspagem de dados

A principal ferramenta do jornalista de dados é a planilha, tipo LibreOffice Calc, M.S. Excel…

5 years ago

Que estratégia político-terapêutica pára um governo deliroide?

Rita Almeida, 9 de março de 2019 Psicóloga Rita Almeida: não delirantes, mas deliroides. Não…

6 years ago

Sua tia não é fascista, ela está sendo manipulada

Rafael Azzi5 de outubro de 2018 Você se pergunta como um candidato com tão poucas…

6 years ago