Cómo depurar la función init en Android SO
Puedes depurar felizmente con permisos de raíz.
Utiliza diversas herramientas Root master del mercado.
Conectar el dispositivo
Pon el dispositivo en modo de depuración en las opciones de desarrollador.
Empuje android_server en la carpeta dbgsrv bajo el directorio de instalación de IDA al directorio del sistema del dispositivo y concédale permisos ejecutables. Solo IDA6.6 y posteriores pueden depurar la versión de gama alta de Android. En este momento, al depurar la versión de gama baja de Android SO, debe usar android_nonpipe.
Ingrese el comando en la PC:
ADB shell su
ADB shell Android_server/Android_server path
Reservado La ventana anterior y realice reenvío de puertos en la ventana de línea de comando:
adb forward tcp:23946 tcp:23946
¿Por qué es 23946? De forma predeterminada, tanto IDA como el servidor android del dispositivo push utilizan el puerto 23946 para comunicarse. Por supuesto que se puede modificar.
Abrir IDA
Ya no requiere el proceso de adjuntar o iniciar un proceso.
4. Encuentra la función INIT
Una forma más conveniente es encontrar un código fuente de Android con el mismo número de versión que el sistema del dispositivo. La ubicación para analizar y ejecutar archivos SO está en linker.c (cpp).
Debido a que existen diferencias entre las distintas versiones, no se muestra la imagen.
En la versión de gama alta, está en CallConstructors() bajo do_dlopen(), pero al compilar el sistema, a menudo se coloca en su función principal junto con find_library, por lo que debes prestar atención al buscar. . Una forma sencilla es buscar en el código fuente la palabra "INIT".
Primero desconecte el vinculador del dispositivo y utilice el análisis IDA para determinar la ubicación específica donde se llama a INIT.
Debido a que el vinculador se carga muy temprano en el proceso de Android, su dirección en IDA se puede usar directamente sin modificaciones.
5. Interrupción de la inicialización
Después de interrumpir el punto de interrupción, ejecute la función que activa la carga de SO en el Apk.
Normalmente, puedes detenerte frente al INIT de SO.