有没有办法阻止您的应用程序被分析或注入? (C#)

时间:2009-05-21 15:56:03

标签: c# code-injection analyzer

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

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

我在互联网和stackoverflow上搜索过。我的奇迹似乎没有。

我所得到的只是一些更可怕的标题(抱歉,新用户无法发布超链接,请谷歌搜索):

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

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

只是我太担心或者是什么?

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

6 个答案:

答案 0 :(得分:3)

如果通过分析你的意思是有人反编译代码并查看它,那么随VS Pro及更高版本提供的Dotfucstor就是一个简单的(免费)工具。有一个更完整的功能(但付费)版本可以做更多。

为防止有人篡改已部署的assmebliles,请使用Strong Names

答案 1 :(得分:3)

哪里有遗嘱,就有办法,无论是托管代码还是本地程序集。关键是要将重要信息保存在SERVER端并保持对它的控制。

答案 2 :(得分:2)

几乎任何应用程序都可以“分析并注入”。比其他人更多。这就是为什么你永远不会信任用户输入。您在服务器端完全验证用户的请求,确保您不会受到缓冲区溢出,sql注入和其他攻击媒介的攻击。<​​/ p>

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

答案 3 :(得分:2)

您需要首先决定要保护的是什么? 混淆器仅用于保护“秘密酱”算法,但攻击者可以简单地提取代码并将其用作黑盒子。在99%的案例中,混淆器是浪费金钱。 如果攻击者具有物理访问权限,那么您无能为力。

答案 4 :(得分:2)

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

答案 5 :(得分:1)

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