【问题标题】:Debug a release version of an OSX App via LLDB通过 LLDB 调试 OSX 应用程序的发布版本
【发布时间】:2020-08-07 02:55:12
【问题描述】:

我正在尝试通过 LLDB 调试 OSX 桌面应用程序 (Mac os catalina 10.15.3)。

lldb path/to/Electron.app
>>> Current executable set to 'path/to/Electron.app' (x86_64).

之后我可以成功地向调试器添加断点,但是当我尝试使用 runprocess launch 运行应用程序时,它总是给我:

error: process exited with status -1 (Error 1)

附加到 pid 的另一个问题。它给了我一个错误,无法附加到进程。

lldb -p 41324
>>> error: attach failed: Error 1

为什么我不能在调试器中反汇编程序?

【问题讨论】:

    标签: c assembly reverse-engineering lldb cracking


    【解决方案1】:

    在 macOS 上,调试器只能附加到一个进程,如果该进程已将自己标记为 - 具有适当的权利 - 愿意被调试。 Xcode 通常使用此权利构建 Debug 构建,而 Release 构建则没有它。当 lldb 尝试附加到不想被调试的进程时,这就是您看到的错误。这是一个低信息错误,因为拒绝附加的代理与 lldb 隔离,并且无法向我们提供更多信息。

    但是请注意,您不需要运行程序来反汇编它。当您加载二进制文件以及调试二进制文件时,反汇编命令也有效。

    【讨论】:

    • 我明白了。其实我想看看程序是如何使用RAM布局的,所以我想破解程序。你有什么想法可以和我分享破解 OSX 的吗……我也会去寻找的,谢谢?
    【解决方案2】:

    我只是找到调试的方法,不限制任何 root 可访问性... 这是关于苹果的系统完整性保护 https://support.apple.com/en-us/HT204899

    如果您愿意禁用系统完整性保护,请小心并知道您在做什么。

    这是有关如何禁用系统完整性保护的文章 https://gist.github.com/gravitylow/fb595186ce6068537a6e9da6d8b5b96d

    【讨论】:

      猜你喜欢
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      • 2010-09-07
      • 1970-01-01
      • 2016-03-05
      • 2020-05-03
      • 2013-04-30
      相关资源
      最近更新 更多