Registrar todas las llamadas de API durante la ejecución de una aplicación de Android

4

Quiero recopilar todas las llamadas a API realizadas por una aplicación de Android que se ejecuta en un dispositivo real (con permisos de root, obvs).

Con API call me refiero a los métodos invocados en objetos como: ConnectivityManager

Pensé que puedo instrumentar todos los métodos con el marco Xposed, pero tal vez exista una forma más sencilla ... una especie de "estrategia de alto nivel".

De lo contrario, es suficiente monitorear el seguimiento de pila ...

¿Qué sugieres?

    
pregunta packmad 10.02.2017 - 23:24
fuente

2 respuestas

3

Puede ver los métodos Binder y otras funciones de strace con - enlace

Sin embargo, creo que está buscando interceptar llamadas de API con las técnicas enlace . Existen otras técnicas de conexión como IntroSpy - enlace - pero no parecen ser aplicables a tu situación.

Podrías encontrarte con situaciones en las que existen técnicas de enganche, enlace , por lo que te sugiero que tengas una manera para reemplazar ese código y volver a empaquetar el APK - enlace

El libro, Hacking Android, cubre el uso de IntroSpy y XposedFramework para enganchar. Creo que te gustará el registro de salida de XposedBridgeAPI - enlace - y puede encontrar su documentación de desarrollo aquí: enlace

Además, el libro cubre lo que es una práctica más común para los reversores de aplicaciones de Android y los probadores de penetración, que es el uso de herramientas de Frida . En particular, creo que la extensión appmon - enlace - es la más relevante (es compatible con privilegios de root y no root) acceso), pero también puede echar un vistazo a la versión extendida de cycript de NowSecure - enlace

    
respondido por el atdre 11.02.2017 - 22:35
fuente
-1

La mejor manera de lograr la recopilación global de llamadas Java es instrumentar el ART / DVM del SO Androis. Aquí puede encontrar un procedimiento de aplicación de parches mínimo para aplicar a AOSP (5.0 Lollipop, trabajando en 6.0 Marshmallow también) para recopilar todas las llamadas de Java de una aplicación específica: enlace

Luego, podría diferenciar las llamadas API de las llamadas de aplicaciones con alguna expresión regular.

    
respondido por el Dr. Jekyll 25.08.2017 - 12:07
fuente

Lea otras preguntas en las etiquetas