2012-10-04 24 views
5

He añadido archivo binario tcpdump para mi dispositivo Android usando este comando se añadeNo es capaz de ejecutar el archivo ejecutable desde adb shell

./adb push ~/tcpdump-4.2.1/tcpdump /data/local 

El binario en el dispositivo androide con éxito. Pero, cuando trato de ejecutar el archivo tcpdump desde el adb shell, usando comandos siguientes

./adb shell 
cd data/local 
./tcpdump 

Me da este error

/system/bin/sh: ./tcpdump: not executable: magic 7F45 

También he intentado cambiar permisos usando chmod 777 tcpdump pero en vano . ¿Cómo puedo solucionar este problema? Gracias.

+0

¿Cómo se compila? – Arseniy

+0

¿Qué error te da chmod? podrías empujarlo hacia la tarjeta sd, modificarla allí, luego moverla (supongo). ¿Eres raíz? – njzk2

+0

Uso el emulador de terminal Android. Viene con busybox que tiene tcpdump – Sharun

Respuesta

4

Puede encontrar una versión de Android de tcpdump here. Esta compilación está desactualizada y solo es relevante para los dispositivos ARM. Debe seguir these instructions para construir el binario de official source.

Hay detailed instructions re cómo ejecutar tcpdump en Android. Tenga en cuenta que necesita un dispositivo rooteado para comenzar.

+1

Además, consulte este enlace. Parte de esto explica cómo construir un binario para un dispositivo de brazo usando la fuente. Gran ayuda. http://codeseekah.com/2012/08/07/port-forwarding-an-android-local-port/ – FireAndIce

+1

La compilación vinculada de tcpdump es la versión 4.0, que es un poco antigua. Puede descargar una versión ARM de la versión 4.3 aquí: http://omappedia.org/wiki/File:Tcpdump-4.3.0-arm.tar.gz – georgiecasey

1

tratar el siguiente comando:

introducir este comando c:\ProgramFiles\Android\android-sdk\platform-tools\adb shell tcpdump

para Linux:

adb shell chmod 6755 /data/local/tmp/tcpdump 

y también ir a través de este enlace para una mejor comprensión:

http://www.kandroid.org/online-pdk/guide/tcpdump.html

+0

Uso ubuntu. Todavía lo intenté así ./adb shell/data/local/tcpdump. Me da el mismo error mencionado anteriormente. – FireAndIce

+0

he publicado la respuesta, por favor revise y hágamelo saber ... ingrese su ruta al archivo tcpdump –

0

que tiene el mismo error al intentar ejecutar otro binario en el emulador de Android. El error vino de la compilación.

Tienes que compilación cruzada para un objetivo ARM que significa que necesita un conjunto de herramientas específicas, como por ejemplo el brazo-linux-androideabi.

Para ello, es necesario

  • CROSS_COMPILE exportación = arm-linux-androideabi- (su cadena de herramientas que termina por '-' sin gcc)
  • exportación ARCH = brazo
  • añadir la cadena de herramientas a su RUTA

Luego puede ejecutar ejecutar comando. Es posible que desee añadir a los -static LDFLAGS antes de construir.

Finalmente compruebe que su binario ha sido bien compilado usando el comando de archivo. Debe buscar ARM en el resultado impreso.

En caso de que el Makefile no maneja CROSS_COMPILE var se puede tratar de hacer con los parámetros de CC y AR ajustarse manualmente con gcc "$ compilación cruzada" y "$ compilación cruzada" ar

más detalles aquí: http://source.android.com/source/index.html

Cuestiones relacionadas