解决了:这个解决方案是调用个性(0x40000)。请参阅下面评论中的详细信息。
ASLR标志在ELF文件中的位置?我需要为一个特定的库(.so)禁用ASLR。我试过使用objdump,但无法找到如何使用objdump。
我不能使用/proc,因为它似乎不能在我的Android4.4.4上工作,所以我试图修改二进制文件。
编辑:我编译了以下内容:
#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发布于 2015-10-13 03:41:19
我需要为一个特定的库(.so)禁用ASLR。
您不能(而且ASLR不驻留在ELF文件中的任何地方,因为它不是ELF的属性,而是内核的属性)。
您可以做的是禁用对给定进程的随机化。setarch -R是你的朋友。
发布于 2015-10-12 13:05:32
https://stackoverflow.com/questions/33080909
复制相似问题