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

在高版本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到手机上即可;

运行成功

该文章属于:计算机技术网原创

转载请注明标题:高版本android运行elf文件出错 error: only position independent executables (PIE) are supported-计算机技术网

转载请注明出处:https://www.ctvol.com/asreverse/8383.html

(3)
上一篇 2020年4月13日
下一篇 2020年4月13日

精彩推荐