aslr

检查应用程序是否在启用 ASLR 的情况下运行
aslr

检查应用程序是否在启用 ASLR 的情况下运行

在我的系统上,我有多个应用程序正在运行,使用: /bin/setarch linux32 -R <application + params> 或者: /bin/setarch linux32 <application + params> 为了启用/禁用地址空间布局随机化。 有没有一种方法可以查看特定应用程序是否使用 ASLR,而无需查看内存映射? ...

Admin

linux在execve一个ELF时如何决定加载地址和入口点?
aslr

linux在execve一个ELF时如何决定加载地址和入口点?

当linuxexecve()有一个ELF时,它会将该ELF映射到进程的内存空间中,并从入口点开始运行代码。但是内核是如何决定ELF的加载地址和入口点的呢? 如果禁用 ASLR,它将查找.p_vaddr每个 PT_LOAD 段并使用.e_entryELF 标头作为入口点。 但是如果启用 ASLR 会怎样呢?内核是否会简单地向上述所有内容添加随机移位,但保持它们的相对位置? ELF的内容会影响内核的行为吗?就像 PT_LOAD 段的最小值.p_vaddr是零还是非零?比如.e_typeELF header是ET_DYN还是ET_EXEC? 我特别谈论 x...

Admin

Linux 中的内存随机化
aslr

Linux 中的内存随机化

我创建了一个简单的 C 程序,每次将其加载到 GDB 中时,我都会看到分配给程序指令的相同内存地址。例如,函数what()始终加载到内存位置 0x000055555555472d。事实上,每次执行的堆栈都是完全相同的(不仅仅是堆栈的内容,还有 rsp 指向的内存地址。 我知道可以通过将“/proc/sys/kernel/randomize_va_space”设置为 0 来在 Linux 中禁用 ASLR,但我的 Debian 系统中的值为 2。 root@Sierra ~ % cat /proc/sys/kernel/randomize_va_space...

Admin