关闭aslr oracle,地址空间布局随机化 (Address Space Layout Randomization, ASLR)

地址空间布局随机化 (Address Space Layout Randomization, ASLR)

ASLR 是 Oracle Solaris 系统的一种功能,利用此功能可以随机生成进程地址空间(例如栈、库和基于 brk 的堆)的关键部分的起始地址。缺省情况下,为显式标记为需要 ASLR 的二进制文件启用 ASLR。以下命令提供有关 ASLR 状态的信息:% sxadm infoEXTENSION STATUS CONFIGURATION

aslr enable (tagged-files) enable (tagged-files)

ld(1) 命令的 –z 选项用于标记需要使用 ASLR 的新建目标文件。用法如下所示:

ld -z aslr[=mode]

其中 mode 可设置为 enable 或 disable。如果未指定 mode,则假定使用 enable。

以下示例说明了如何使用 –z 选项创建启用了 ASLR 的可执行文件:% cat hello.c

#include

int

main(int argc, char **argv)

{

(void) printf("Hello World!\n");

return (0);

}

% cc hello.c -z aslr

ASLR 标记由目标文件动态部分中的条目提供,该条目可以使用 elfdump(1) 进行检查。% elfdump -d a.out | grep ASLR

[28] SUNW_ASLR 0x2 ENABLE

elfedit(1) 命令可用于在现有目标文件中添加或修改 ASLR 动态条目。% cc hello.c

% elfedit -e 'dyn:sunw_aslr enable' a.out

% elfdump -d a.out | grep ASLR

[29] SUNW_ASLR 0x2 ENABLE% elfedit -e 'dyn:sunw_aslr disable' a.out

% elfdump -d a.out | grep ASLR

[29] SUNW_ASLR 0x1 DISABLE

给定进程对 ASLR 的要求是在该进程启动时建立的,该进程一旦启动就无法对此要求进行修改。因此,ASLR 标记仅对进程中的主要可执行目标文件有意义。

pmap(1) 实用程序可用于检查进程的地址映射。使用该实用程序观察启用了 ASLR 的可执行文件的映射时,会看到用于栈、库映射和基于 brk 的堆的具体地址在每次调用时均不同。

sxadm(1) 命令用于控制系统的 ASLR 缺省行为。显式标记为禁用 ASLR 的二进制文件优先于 sxadm 建立的系统缺省行为。

调试和 ASLR

调试期间,地址空间随机化可能会出现问题。某些调试需要重复调用同一程序时使用相同的地址映射。您可以采用以下方式之一禁用 ASLR:临时在系统范围内禁用 ASLR% sxadm exec -s aslr=disable /bin/bash

使用 ld 或 elfedit 命令将相关二进制文件标记为禁用 ASLR

建立禁用 ASLR 的 shell,从中执行调试操作% sxadm exec -s aslr=disable /bin/bash

注 -此 ASLR 修改不会应用到 SUID 或特权二进制文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值