Android 无法从adb外壳运行可执行文件

Android 无法从adb外壳运行可执行文件,android,shell,adb,tcpdump,Android,Shell,Adb,Tcpdump,我已经使用这个命令将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 我还尝试使

我已经使用这个命令将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
更改权限,但没有成功。
我如何克服这个问题?谢谢。

您应该通过
GCC
从编译二进制文件,请尝试以下命令:

输入此命令
c:\ProgramFiles\Android\Android sdk\platform tools\adb shell tcpdump

对于linux:

   adb shell chmod 6755 /data/local/tmp/tcpdump
并通过此链接更好地了解:


您可以找到tcpdump的Android版本。这个版本有些过时,只与ARM设备相关。您应该按照以下步骤从中构建二进制文件


关于如何在Android上运行tcpdump有很多方法。请注意,您首先需要一个根设备。

我在尝试将另一个二进制文件运行到android emulator时遇到了相同的错误。错误来自于编译

您必须为ARM目标交叉编译,这意味着您需要一个特定的工具链,例如ARM linux AndroidABI

要做到这一点,你需要

  • export CROSS_COMPILE=arm linux AndroidABI-(您的工具链以“-”结尾,不带gcc)
  • 导出ARCH=arm
  • 将工具链添加到路径中
然后可以运行make命令。在构建之前,您可能需要将-static添加到LDFLAGS

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

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


此处的更多详细信息:

chmod会给您带来什么错误?你可以把它推到SD卡上,把它放到那里,然后移动它(我想)。你是root吗?我使用android终端模拟器。它配备了具有以下功能的busybox:tcpdump@Pepelac我在我的ubuntu桌面上使用这些命令编译了它。/configure,make,sudo make install。然后我在android设备上推送了tcpdump文件。@njzk2 chmod在我的桌面和adb外壳上没有给我任何错误。它执行得很好。@HarshalKshatriya是的,它没有帮助。因为你不能在用standart GCC编译的android文件上运行。你应该从NDK使用它来编译32位ELF文件…我使用ubuntu。但我还是这样尝试过。/adb shell/data/local/tcpdump。它给了我上面提到的同样的错误。我已经发布了答案,请检查并让我知道。。。输入tcpdump文件的路径。此外,请检查此链接。它的一部分解释了如何使用源代码为arm设备构建二进制文件。帮了大忙。tcpdump的链接版本是4.0版,有点旧。您可以在此处下载ARM版本4.3: