高版本android运行elf文件出错 error: only position independent executables (PIE) are supported

源地址:https://www.ctvol.com/asreverse/8383.html

在高版本android中ndk-build C文件的时候在真机上运行的时候,会出现下面的情况。我们应该怎么去避免这种情况,在网上找了很多方法基本不行,有幸看到一篇文章的结合起来即可:

root@hamhead:/data/local/tmp # ./maopao
./maopao
error: only position independent executables (PIE) are supported.

pie

这个主要是Android5.0以上的编译选项默认开启了pie,在5.0以下编译的原生应用不能运行,会出现 error: only position independent executables (PIE) are supported提示;

解决方法:

1、使用安卓5.0以下的系统来进行安装执行

#一般的安卓目录:/data/local/tmp
#adb shell 切换真机操作:
#su超级权限;
#chmod 777 xxx修改文件权限

2、用IDA6.6+版本即可

3、使用WinHex.v18.7-SR2.x64 (密码:e7zl)打开生成的elf文件,然后从头数到第17个字符,一般默认是02,修改成03即可;

winhex修改

注意:第三种方法如果还出现问题话,需要在Android.mk文件中加上

LOCAL_CFLAGS += -pie -fPIE
LOCAL_LDFLAGS += -pie -fPI

重新ndk-build之后,将字符修改掉,然后adb push到手机上即可;

运行成功

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值