C# 保护.NET代码不受反向工程的影响?
模糊处理是一种方法,但它不能防止破坏应用程序的盗版保护安全。如何确保应用程序未被篡改,以及如何确保注册机制不能被反向工程 此外,还可以将C#应用程序转换为本机代码,而且成本太高C# 保护.NET代码不受反向工程的影响?,c#,.net,obfuscation,reverse-engineering,C#,.net,Obfuscation,Reverse Engineering,模糊处理是一种方法,但它不能防止破坏应用程序的盗版保护安全。如何确保应用程序未被篡改,以及如何确保注册机制不能被反向工程 此外,还可以将C#应用程序转换为本机代码,而且成本太高 C提供了很多特性,是我的代码的理想语言,所以用C++编写整个代码库是不可能的。 安全证书可以很容易地从.NET中的签名程序集中删除。真的值得吗?只要有足够的决心,就可以打破每一种保护机制。考虑你的市场,产品的价格,客户的数量等等。 如果您想要更可靠的东西,那么就使用硬件密钥,但这相当麻烦(对于用户)而且更昂贵。软件解决
C提供了很多特性,是我的代码的理想语言,所以用C++编写整个代码库是不可能的。
安全证书可以很容易地从.NET中的签名程序集中删除。真的值得吗?只要有足够的决心,就可以打破每一种保护机制。考虑你的市场,产品的价格,客户的数量等等。 如果您想要更可靠的东西,那么就使用硬件密钥,但这相当麻烦(对于用户)而且更昂贵。软件解决方案可能会浪费时间和资源,它们唯一能给你的是错误的“安全感” 几乎没有其他想法(没有完美的,因为没有完美的想法)
- 改变语言,使用作者使用的好技巧
- 许可证服务器
不要在这上面浪费太多时间,因为破解者对典型技术有很多经验,而且比你领先几步。除非您想使用大量资源,否则可能需要更改编程语言(使用Skype方式)。如果它是用.NET编写并编译成的,则可以反映出来。如果安全性是一个问题,并且需要避免混淆,那么我建议您使用非托管语言编写应用程序,这在本质上更难进行反向工程。您不能 您可以采取一些步骤使其更加困难,但最终本地计算机上的任何可执行文件都是可破解的。最终,该代码必须转换为本机代码,并且每个可运行的应用程序都有漏洞 你想做的只是让它变得很难破解,让它不值得人们的麻烦 我为您提供了一些帮助保护您的应用程序的建议:
- 混淆您的代码。有一个免费版本,并随Visual Studio提供
- 使用或非对称加密生成产品许可证。这确保只有您才能生成许可证代码。即使您的应用程序被破解,您也可以确定他们不会为您的应用程序释放密钥生成器,因为不可能反转密钥生成算法
- 使用第三方包装器将.NET可执行文件打包到加密的Win32包装应用程序中。是比较好的一种。这会阻止人们在中反映您的应用程序,并使您很难打开包进行反向操作
- 编写您自己的自定义包装器。如果第三方封隔器太贵,请考虑自己编写。有时,定制的打包程序可能非常有效,因为没有关于如何解包的好方法。本教程提供了大量关于编写自己的Win32 packer的有用信息
经过一场漫长的战斗,我意识到我是在与潮汐搏斗,而所有这些时间都白白浪费了。我取出了除基本许可证功能之外的所有家庭电话号码,再也没有回头看。不幸的是,你不会逃避这一点。你最好的选择是用C语言编写你的代码 这里有一个小难题,有人可以反编译您的应用程序,并杀死任何验证/激活代码(例如,调用您的C库)。请记住,用C编写的应用程序也会被更顽固的黑客进行反向工程(看看现在游戏被破解的速度有多快)。没有任何东西可以保护您的应用程序 最后,它的工作原理与你的家非常相似,保护得足够好,这样就太费劲了(意大利面代码在这里会有帮助),攻击者就可以转移到你的隔壁邻居身上(竞争:)。瞧