Cómo descompilar el refuerzo 360 de la aplicación Android
1 Comparación
Cargue la demostración para refuerzo. Después de desembalar, compare el paquete original y el paquete de refuerzo. Se encuentra que el paquete de refuerzo tiene libjiagu.so, libjiagu_x86 y lib. archivos en la carpeta de activos Hay más libjiagu_art.so en la carpeta, y el archivo dex y el archivo AndroidManifest se han modificado al mismo tiempo
Abra el archivo de manifiesto y vea que el refuerzo xxx ha modificado la aplicación. etiqueta y agregó una entrada de shell, que es lo que vemos después de descompilar. Vaya al archivo StubApplication.smali.
En comparación con la versión anterior de refuerzo, desde la versión reforzada 1.x.x.x, ha habido varias anti-depuraciones más, lo que hace que la dificultad dinámica sea un poco más difícil. Sin embargo, para el bombardeo de máquinas, hay más. La antidepuración también es inútil. O modificando el código fuente del sistema, también se puede eliminar el efecto anti-depuración.
2 Depuración dinámica
(1) Instale la aplicación en el teléfono y ábrala en modo de depuración
(2) Abra android_server de IDA con permisos de root en Monitoreo del modo shell
(3) reenvío tcp
(4) Abra IDA y modifique la configuración para desconectarse cuando comience el proceso
(5) reenvío jdwp después Al buscar el proceso, el valor pid es nuestro ID de proceso y se agrega a la línea de comando.
Después de adjuntar correctamente, puede pasar a la siguiente sección. Abra la opción del depurador.
Elegimos depurar cuando se inicia el hilo y la biblioteca se carga. jdb está adjunto y haga clic en Ejecutar
El programa se detendrá en la cabeza del elfo, presionará la tecla G, buscará mmap y se ejecutará al comienzo de la función mmap y en la sección inferior del extremo roto p>
Ejecute F9 y F8 en un solo paso cuando llegue al final.
Cuando llegue aquí, desconéctese en BLunk_5C999C2C, presione F9 y siga con F7.
Después de seguir esto, desconéctese en BLX LR. Aquí es donde se realiza la antidepuración. El principio sigue siendo el mismo. Es obtener el valor de TracePid para determinar si se encuentra actualmente en estado de depuración. pausa por primera vez en fgets y fopen, y luego siga esta llamada con f7 para ver el valor de TracePid.
Después de seguir, 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 está en estado de depuración, el proceso finalizará directamente.
Romperemos en todos los cmpR0 y #0 de esta función. Después de presionar F9, romperemos en el punto de interrupción. Observe el valor de R0 en la ventana de registro, que es esencialmente el valor hexadecimal del TracePid actual. /p> p>
Si no está seguro, puede usar cat /proc/pid/status para comparar. Configuramos R0 directamente en 0, hacemos clic derecho y seleccionamos Valor cero para borrar 0, y continuamos con F9<. /p>
Vemos que el programa llega a mmap nuevamente y continúa con f9
Al continuar interrumpiendo el método de llamada a la función anti-depuración, continúa con F7 para seguir, aún interrumpe cmp R0 , #0, y luego ponga R0 Después de borrar a 0, continúe ejecutando F9
La regla actual es que la primera, segunda y cuarta vez al llamar a BLXLR son para juicio anti-depuración. La tercera vez no tiene. efecto y puede saltar directamente a F9. En el pasado, después de completar tres anti-depuraciones, podía ejecutar F9 y observar la ventana de pila
Cuando veía lo siguiente:
Simplemente volcarlo directamente con el script. y finalmente elimine todos los archivos de libjiagu y repárelos Marca de aplicación, si existe, repárela, si no existe, simplemente elimínela