在参考Android利用tcpdump和wireshark抓取网络数据包使用tcpdump的时候,会提示如下信息:
λ adb shell /data/local/tcpdump
"/data/local/tcpdump": error: Android 5.0 and later only support position-independent executables (-fPIE).
什么是PIE:
位置独立的可执行区域(position-independent executables)
为什么要关闭PIE:
Android L(以上)中限制每个app只能在sd卡的特定文件夹内写入文件而不能读取整个sd卡,这样便于管理app。
解决方法
执行该native可执行文件,输出位置放到同目录就好了。
λ adb shell
phone:/ # cd data/local/
phone:/data/local # tcpdump -n -s 0 > log.txt