5

我已使用此命令将 tcpdump 二进制文件添加到我的 android 设备

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

二进制文件已成功添加到 android 设备。但是,当我尝试从 adb shell 执行 tcpdump 文件时,使用以下命令

./adb shell
cd data/local
./tcpdump

它给了我这个错误

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

我也尝试过使用更改权限,chmod 777 tcpdump但徒劳无功。我该如何克服这个问题?谢谢。

4

4 回答 4

4

您可以在此处找到 Android 版本的 tcpdump 。此版本有些过时,仅适用于 ARM 设备。您应该按照这些说明官方源代码构建二进制文件。

有关如何在 Android上运行tcpdump详细说明。请注意,您需要一个有根设备才能开始。

于 2012-10-04T21:30:37.310 回答
1

GCC您应该通过Android NDK编译二进制文件

于 2012-10-04T07:25:58.217 回答
1

尝试以下命令:

输入这个命令c:\ProgramFiles\Android\android-sdk\platform-tools\adb shell tcpdump

对于 Linux:

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

并通过此链接更好地理解:

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

于 2012-10-04T07:49:37.040 回答
0

尝试在 android 模拟器中运行另一个二进制文件时遇到了同样的错误。错误来自编译。

您必须针对 ARM 目标进行交叉编译,这意味着您需要特定的工具链,例如 arm-linux-androideabi。

为此,您需要

  • export CROSS_COMPILE=arm-linux-androideabi- (你的工具链以'-'结尾,没有gcc)
  • 出口 ARCH=arm
  • 将工具链添加到您的 PATH

然后你可以运行 make 命令。您可能希望在构建之前将 -static 添加到 LDFLAGS。

最后,使用 file 命令检查您的二进制文件是否已编译好。您应该在打印结果中查找 ARM。

如果 Makefile 不处理 CROSS_COMPILE var,您可以尝试使用“$CROSS-COMPILE”gcc 和“$CROSS-COMPILE”ar 手动设置参数 CC 和 AR

更多细节在这里:http: //source.android.com/source/index.html

于 2013-05-06T12:53:44.993 回答