360 Cómo descompilar aplicaciones Android refuerzo 360
1. Comparación
Cargue la demostración para refuerzo y compare el paquete original y el paquete de refuerzo después de la descompresión. Se descubre que el paquete de refuerzo contiene libjiagu.so, libjiagu_x86 y. libjiagu_art.so en la carpeta de activos y modificó el archivo dex y el archivo AndroidManifest
Abra el archivo de manifiesto y vea el refuerzo xxx en la aplicación.
Abra el archivo de manifiesto y vea que el refuerzo xxx modificó la etiqueta Aplicación y agregó una entrada de shell. Este es el archivo StubApplication.smali que vimos después de la descompilación.
En comparación con la versión reforzada anterior, desde la versión reforzada 1.x.x.x, ha habido varias veces más antidepuración, lo que ha aumentado ligeramente la dificultad dinámica, pero para el empaquetado de la máquina shell, no importa cuánto La antidepuración es inútil. O modificando el código fuente del sistema, también puede eliminar la antidepuración.
2 Depuración dinámica
(1) Instale la aplicación en el teléfono y ábrala en modo de depuración
(2) Utilice privilegios de root en modo shell Abrir IDA, abra android_server escuchando
(3) reenvío tcp
(4) Abra IDA,
(5) proceso de búsqueda y luego realice el reenvío jdwp, el El valor pid es nuestro número de proceso y se agrega a la línea de comando.
Después de que el archivo adjunto se haya realizado correctamente, puede pasar a la siguiente sección y abrir la opción de depuración.
Elegimos desconectarnos cuando se inicia la carga del hilo y la biblioteca después de modificar el archivo adjunto jdb con éxito. , haga clic en Ejecutar
El programa se desconectará en el encabezado elf, presione la tecla G, buscará mmap y desconectará la siguiente sección al principio y al final de la función mmap
Ejecutar F9 y llega al final de la desconexión Un solo paso en F8,
Aquí, en el punto de interrupción BLunk_5C999C2C, F9, F7 para seguir
Después de realizar el seguimiento, crea el siguiente punto de interrupción en BLX LR Aquí está lo contrario. El lugar y el principio de la depuración siguen siendo determinar si el estado de depuración actual es obteniendo el valor de TracePid. Se recomienda que las personas que depuran por primera vez se desconecten en fgets y fopen, y luego continúen con. F7, para que se pueda ver el valor de TracePid llamando a .
Después de realizar el seguimiento, movemos directamente el método a la parte inferior y podrá ver el símbolo de finalización. Aquí es donde se finaliza el proceso. Si actualmente se encuentra en estado de depuración, entonces el proceso finaliza directamente. .
Desconectamos en todos los cmpR0 y #0 de esta función. Después de desconectar F9, se desconecta en el punto de interrupción. Observe el valor R0 de la ventana de registro, que es esencialmente el valor hexadecimal del TracePid actual. Si el valor es incierto, puede usar cat/proc/pid/status para comparar. Configuramos R0 directamente en 0, hacemos clic derecho y seleccionamos Valor cero para borrarlo a 0 y continuar con F9. > Vemos que el programa ha llegado a mmap, continúa con F9
Al continuar interrumpiendo el método de llamada a la función anti-depuración, continúa con F7, aún interrumpiendo en absoluto cmp R0, #0 , después de la interrupción simplemente borre R0 a 0 y continúe ejecutando F9
La regla actual es que la primera, segunda y cuarta llamadas a BLXLR son para ejecutar la función de depuración del programa.
La primera, segunda y cuarta vez son para el juicio anti-depuración. La tercera vez no tiene ningún efecto. Puede saltar directamente con F9. Después de las tres veces de anti-depuración, puede ejecutar F9 y observar la ventana de la pila.
Cuando vea el siguiente contenido:
El shell ha comenzado a descifrar y liberar el archivo dex. Podemos presionar directamente F8 para caminar una docena de pasos y, finalmente, F9 puede ver el archivo. encabezado dex que necesitamos
Simplemente descargue el script directamente. Finalmente, elimine todos los archivos en libjiagu y repare la etiqueta de la aplicación. Si existe, repárela. >