
13/07/17, 19:50:56
|
 |
Usuario poco activo
Mensajes: 39
|
|
Fecha de registro: jul 2017
Localización: Tras la pantalla
Mensajes: 39
Modelo de smartphone: Cerebro
Versión de ROM: Educación amplia
Versión de Radio: Sólo voz
Tu operador: Otra
Mencionado: 0 comentarios
Tagged: 0 hilos
|
|
[BOOT] Partición de inicio con mejoras
AVISO: No me hago responsable de lo que le pueda ocurrir a tu móvil, a tu casa o a tu coche. Lo que vas a hacer con este tutorial requiere conocimientos avanzados.
La partición de inicio que he modificado, es la misma que la original, con la excepción de dos mejoras:
1. Podemos ejecutar comandos como root desde ADB (ver al final del post).
2. Si creamos un script que se llame script.sh en /system/bin y le damos permisos de ejecución, se ejecutará al inicio.
Materiales
Procedimiento
1. Descargamos la imagen de la partición de arranque (boot). Viene comprimida en zip, hay que extraerla.
2. Entramos en modo fastboot en el móvil. Para hacer esto, tenemos que apagarlo y luego encenderlo mientras pulsamos el botón de bajar volumen.
3. Conectamos el móvil al ordenador.
4. Ejecutamos el siguiente comando en el ordenador (la ruta al archivo boot.img tienes que ponerla según dónde esté descargada):
Código:
fastboot flash boot boot.img
5. Reiniciamos el móvil ejecutando este otro comando en el ordenador:
6. Eso es todo. Ahora tenemos acceso a root a través de ADB y podemos ejecutar cualquier cosa al inicio.
Ejecutando cosas con privilegos de root
En el ramdisk hay un ejecutable puesto por mí (/sbin/root) que nos permite ejecutar comandos como root y/o elevar los privilegios de la consola interactiva donde estamos.
Para ejecutar un comando como root, podemos hacerlo así (en este caso ejecutamos el comando id):
Código:
usuario@Ordenador:~$ adb shell
shell@android:/ $ root id
uid=0(root) gid=0(root) groups=1003(graphics),1004(input),1007(log),1009(mount),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats)
shell@android:/ $
Para obtener privilegios de root en la consola interactiva:
Código:
usuario@Ordenador:~$ adb shell
shell@android:/ $ root
shell@android:/ #
Incluso, si somos mañosos, podemos instalar SuperSU sin necesidad de cambiar el recovery ni hacer cosas raras.
Código fuente de /sbin/root
(Click para mostrar/ocultar)
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
int main(int argc, char **argv) {
if (setgid(0) || setuid(0)) {
fprintf(stderr,"root: permission denied\n");
return 1;
}
if (argc > 1) {
char *exec_args[argc];
memset(exec_args, 0, sizeof(exec_args));
memcpy(exec_args, &argv[1], sizeof(exec_args));
if (execvp(argv[1], exec_args) < 0) {
fprintf(stderr, "root: %s: exec failed: %s\n", argv[2], strerror(errno));
return -errno;
}
} else {
execlp("/bin/sh", "sh", NULL);
execlp("/bin/ash", "sh", NULL);
execlp("/bin/bash", "sh", NULL);
execlp("/system/bin/sh", "sh", NULL);
execlp("/system/bin/ash", "sh", NULL);
execlp("/system/xbin/ash", "sh", NULL);
execlp("/system/xbin/bash", "sh", NULL);
fprintf(stderr, "root: exec failed\n");
return 1;
}
}
|