ios - 在 MacOS X 和 iOS 中 ASLR 到底随机化了什么

标签 ios macos security osx-lion ios6

有没有人有指向最新 Mac OS (10.7) 和 iOS (6.0) 的文档的链接?

我是说。我想看一个列表(类似的东西)

  • 代码段(A、B、C情况下)

  • 堆栈(始终)

  • 数据段(从不)

最好是每个事物有多少位随机化。

我能找到的是:“MacOS Lion 实现了完整的 ASLR”,而在其他地方“完整的 ASLR 是针对不同的操作系统以不同的方式实现的”,这显然不是很有用。

最佳答案

您要查找的列表可以很容易地由您生成,如下所示:

int global_j = 0;

void main ()
{

    char *h = malloc(10);
    int j = 0;

    printf ("Globals are : %p, text is %p, stack is %p, heap is %p\n",
        &global_j, main, &j, h);

}

在 mountain lion 上,这会产生:

bash-3.2# ./a
Globals are : 0x10fa55020, text is 0x10fa54eb0, stack is 0x7fff501ab864, heap is 0x7f9b294000e0
bash-3.2# ./a
Globals are : 0x106bbe020, text is 0x106bbdeb0, stack is 0x7fff59042864, heap is 0x7f9752c000e0
bash-3.2# ./a
Globals are : 0x108673020, text is 0x108672eb0, stack is 0x7fff5758d864, heap is 0x7fecc34000e0
bash-3.2# ./a
Globals are : 0x1059d2020, text is 0x1059d1eb0, stack is 0x7fff5a22e864, heap is 0x7f8f81c000e0

显示全部随机化(请注意,由于对齐限制,页面内的偏移量不会随机化,但您仍然会得到一些 16-20 位随机化,正如 4-5 位十六进制数字所暗示的那样) .

  • 内核:从 Mountain Lion 和 iOS6 开始,内核通过在加载时使用 vm_kernel_slide 值“滑动”来随机化。并非所有 vm 页面都以这种方式滑动,但在大多数情况下,这是通过存储一些常量值(也可以通过系统调用 #439,kas_info 读取的,在 ML 而不是在 iOS 上读取:Apple 正在努力保持随机化值 secret ,并且在报告内核地址时不会泄露它,因此越狱者不会弄清楚他们可以跳转到/覆盖的位置 - 这在大多数情况下都适用)

希望对您有所帮助,

TG

关于ios - 在 MacOS X 和 iOS 中 ASLR 到底随机化了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12824045/

相关文章:

security - HTML5 是否允许您在浏览器中与本地客户端文件进行交互

ios - CoreData 一对多只使用一个实体

javascript - 了解 Node.js 服务器目录结构和安全性

ios - 当我使用快速代码触摸搜索栏外部时如何关闭键盘

Rails 中的 mysql gem 安装错误

macos - 在沙盒中写入/卷的权利

cocoa - NSTimer - 设置普通 Vanilla - 不触发

php - 如何防止 PHP 中的 SQL 注入(inject)?

iphone - Xcode 4 Cocoa 静态库项目中的 "Other C Flags"

ios - 在 uiimagePickerController IOS 7 中以编程方式删除状态栏