在dotnet上对Windows应用程序完全没有保护吗?

问题描述 投票:-1回答:1

我正在用Winforms开发一个应用程序,但似乎没有任何保护措施来防止可执行文件和其他生成的程序集被反编译。工具 在几秒钟内就可以反编译。有一些混淆器是可用的,但是,我特别想找一个免费的。

我在应用程序中存储了一些非常敏感的字符串,虽然我尽力将它们加密或保存在本地的sqlite数据库中,但总是有一个单一的故障点会让整个应用程序变得脆弱。我查看了几个混淆器,都是 开源商业 祭品. 开源的似乎已经坏了,商业的价格也相当昂贵,这对我这样的独立开发者来说是难以承受的。

我知道一个可执行文件必须在内存中运行,这本身就使它很脆弱。而一个坚定的攻击者最终可以反编译一个应用程序。然而,我希望尽可能地让这个过程变得昂贵。至少我希望保护我的应用程序中的字符串。

我的问题是,如果我决定不使用任何昂贵的选项,是否就没有办法保护应用程序程序集不被反向工程?

c# .net winforms security obfuscation
1个回答
1
投票

Windows里有很多保护措施。 但这都是为了保护你的用户不受你的影响,而不是相反。


0
投票

反编译的简单事实是:"只要计算机还能执行它,它也还能反编译"。

执行是一个将二进制转化为行动的过程。

反编译是一个将二进制转化为代码的过程。

如果一个被阻塞,另一个也会被阻塞。

Obfuscation可以使 更难读取反编译的代码. 但这是它能做的所有事情。

我在应用程序中存储了一些非常敏感的字符串,尽管我尽力将它们加密或保存在本地的sqlite数据库中,但总有一个单一的故障点会让整个应用程序变得脆弱。

每一个字符串,只有在你保存的地方,才会被保存。这同样适用于加密密钥。有2个有限的变通方法。

  • 如果它是围绕着比较输入和后台的东西 - 就像你做的密码, 密码安全 可以工作。现代PW安全意味着连 管理员 可以找出通证,但你仍然可以将用户输入与之进行比较。
  • 你可以把这些字符串移到一个单独的应用程序中。你不给应用程序SQL Server连接字符串,而是给它访问一个你控制的WebService。只有WebService实际上知道如何联系数据库。

这取决于你的实际场景,你能做什么。但最终,如果一个字符串或其他点状信息要使用,它在内存中是脆弱的。

© www.soinside.com 2019 - 2024. All rights reserved.