Diversi siti offrono download di APK ( 1 , 2 , 3 ). C'è un modo per determinare se un determinato sito Web / apk è sicuro da installare?
Penso che il modo più completo per testare app di terze parti sia:
adb devices
Puoi analizzare cosa sta succedendo nel dispositivo usando registri diversi che sono costantemente in esecuzione. Questi possono essere difficili da catturare, ma puoi catturare il logcat
del tuo dispositivo con adb logcat
. Puoi imparare come usare Logcat like a Pro .
Il dispositivo virtuale Android (AVD) utilizza la tua connessione Internet come una connessione WiFi. A questo punto puoi eseguire tutti i tipi di analisi. Il mio post su come analizzare il malware potrebbe essere utile (per quanto riguarda gli strumenti e le tecniche da usare). Wireshark sarà uno strumento utile per analizzare il traffico di rete. Guarda che cos'è l'app con le sue connessioni di rete.
Quindi ora ti stai addentrando e impuri nel vedere che cosa sta facendo esattamente l'APK. Per questo avrai bisogno di alcuni strumenti. Ecco uno strumento online (non l'ho usato) che afferma di decompilare un APK Android nel suo codice Java. Se vuoi capire il processo e farlo da solo, guarderei risposta Stack Overflow .
Un APK è solo un file .zip
. Quindi i passaggi (con gli strumenti da quella risposta Overflow dello stack)
unzip example.apk
Ora abbiamo i seguenti file e directory:
-rw-rw-r-- 1 3708 Oct 14 2013 AndroidManifest.xml
-rw-rw-r-- 1 2751916 Oct 14 2013 classes.dex
drwxrwxr-x 2 4096 Aug 3 12:12 META-INF
drwxrwxr-x 23 4096 Aug 3 12:12 res
-rw-rw-r-- 1 363640 Oct 14 2013 resources.arsc
Il classes.dex
è ciò che vogliamo. Contiene tutte le classi Java utilizzate per l'applicazione.
./d2j-dex2jar.sh ../example.apk
Ora abbiamo un file JAR ./example-dex2jar.jar
che può essere decompilato nel codice Java. Qui è dove JD-GUI e ApkTool possono essere utili. Ora puoi guardare il codice esatto che viene eseguito dall'APK.
Ricorda però che alcune parti (se non la maggior parte) del codice Java saranno offuscate. Questo è comune e spesso vedrai i simboli delle funzioni strappati e sostituiti con a
, b
, ecc. Non solo funzioni, ma pacchetti, metodi, variabili. Vedere Java offuscato come z = (a) b.d()
non sarebbe insolito. Ma puoi vedere stringhe, importazioni tipiche e qualsiasi funzione oggetto condiviso JNI che possono utilizzare.
Tutto ciò che viene detto. Vuoi farlo per ogni app che scarichi? Probabilmente no. Si tratta di stabilire se ti fidi dello Store che stai utilizzando e / o della società di software che ha distribuito l'app. Personalmente non uso nessuna app al di fuori del Google Play Store. Le app che faccio scaricare sono basate su società che le hanno sviluppate, recensioni degli utenti (queste possono essere simulate), consigli di amici / forum, ecc.
Devi dare una sorta di fiducia all'app che stai scaricando, o analizzare ogni app che installi. In ogni caso devi usare cautela.
Per verificare se un APK è sicuro, puoi caricarlo ad es. Virustotal . Utilizzerà un gruppo di scanner antivirus per rilevare se c'è qualcosa di sbagliato nell'APK.
Nota che gli APK sono (in questo momento in cui scrivo) il tipo di file # 1 sottoposto a scansione da Virustotal.