【发布时间】:2019-10-10 02:19:36
【问题描述】:
所以当我在 lldb 中输入命令图像查找时,我没有得到任何输出。顺便说一句,我正在使用调试服务器。我在谷歌上搜索了这个问题,没有找到任何东西。
【问题讨论】:
标签: ios assembly arm reverse-engineering lldb
所以当我在 lldb 中输入命令图像查找时,我没有得到任何输出。顺便说一句,我正在使用调试服务器。我在谷歌上搜索了这个问题,没有找到任何东西。
【问题讨论】:
标签: ios assembly arm reverse-engineering lldb
通常这意味着地址是堆栈或堆内存,所以它不在图像列表中。 vmmap 工具(从终端运行)是查看应用程序中分配内存的好方法。像这样运行它:
$ vmmap <PID> <ADDRESS>
如果这是分配的内存,vmmap 会告诉你它是如何分配的。 lldb 有一个memory region 命令,但来自 vmmap 的数据目前更有用...
您可以使用 macOS malloc 库的堆栈日志记录功能来跟踪它的分配位置。您必须在您的环境中使用 MallocStackLoggingNoCompact 启动应用程序。然后你可以在终端中使用malloc_history,或者在 lldb 中使用:
(lldb) env MallocStackLoggingNoCompact=1
(lldb) run
...
(lldb) command script import lldb.macosx.heap
(lldb) malloc_info -s 0x100300000
0x0000000100300000: malloc( 112) -> 0x100300000
stack[0]: addr = 0x100300000, type=malloc, frames:
[0] 0x00007fff68e0c601 libsystem_malloc.dylib`malloc_zone_malloc + 140
[1] 0x00007fff68e0c558 libsystem_malloc.dylib`malloc + 21
[2] 0x0000000100000f59 foo`main + 25 at foo.c:7:10
[3] 0x00007fff68c52341 libdyld.dylib`start + 1
【讨论】: