Varios sitios ofrecen descargas de APK ( 1 , 2 , 3 ). ¿Hay alguna forma de determinar si un sitio web / apk determinado es seguro de instalar?
Creo que la forma más completa de probar aplicaciones de terceros es:
adb devices
Puede analizar lo que ocurre en el dispositivo utilizando diferentes registros que se ejecutan constantemente. Estos pueden ser difíciles de capturar, pero puede capturar el logcat
de su dispositivo con adb logcat
. Puede aprender a usar Logcat como un profesional .
El dispositivo virtual de Android (AVD) usa su conexión a Internet como una conexión WiFi. En este punto puedes realizar todo tipo de análisis. Mi publicación en cómo analizar el malware podría Ser de ayuda (en cuanto a herramientas y técnicas a utilizar). Wireshark será una herramienta útil para analizar el tráfico de la red. Vea lo que la aplicación con sus conexiones de red.
Así que ahora te sentirás deprimido y verás lo que hace exactamente el APK. Para ello necesitarás unas cuantas herramientas. Aquí hay una herramienta en línea (no la he utilizado) que pretende descompilar un APK de Android en su código Java. Si quisiera entender el proceso y hacerlo usted mismo, vería esta respuesta de desbordamiento de pila .
Un APK es solo un archivo .zip
. Así que los pasos (con las herramientas de esa respuesta de desbordamiento de pila)
unzip example.apk
Ahora tenemos los siguientes archivos y directorios:
-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
El classes.dex
es lo que queremos. Contiene todas las clases de Java utilizadas para la aplicación.
./d2j-dex2jar.sh ../example.apk
Ahora tenemos un archivo ./example-dex2jar.jar
JAR que puede descomponerse en el código Java. Aquí es donde JD-GUI y ApkTool pueden ser útiles. Ahora puedes ver el código exacto que ejecuta el APK.
Tenga en cuenta, sin embargo, que algunas partes (si no la mayoría) del código Java serán confusas. Esto es común y, a menudo, verá los símbolos de función arrancados y reemplazados con a
, b
, etc. No solo funciones, sino paquetes, métodos, variables. Ver Java confuso como z = (a) b.d()
no sería raro. Pero puede ver cadenas, importaciones típicas y cualquier función de objeto compartido JNI que puedan usar.
Todo lo que se dice. ¿Quieres hacer eso para cada aplicación que descargues? Probablemente no. Todo depende de si confía en la Tienda que está usando y / o en la compañía de software que puso la aplicación. Yo personalmente no uso ninguna aplicación fuera de la tienda Google Play. Las aplicaciones que descargo se basan en las compañías que las desarrollaron, las reseñas de los usuarios (se pueden falsificar), las recomendaciones de amigos / foros, etc.
Debes confiar un poco en la aplicación que estás descargando, o analizar todas y cada una de las aplicaciones que instales. De cualquier manera tienes que tener cuidado.
Para verificar si un APK es seguro, puedes subirlo a, por ejemplo. Virustotal . Utilizará un montón de escáneres de virus para detectar si hay algún problema con el APK.
Note que los APKs (en este momento de la escritura) son el tipo de archivo # 1 que está escaneando Virustotal.