【问题标题】:Is there a way to disable or disallow gdb or lldb access to my compiled library?有没有办法禁用或禁止 gdb 或 lldb 访问我的编译库?
【发布时间】:2014-10-02 00:36:47
【问题描述】:

基本上,我想做的就是确保没有人能够单步执行敏感代码。

我可能在某个地方读到过,只是我找不到我在哪里读到的。

谢谢!

【问题讨论】:

  • 可能会混淆调试器,但您无法阻止其他人破坏您的二进制文件
  • @BryanChen 如何混淆调试器?我会接受的:)。

标签: c gdb lldb


【解决方案1】:

没有。从根本上说,任何可以运行目标代码的人都可以在任何程度上对其进行检查。

如果您不希望他们能够运行目标代码,则必须在您选择的机器上运行它,并且只能通过网络与用户交互。

所有声称禁用调试器的技术都只是利用漏洞,这些漏洞通常在几个月后发布下一个调试器版本时得到修复;甚至那些对通过 VM 进行调试也是完全没用的。

【讨论】:

  • “所有声称禁用调试器的技术都只是利用错误”——你过于笼统了。有许多技术不会利用任何错误,但会使调试变得更加困难。不过,它们都没有使调试成为不可能,所以我同意你回答的精神。
  • @EmployedRussian 除了在构建过程中删除调试符号之外,您能否说明如何使调试更加困难?谢谢!
【解决方案2】:

我想做的是确保没有人能够通过敏感代码。

“没有人”部分是不可能的:无论您尝试什么,一个老练的攻击者都可以做到。

有许多技术可以阻止不太成熟的攻击者,this book 展示了其中的一些。

一般来说,这些技术不值得你花时间——它们使你的软件的现场支持变得困难,它们不能阻止老练的攻击者(你只需要一个成功就可以使你的努力变得无用),而且你的软件通常是一开始就没那么有趣。

如果它足够有用,人们就会购买它。如果不是这样,添加保护将使其变得更没用。

【讨论】:

    猜你喜欢
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2010-11-17
    • 2012-05-14
    • 2021-10-18
    • 1970-01-01
    • 2019-03-12
    相关资源
    最近更新 更多