【问题标题】:OS X KEXT printing pointers result in <ptr>OS X KEXT 打印指针导致 <ptr>
【发布时间】:2016-01-30 12:04:50
【问题描述】:

因此,使用 "%p" 执行标准 printf 来打印指针,会导致打印文字字符串 ""。如:

kernel[0]: getvnode zp <ptr> with vp 0 zfsvfs <ptr> vfs <ptr>

这有点乏味。我想了一会儿它可以连接到 SIP,因为它是从 El Capitan 开始的。但是我的 csrutil 显示“调试”被禁用。 (KEXT VM 已禁用所有 SIP)。

我猜苹果在这方面有什么想法,但我希望能够调试 :)

【问题讨论】:

  • 嗯。我猜这是为了避免将内核指针值泄漏到用户空间,这可能会使 ASLR 毫无价值。

标签: c macos kernel


【解决方案1】:

我被告知将“-show_pointers”传递给 nvram 的引导参数,我可以确认这会使一切按预期工作。

【讨论】:

  • 自 10.11.2 起,这将不再有效,因为 Apple 已决定将其删除。您应该运行“开发”内核(或调试内核)并使用 sysctl“hide_kernel_pointers”。或者在这里详细介绍一些 nvram 黑客github.com/openzfsonosx/zfs/issues/461#issuecomment-177052785
  • 你能提供一些资源来使用开发内核和使用那个sysctl吗?
猜你喜欢
  • 1970-01-01
  • 2017-10-20
  • 2020-04-28
  • 2021-04-06
  • 2021-01-03
  • 2011-07-09
相关资源
最近更新 更多