【问题标题】:lldb read memory pointerlldb 读取内存指针
【发布时间】:2015-08-11 07:25:13
【问题描述】:

可以很容易地读取另一个地址指向的位置的内存。

例如$r0 = 0x15942600 在这个内存地址有AC B8 EC 14

现在要读取 0x14ecb8ac 处的内存,我必须这样做:

mem read $r0
mem read 0x14ecb8ac

有什么方法可以轻松完成mem read ($r0) 以便我可以轻松读取内存?

我试过这个:

(lldb) mem re $r1
0x007db594: 7c d5 e7 15 00 00 00 00 e4 b5 7d 00 70 f6 9a 36

(lldb) mem read 0x15e7d57c
0x15e7d57c: 74 69 63 72 63 74 37 35 00 00 63 61 00 00 49 39

(lldb) mem read '*(char **)$r1'
error: invalid start address expression.
error: address expression "*(char **)$r1" evaluation failed

【问题讨论】:

  • 我没有带有 r0 寄存器的架构来测试这个,但mem read '*(char **)$r0' 应该可以工作。
  • 嘿@MarkPlotnick 我试过了,不行。
  • 有趣。目标是什么架构,lldb 是什么版本?
  • p *(int **)$r1 会报错吗?
  • 嗯。所以 *(char **) 给出错误但 *(int **) 有效?

标签: memory reverse-engineering lldb


【解决方案1】:

感谢@MarkPlotnick 这工作,

mem read '*(int **)$r1'

如果需要读取某个偏移量的mem地址,可以这样做,

mem read '*(int **)($r1+4)'

针对 ARMv7 和 ARM64 的 Xcode 调试进行了尝试和测试

【讨论】:

  • mem read '*(int*)$r1'不是更正确吗?在这种情况下,您读取通过取消引用$r1 给出的地址的内存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-06
  • 2023-02-02
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
相关资源
最近更新 更多