您要查找的列表可由您轻松生成,如下所示:
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);
}
在美洲狮身上,这会产生:
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 正在努力保持随机化值秘密,并且在报告内核地址时不会泄漏它,因此越狱者不会弄清楚他们可以跳转到/覆盖的位置 - 这对他们来说大部分时间都有效)
希望这会有所帮助,
TG