【发布时间】:2016-07-04 21:06:25
【问题描述】:
如Programmatic MSIL injection 或http://www.codeproject.com/Articles/463508/NET-CLR-Injection-Modify-IL-Code-during-Run-time 所示,您可以在运行时使用一些棘手的注入来修改 IL 代码。
我的问题是:如何防止这种情况发生?例如,如果有人使用它来绕过安全功能,我该如何避免该安全漏洞?
【问题讨论】:
-
这个问题根本上是有缺陷的。如果可以通过修改 MSIL 来绕过某些安全功能,那么也可以在不修改 MSIL 的情况下绕过相同的安全功能。您想到了什么安全功能?提供详细信息,然后答案可以解释如何完全防止绕过,或者为什么永远无法完全防止绕过。
-
有趣的问题,欢迎了解为什么有些企业的唯一目的是阻止这些类型的措施。我没有答案,但我可以说,大约 15 年前,我曾经为各种邪恶目的使用 SoftICE 调试器破解软件获得了很多乐趣。我当时学到的教训是“他们(我们)总能找到方法!”。这些天来要困难得多,但它很快就会在烦人的合法用户和防止不良行为之间取得平衡。
-
究竟预防什么?用户能否在他们的机器上运行任何代码或以任何他们想要的方式修改二进制文件?在您自己的服务器上运行代码是唯一可用的选择,除非您有能力构建类似于 Xbox/PS 的封闭系统
-
例如用于登录目的。您登录一个应用程序,该过程通过 ssl、哈希验证、防篡改、防调试等进行保护。但现在“坏人”所要做的就是登录普通帐户然后解锁应用程序功能通过在运行时注入 msil。我想防止这种情况发生。