Comience con el Emulador y el Simulador, que forman parte de los SDK estándar. Si prefiere ciertos entornos en lugar de otros, gravitará hacia un marco confiable para probar estas plataformas.
Por ejemplo, con una aplicación de iOS, siempre comienzo con el simulador de iOS después de compilar el código en Xcode. Configuré el proxy HTTP y SSL / TLS de mi sistema Mac OS X en localhost donde ejecuto Burp Suite Professional. Luego lanzo la aplicación y utilizo la funcionalidad Xcode DTrace que se encuentra con la herramienta de discusión de línea de comandos. Tiendo a mirar los archivos de plist con las herramientas de smartphonesdumbapps.
Con las aplicaciones de Android, es similar. En estos días, voy y vengo entre IntelliJ IDEA y Eclipse, pero ambos tienen puntos de integración de SDK de Android muy útiles. Para Eclipse, es ADT. Me gusta lanzar el Emulador a través del ADT. Me gusta interactuar con el sistema de archivos y la memoria utilizando DDMS, que es principalmente útil para la depuración. Sin embargo, cuando se trata del rastreo de software, tiendo a subirme a un shell adb y ejecutar los procesos en los que estoy interesado, junto con un logcat simultáneo. Para los servidores proxy, normalmente utilizo un agujero negro de DNS para crear un proxy transparente para Burp Suite Professional utilizando la marca -dns-server del emulador. También es útil ver el manifiesto en ADT, especialmente para ver los permisos y las intenciones.
Gran parte de esto cambia si no tiene una fuente compilable. Peor aún, podría estar apuntando a una aplicación que tenga un código de auto-modificación o auto-verificación. En estas situaciones, necesitará un enfoque que implique el desmontaje y la descompilación de la aplicación. Para iOS, las herramientas class-dump-z, otool, otx e i386codedump son una apuesta segura junto con IDA Pro. Puede encontrar mucha información sobre la descompilación de aplicaciones de Android, aunque los depuradores ARM e IDA Pro serán útiles para aquellas aplicaciones que tienen una gran inversión en las protecciones de código de auto-modificación o autocontrol. Existe mucha información sobre el malware y las herramientas relacionadas con el malware en la plataforma Android que están relacionadas con este tipo de problema. Por ejemplo, hay una lista de correo de malware para dispositivos móviles.
Algunos otros recursos excelentes son la documentación del desarrollador combinada con el trabajo práctico. Pluralsight y Raywenderlich tienen excelentes tutoriales que cubren estas plataformas. He revisado todo su material. Hay muchos libros de Syngress y OReilly en Android y iOS, muchos de los cuales cubren temas de seguridad y análisis forense en profundidad. Hay un libro sobre seguridad de aplicaciones de cacao de Wrox Press que también vale la pena ver, aunque fechado. La mayoría de los libros que cubren los conceptos básicos de los lenguajes base (Obj-C y Java) serán útiles, aunque también es bueno entender dónde convergen los lenguajes y conceptos de las aplicaciones móviles (por ejemplo, PhoneGap, MonoTouch, et al).
** ACTUALIZACIÓN 3/26/2012 **
Tiendo a usar herramientas similares, aunque he extendido más a DTrace-Toolkit e iprofiler / Instruments para aplicaciones de simulador de iOS. Tiendo a hacer mucho más trabajo usando cycript en un iPad 2 con jailbreak, que ha sido revelador (especialmente junto con class-dump-z). Para Android, creo que olvidé mencionar el Monitor de actividad, que es muy útil para lanzar intenciones.
Gran parte del tiempo de ejecución se puede ver / analizar / modificar utilizando el tiempo de ejecución Obj-C o Java / Smali, por lo que el conocimiento de estos lenguajes y de sus plataformas específicas en los dispositivos de destino no es muy opcional.
Ocasionalmente, se me pide que compruebe las aplicaciones que tienen otro formato (por ejemplo, AIR para iOS / Android, HTML5, Titanium, NDK, etc.) pero que compile como aplicaciones nativas. En esta situación, es mejor construir (como tendría el desarrollador original) y / o aplicar ingeniería inversa a cada componente utilizando una combinación de análisis binario, estático y dinámico. Esto puede requerir el uso de Flash Professional u otra herramienta IDE / build.