gpt4 book ai didi

cocoa - 如果我知道寄存器名称,如何简化内存读取

转载 作者:行者123 更新时间:2023-12-03 17:01:25 25 4
gpt4 key购买 nike

我正在尝试获取调用方法的参数值:

@selector(processEditingForTextStorage:edited:range:changeInLength:invalidatedRange:)

我知道值是如何存储的:

  • $rdx - 第一个参数
  • $rcx - 第二个参数
  • $r8 - 第三个参数(NSRange.location 8 字节)
  • $r9 - 第三个参数(NSRange.length 8bytes)
  • $rbp+0x10 - 第四个参数(NSUInteger 8 字节)
  • $rbp+0x18 - 第五个参数(NSRange.location 8 字节)
  • $rbp+0x20 - 第五个参数(NSRange.length 8bytes)

这是正确的吗?

第二个问题,如果我知道整数存储在哪里,是否有更简单的方法如何打印 NSRange?类似于“po *(NSUInteger *)($rbp+0x20)”

我收到错误:

(lldb) po *(NSRange *)($rbp+0x18)
error: incomplete type 'NSRange' (aka '_NSRange') where a complete type is required
forward declaration of '_NSRange'

必填

(lldb)  memory read --size 8 --format x --count 1 ($rbp+0x20)
0x7fff5e348660: 0x0000000000000008
(lldb) memory read --size 8 --format x --count 1 ($rbp+0x18)
0x7fff5e348658: 0x000000000000000a
(lldb) memory read --size 8 --format x --count 1 ($rsp+0x8)
0x7fff5e348438: 0x000000000000000a
(lldb) memory read --size 8 --format x --count 1 ($rsp+0x10)
0x7fff5e348440: 0x0000000000000008

最佳答案

有模仿GDB命令的各种命令的缩写。其中之一是x(“eXamine memory”),它是“memory read”的缩写。您可以添加斜杠和格式说明符以使用特定格式。例如,x/xg 将 8 字节值格式化为十六进制。参数是要检查的地址的表达式。

所以:

x/xg $rsp+0x10

关于cocoa - 如果我知道寄存器名称,如何简化内存读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46809400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com