2011-04-29 10 views
9

¿Hay una forma rápida de obtener todas las cadenas definidas en una apk?obtener todas las cadenas definidas en una apk

que estoy haciendo algo como esto:

aapt d --values resources app.apk 

No estoy seguro de si me da todas las cuerdas.

Si hay alguna manera más fácil de analizar las cadenas, por favor hágamelo saber.

Respuesta

10

Puede cambiar "recursos" para "cadenas" y lo tendrá. Uso:

aapt d --values strings [APK_FILE] 

Esto vaciará todas las cadenas en la apk. El volcado incluye los recursos de cadena que es lo que estás buscando.

Esto también incluye cadenas generadas por el sistema como la ruta a los recursos (res/drawable-hdpi/icon.png por ejemplo).

0

Usted podría intentar esto en un sistema Linux:

$ strings yourfile.spk 

Esta analizará a cabo todos los caracteres ASCII más de una cierta longitud (4 bytes por defecto) pero se puede alterar esas longitudes con parámetros de línea de comandos.

Escanear una .apk como esta le dará MUCHA basura, ya que encontrará cualquier carácter imprimible en una cadena y lo volcará en su pantalla. Sin embargo, al probar esto en un APK propio, veo referencias a imágenes GIF, imágenes XML, básicamente, cualquier cosa que hagas referencia por nombre de archivo en tu ruta/res/resource. No hay menciones de nombres de funciones, etc., obviamente ya que todo se compila en el lenguaje de máquina.

Si necesita sólo las referencias a archivos XML, etc., que podrían tubería de su solicitud a través de grep, así:

$ strings yourfile.spk | grep xml$ 
+0

Gracias por la respuesta. Creo que un problema con esto es que el apk está comprimido y por lo tanto no todas las cadenas saldrán correctamente. Además, como usted señaló, también obtendrá muchas cosas que no sean cadenas, como las entidades XML y los atributos. Todavía puede haber algún valor al descomprimir el apk y luego seguir este enfoque. –

2

he encontrado otra manera quizá más simple de hacer esto para un archivo xml particular.

aapt d xmlstrings app.apk xmlfile 
+1

dijo que no puede encontrar el "xmlfile". Además, no entiendo qué es exactamente lo que falta en su comando original, ya que parece que escribe muchas cosas ... –

+0

Debe dar el nombre real (con la ruta completa) de xmlfile. Por ejemplo, "AndroidManifest.xml".También puede usar el comando original de la pregunta, pero eso busca a través de todo el apk (no un archivo en particular), así que depende de su caso de uso. Además, esta respuesta da resultados mucho más limpios. –

+0

veo, pero ¿cómo se puede saber el nombre de los archivos? ¿No necesitarías extraer/abrir el archivo apk como un archivo comprimido? –

Cuestiones relacionadas