【问题标题】:How to reinstall / reset lldb?如何重新安装/重置 lldb?
【发布时间】:2020-06-28 07:55:24
【问题描述】:

我的 LLDB 似乎被插件破坏了。它的输出看起来有点奇怪:

Process 771 stopped
* thread #1, stop reason = signal SIGSTOP
    frame #0: 0x0000000100ac1000 cy-5Xn7dn.dylib`_dyld_start
cy-5Xn7dn.dylib`_dyld_start:

我不知道cy-5Xn7dn.dylib 是什么,我想重新安装/重置我的 LLDB 来解决这个问题。有没有办法重新安装或重置它?

更新:

这是otool信息:

$ otool -l /usr/bin/lldb|grep " name"
         name /usr/lib/dyld (offset 12)
         name /usr/lib/libxcselect.dylib (offset 24)
         name /usr/lib/libSystem.B.dylib (offset 24)

【问题讨论】:

  • 移除插件?
  • @trojanfoe 我已经通过删除.lldbinit 文件中的所有内容删除了该插件。执行此操作后,该插件似乎未加载。但奇怪的输出仍然存在。
  • 你重新启动了shell?
  • @trojanfoe 是的,我也重新启动了我的计算机,但它没有工作。
  • 你可以尝试删除 Xcode 然后我猜,使用类似 AppCleaner 的东西,然后重新安装它。这是蹩脚的建议。

标签: ios macos lldb


【解决方案1】:

看起来有些东西正在将普通动态加载器的替代品加载到您正在运行的程序中?然而,我不认为这是 lldb 正在做的事情。它只是将它从动态加载器获取的动态库信息转发给您。

我会先找到那个名字奇怪的库,看看它是否能告诉你什么。您可以使用 lldb ‘image list ’ 命令获取库的完整路径。那是在一个可以解释它是什么的地方吗?

可以在主二进制文件中使用 LC_DYLINKER 命令指定备用动态加载程序。您可以检查您正在调试的程序,看看它是否正在这样做。

DYLD_INSERT_LIBRARIES 环境变量也可用于强制程序加载其他一些 dylib。您还应该确保没有设置。您可以在lldb中使用'expr(char *)printenv(“DYLD_INSERT_LIBRARIES”)'来直接检查它在应用程序中的内容。

【讨论】:

  • 注意,加密二进制文件的工具使用特殊用途的加载器来解密加载代码的情况并不少见。也许您正在调试一个执行此操作的程序?
  • 是的,我正在做一些 iOS 逆向工程研究。谢谢你的回答,我稍后再试试。
  • 这里是image list -o -f 结果:[ 1] 0x0000000104698000 /Library/Caches/cy-JXJcTY.dylib(0x0000000104698000) 但我在/Library/Caches 目录下找不到dylib。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 2013-07-19
  • 2021-06-17
  • 2016-06-02
  • 2013-08-24
相关资源
最近更新 更多