解決済み: 解決 策は、パーソナリティ (0x40000) を呼び出すことでした。以下のコメントの詳細を参照してください。
ASLR フラグは ELF ファイル内のどこにありますか? 特定のライブラリ (.so) の ASLR を無効にする必要があります。objdump を使用してみましたが、その方法がわかりませんでした。
Android 4.4.4 では動作しないように見えるため、/proc を使用できないため、バイナリを変更しようとしています。
編集: 私は以下をコンパイルしました:
#include <stdio.h>
void* getEIP()
{
return __builtin_return_address(0) - 0x5;
}
int main(int argc, char** argv)
{
printf("EIP located at: %p\n", getEIP());
return 0;
}
ASLR なし (PIE):
arm-linux-androideabi-gcc.exe code.c -o noPIE --sysroot=%NDK%\platforms\android-3\arch-arm
ASLR (PIE) を使用:
arm-linux-androideabi-gcc.exe -fPIE -pie code.c -o withPIE --sysroot=%NDK%\platforms\android-3\arch-arm
ただし、noPIE バイナリは実際にはランダム化されていません。
# cat /proc/sys/kernel/randomize_va_space
2