【发布时间】:2020-10-07 10:16:12
【问题描述】:
我希望开发一个“安全”应用程序,作为一种安全缓解措施,我希望能够发现当前运行的应用程序是否正在使用调试器(GDB、LLDB...);如果检测到则中止。
如何检测静态链接 C 应用程序的监控?
- 遍历 /proc 树
- ...
【问题讨论】:
-
FWIW,你只会阻止那些不知道自己在做什么的人。当您让某人在他们的计算机上运行某些东西时,他们将能够准确地弄清楚您的代码在做什么。这是他们的内核、他们的库和他们的硬件。你可以让它变得更难,但你无法阻止它。
-
一个软件在数学上不可能检测它是否在一个完美的仿真器中运行,无论是否在调试器中。你想要的都是不可能的。
-
使程序更难调试并不会提高安全性,反之亦然。越难调试,就越不容易发现安全漏洞。我建议您在开发安全敏感的应用程序之前学习更多基础知识。
-
安全关乎层级,很难阻止一个坚定的人,但这本身并不是没有任何限制的借口。很有可能确定一个进程是否已被调试器分叉,并在这种情况下关闭应用程序......这是一层防御,一个权宜之计,而不是治愈。
-
@BenCrowhurst 不,这是不可能的。调试器可以告诉您的软件任何事情,而软件无法检测到这是否是伪造的。这不仅困难,而且是不可能的。试图限制所有者对您的软件做某事是不可能的。看来您正试图通过默默无闻来实现安全性。请停止你正在尝试做的事情。你不明白你在做什么。
标签: c linux debugging secure-coding piracy-prevention