Inizia con l'emulatore e il simulatore, che fanno parte degli SDK standard. Se preferisci determinati ambienti rispetto ad altri, ti attirerai verso un framework affidabile per testare con penna queste piattaforme.
Ad esempio, con un'app iOS, inizio sempre con iOS Simulator dopo aver creato il codice in Xcode. Ho impostato il mio sistema HTTP OS OS Mac OS X e il proxy SSL / TLS su localhost su cui eseguo Burp Suite Professional. Quindi avvio l'app e utilizzo la funzionalità Xcode DTrace trovata con lo strumento dtruss della riga di comando. Tendo a guardare i file plist con gli strumenti smartphonesdumbapps.
Con le app per Android, è simile. In questi giorni, vado avanti e indietro tra IntelliJ IDEA ed Eclipse, ma entrambi hanno punti di integrazione Android SDK molto utilizzabili. Per Eclipse, è ADT. Mi piace lanciare l'emulatore tramite l'ADT. Mi piace interagire con il filesystem e la memoria usando il DDMS, che è principalmente utile per il debug. Tuttavia, quando si tratta di tracciamento del software, tendo a saltare su una shell adb e ad analizzare i processi a cui sono interessato, insieme a un logcat simultaneo. Per il proxy, di solito utilizzo un blackhole DNS per creare un proxy trasparente per Burp Suite Professional utilizzando il flag -dns-server dell'emulatore. È utile anche guardare il manifest in ADT, specialmente per vedere le autorizzazioni e le intenzioni.
Gran parte di queste modifiche se non si dispone di una fonte realizzabile. Ancora peggio, potresti scegliere come target un'app con codice di auto-modifica o di autocontrollo. In queste situazioni, avrai bisogno di un approccio che prevede il disassemblaggio e la decompilazione dell'app. Per iOS, gli strumenti class-dump-z, otool, otx e i386codedump sono una scommessa sicura insieme a IDA Pro. Puoi trovare molte informazioni sulla decompilazione di app Android, anche se i debugger ARM e IDA Pro torneranno utili per quelle app che sono pesantemente investite in protezioni di codice auto-modificanti o autocontrollate. Ci sono molte informazioni su malware e strumenti relativi al malware sulla piattaforma Android che sono legati a questo tipo di problema. Ad esempio, esiste una mailing-list di malware per dispositivi mobili.
Alcune altre grandi risorse sono la documentazione per gli sviluppatori e il lavoro pratico. Pluralsight e Raywenderlich hanno alcuni tutorial eccellenti che coprono queste piattaforme: ho passato tutto il loro materiale. Ci sono molti libri dai libri di Syngress e OReilly su Android e iOS - molti dei quali trattano argomenti di sicurezza e di medicina legale abbastanza approfonditi. C'è un libro su Cocoa Application Security di Wrox Press che vale anche la pena, anche se datato. La maggior parte dei libri che trattano le basi dei linguaggi di base (Obj-C e Java) sarà utile, sebbene sia anche utile capire dove convergono i linguaggi ei concetti delle app per dispositivi mobili (ad esempio PhoneGap, MonoTouch e altri).
** AGGIORNAMENTO 26/03/2012 **
Tendo ad usare strumenti simili, anche se mi sono spostato maggiormente su DTrace-Toolkit e iprofiler / Instruments per le app iOS Simulator. Tendo a fare molto più lavoro usando cycript su un iPad 2 jailbroken, che è stato un apripista (specialmente insieme a class-dump-z). Per Android, credo di aver dimenticato di menzionare l'Activity Monitor, che è molto utile per lanciare intenti.
Molti runtime possono essere visualizzati / analizzati / modificati utilizzando il runtime Obj-C o Java / Smali, quindi la conoscenza di questi linguaggi e delle loro specifiche della piattaforma sui dispositivi di destinazione non è molto opzionale.
Occasionalmente, mi viene chiesto di eseguire il test delle app per le app che sono un altro formato (ad esempio AIR per iOS / Android, HTML5, Titanium, NDK e altri), ma di compilare come app native. In questa situazione, è meglio costruire (come avrebbe fatto lo sviluppatore originale) e / o eseguire il reverse engineering di ogni componente utilizzando una combinazione di analisi binarie, statiche e dinamiche. Potrebbe essere necessario utilizzare Flash Professional o un altro IDE / build-tool.