Rootando Motorola Defy

Aplicativo superuser no Android 2.3.7

Quando se compramos alguma coisa, quase sempre temos uma motivação, para Geek's comprar um smartphone não é simplesmente para fazer chamadas tirar umas fotos e entrar no twitter. Mas algumas fabricantes não abriram o olho para isto, veja o caso do IPhone existe uma serie de exigências para se conseguir manipular aquele aparelho. Veja os aparelhos da Motorola dificilmente você encontrará algum android sem um bootloader criptografado.

Mas como falei no inicio o pessoal underground não gosta muito do "mais do mesmo" sempre queremos mais, overclock, aquela Custom Rom maneira entre outras modificações legais que aparecem por ai. Mas e ai como fazer estas modificações se as verdadeiras donas dos smartphone não nos permite. No Android a técnica se chama Root e no IPhone JailBreak. Neste artigo iremos abordar como rootar uma aparelho Motorola Defy.

A maioria dos artigos que encontramos na internet ensina a rootar o Defy utilizando o SuperOneClick (SOC), que é uma interface Win32 que manipula o Android Debuger (ADB) através da linha de comando, tá legal, mas os problema começam quando se tem que instalar os drivers do celular no Windows que nem sempre é fácil. Uma das grandes vantagens do GNU/Linux é que não precisamos instalar drivers para coisas plug-in-play, claro ela deve ser suportada, o que é o caso do Defy.

Vamos lá então

Atenção, este procedimento não apresenta nenhum ponto de risco ao seu aparelho, mas só execute os procedimentos se você tiver certeza que sabe o que esta fazendo, eu não me responsabilizo por qualquer dano ao seu aparelho.

Preparamos um pacote com todas as ferramentas que iremos precisar, veja o conteúdo do nosso arquivo:

  • Exploit (Gingerbreak e Froyo)
  • Busybox
  • Su
  • Superuser.apk
  • ADB for Linux, Mac, Windows

Instalar o Android Debuger no Linux

O primeiro ponto é colocar o adb para funcionar, para isto vamos copiar o adb para o diretório /usr/local/bin, desta forma poderemos chamar o adb sem que seja necessário sempre passar o path do binario, isto vai facilitar muito.

Acessando seu aparelho através do ADB

Este é sempre um ponto de dúvida, uma vez que ele exige uma combinação de condições, que são elas:

  • Seu aparelho deve esta em modo debug antes de ser plugado
  • Só plugue o cabo USB depois que o adb estiver esperando por dispositivos
  • Você deve rodar o adb wait-for-devices com poderes de super usuário

Para colocar seu aparelho em modo developer, vá em Configurações, depois Aplicativos, em seguida Desenvolvimento e por ultimo marque a opção Depuração USB, veja a figura abaixo:

Modo developer

O menu do seu aparelho deve ser um pouco diferente deste ai, uma vez que este aparelho que esta sendo utilizado para tirar as screenshot esta com o CyanogenMod instalado.

Com a depuração usb ativada, podemos colocar o adb em modo de espera por dispositivos, veja a linha de comando:

user@host ~/droid-to-root $ sudo adb wait-for-devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

Como você vai perceber, este comando bloqueará o console, e alguns segundos depois de conectar o seu celular no seu computador será devolvido o console ao seu poder, isto indica que podemos continuar com o processo e enviar os arquivos para o dispositivo.

Enviando os arquivos para seu aparelho

Antes de iniciar o processo envio dos nossos arquivos, vamos entender a funcionalidade de dois diretórios do Android. O primeiro é o /system este diretório é onde ficam os arquivos mais importantes do nosso dispositivo é também onde ficam os APKs de fabrica e também onde fica o sistema de arquivo básico do GNU/Linux que foi embarcado para poder rodar o Android. O outro diretório é o /data pode vai tudo que é instalado pelo usuário do smartphone.

O grande problema é que /system é bloqueado somente para leitura mas o /data permite leitura e escrita por isto vamos, enviar todos os nossos arquivos necessários para /data/local/tmp que é um diretório temporário que será destruído assim que você desligar seu aparelho, então vamos ao envio dos arquivos veja:

user@host ~/droid-to-root $ adb push Superuser.apk /data/local/tmp/Superuser.apk
...
user@host ~/droid-to-root $ adb push su-v3 /data/local/tmp/su
...
user@host ~/droid-to-root $ adb push busybox /data/local/tmp/busybox
...
user@host ~/droid-to-root $ adb push psneuter /data/local/tmp/psneuter
...
user@host ~/droid-to-root $ adb push GingerBreak /data/local/tmp/GingerBreak
...
user@host ~/droid-to-root $

Executando o exploit para conseguir root

Já estamos com todos os arquivos necessários no celular, precismos agora definir qual vai ser o exploit que iremos utilizar, acredito que seu aparelho Defy esteja com Android 2.2.1 (Froyo) que foi a ultima versão atualizada pela Motorola, sabendo disto podemos utilizar o psneuter.

Veja este exploit ele tem uma característica interessante, ele explora uma falha no processo do ADB que roda no seu celular então ele provocara um erro, sua sessão sera finalizada, e alguns segundos depois você poderá conectar novamente no celular e perceberá que o shell não mais esta com $ e sim com # indicando que você neste momento tem acesso root no sistema Android. Veja como seria a execução:

user@host ~/droid-to-root $ adb shell
$ cd /data/local/tmp
$ chmod 0775 psneuter
$ ./psneuter
...
user@host ~/droid-to-root $ adb shell
#

Caso o psneuter não funcione em seu aparelho, podemos utilizar o GingerBreak, que apesar de demorando consegue resolver o problema, ele é diferente do psneuter, ele atua no shell e não finaliza a sessão do adb você perceberá que apos ele terminar o serviço o shell estará com # indicando o poder de root. Veja como seria a execução:

user@host ~/droid-to-root $ adb shell
$ cd /data/local/tmp
$ chmod 0775 GingerBreak
$ ./GingerBreak
...
#

Fizemos tudo isto para conseguir root, por que precisamos colocar alguns arquivos em /system e como vimos anteriormente este diretório esta montado somente leitura.

Instalando o Superuser

Neste momento iremos desbloquear o /system para que ele permita escrita ai então vamos instalar 3 arquivos no celular, veja como:

...
# pwd
/data/local/tmp
# mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
# cp Superuser.apk /system/app/Superuser.apk
# cp su /system/bin/su
# cp busybox /system/bin/busybox
# chmod 4755 /system/bin/su
# chmod 4755 /system/bin/busybox
# mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
# exit
# exit
user@host ~/droid-to-root $ adb reboot

Pronto, se tudo deu certo, agora você tem poder de super usuário. Indo que seja reiniciado o aparelho para que seja feita a limpeza do diretório /data/local/tmp, então veja que este passo não é obrigatório.

Verificando se tudo deu certo

Deve haver métodos mais fáceis, mas como eu acabaria instalando mesmo este aplicativo, vou recomendar que instalem também estou falando do Titanium Backup, o teste é simples, ao iniciar o Titanium ele solicitará os privilégios de root, caso isto não aconteça, reveja os passos anteriores. Veja a figura:

Solicitando permissão para acesso root

Atenção, esta tela que você esta vendo sempre será exibida caso algum aplicativo solicite acesso root, tome cuidado em permitir sempre que for fazer isto, procure ter certeza que o software é seguro. Eu uso como politica de segurança só aceitar root de aplicativos conhecidos e reputados no Market.

Referencias

Visualizar comentários do artigo