我已使用此命令将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
更改权限,但徒劳无功。
我该如何克服这个问题?感谢。
答案 0 :(得分:4)
您可以找到tcpdump here的Android版本。这种构建有点过时,仅与ARM设备相关。您应该按these instructions从official source构建二进制文件。
有detailed instructions个在Android上运行 tcpdump 的方法。请注意,您需要一个有根设备才能开始使用。
答案 1 :(得分:1)
您应该通过Android NDK
中的GCC
来编译二进制文件
答案 2 :(得分:1)
尝试以下命令:
输入此命令c:\ProgramFiles\Android\android-sdk\platform-tools\adb shell tcpdump
for linux:
adb shell chmod 6755 /data/local/tmp/tcpdump
并通过此链接以便更好地理解:
答案 3 :(得分:0)
我在尝试将另一个二进制文件运行到android模拟器时遇到了同样的错误。错误来自编译。
您必须为ARM目标进行交叉编译,这意味着您需要一个特定的工具链,例如arm-linux-androideabi。
为此,您需要
然后你可以运行make命令。您可能希望在构建之前将-static添加到LDFLAGS。
最后使用file命令检查你的二进制文件是否编译得很好。您应该在打印结果中查找ARM。
如果Makefile没有处理CROSS_COMPILE var,你可以尝试用参数CC和AR手动设置“$ CROSS-COMPILE”gcc和“$ CROSS-COMPILE”ar