2

有大量用于 C# 程序集的分析器和静态代码分析器。

只是想知道有没有什么方法可以防止被分析,因为它确实让我在被剥夺时感到有些紧张。

我已经搜索了整个互联网和stackoverflow。我的奇迹似乎没有。

我所拥有的只是一些更可怕的标题,比如这些(对不起,新用户不能发布超链接,请谷歌它们):

“程序集操作和 C#/VB.NET 代码注入”

“如何将托管 .NET 程序集 (DLL) 注入另一个进程”

是我太担心还是怎么的?

顺便说一句,我们正在使用 C# 构建一个新的 winform 客户端,供银行客户进行在线交易。我们不应该以 winform 的方式执行此操作,还是应该使用 Delphi、C++ 等其他语言?目前我们有一个用 C++ Builder 构建的 winform 客户端。

4

6 回答 6

3

如果通过分析你的意思是有人反编译代码并查看它,那么 VS Pro 及更高版本附带的 Dotfucstor 是一个简单的(免费)工具,可以在这里提供帮助。有一个功能更全面(但已付费)的版本可以做更多事情。

为了防止有人篡改您部署的组件,请使用Strong Names

于 2009-05-21T15:59:52.340 回答
3

有意愿就有办法,无论是托管代码还是本机程序集。关键是将重要信息保留在 SERVER 端并保持对其的控制。

于 2009-05-21T16:03:41.910 回答
2

几乎任何应用程序都可以“分析和注入”。有些比其他的多。这就是为什么您从不相信用户输入的原因。您在服务器端完全验证用户的请求,确保您不会受到缓冲区溢出、sql 注入和其他攻击媒介的影响。

混淆器会使 .NET 程序集更难分析。使用安全密钥对程序集进行强命名会使更改代码变得更加困难。但是,就像数字世界中的其他一切一样,有人可以利用漏洞并绕过您设置的任何保护措施。

于 2009-05-21T16:04:29.413 回答
2

您需要决定反对您要保护的内容的第一件事是什么?混淆器仅用于保护“秘密武器”算法,但攻击者可以简单地提取代码并将其用作黑盒。在 99% 的情况下,混淆器都是浪费金钱。如果攻击者具有物理访问权限,那么您无能为力。

于 2009-05-21T16:08:58.907 回答
2

如果最终用户以管理权限运行,那么他们将能够附加调试器,并修改您的代码,包括目标帐户详细信息。我当地的友好银行给了我一个芯片和密码阅读器,我必须输入目标帐户的最后 n 位数字,它会用我的银行卡芯片对其进行散列/加密;然后,我将设备中的代码输入银行的 Web 应用程序,该应用程序也可以在银行端进行检查。这减轻了“中间人”类型的攻击......

于 2009-05-21T16:25:30.557 回答
1

安全性只能在您物理控制访问的系统上实现,即使那样也不能保证,只能实现。您必须假设未在您控制的系统上执行的任何代码都可能并且将会受到损害。正如 Rowland Shaw 所说,对于金融机构来说,最好的选择是某种物理代币,它有效地为所有交易添加了一个离线独特的组件,这些交易不能(容易)被从受损系统操作的攻击者提前知道。即使这样,您也应该意识到,如果用户的计算机已被入侵并且他从那时起使用他的安全令牌登录直到会话结束,攻击者可以自由执行用户有权执行的任何操作,但至少在这种情况下,用户更有可能注意到欺诈活动。

于 2009-05-21T16:29:34.277 回答