error: only position independent executables (PIE) are supported.

在android原生程序的动态调试,的时候

运行 adb shell ./android_server 出现下面的错误

error: only position independent executables (PIE) are supported.

经过google 发现:大家的回答俩种情况

1. 你的Android是5.0以上的吧,或者IDA pro是6.6及以下的,Android5.0以上的编译选项默认开启了pie,在5.0以下编译的原生应用不能运行,要么你Android刷机降版本,要么用IDA pro6.7 6.8的android_server。还有一个办法:http://forum.xda-developers.com/google-nexus-5/development/fix-bypassing-pie-security-check-t2797731

2. linker通过检测可执行程序elf header中的e_type字段判断是否PIC,只需要将android_server的elf header字段中的e_type改为ET_DYN(3)即可。具体办法:

1. 使用hexedit或其他二(十六)进制编辑工具打开android_server

2. 将第17个字节处的02改成03,保存退出 push到手机,即可运行。

经过测试第二种方法可行,

但是在debug的时候,却提示

[6] Accepting connection from 127.0.0.1...
Failed to find r_debug in /system/bin/linker
error: only position independent executables (PIE) are supported.

我觉得,可能还是那个问题,现在去下载,ida 6.8 每天测试一下

你可能感兴趣的:(error,pie,IDA,调试原声程序)