如何防止任何C#应用程序反编译 [英] How to prevent decompilation of any C# application

查看:993
本文介绍了如何防止任何C#应用程序反编译的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们计划使用C#和MySQL开发客户端服务器应用程序.我们计划像其他任何软件实用程序一样在货架上出售该产品.我们担心产品的反编译在可用性和捆绑功能方面确实比竞争对手具有某种优势.

We are planning to develop a client server application using C# and MySQL. We plan to sell the product on the shelf like any other software utility. We are worried about the decompilation of our product which does have some sort of edge over our competitors in terms of usability and bundled functionality.

我们如何防止我们的软件反编译,从而使产品的业务逻辑保持不变?

How can we prevent our software from decompilation, so the business logic of the product remains intact?

我们听说过Reflector和其他反编译器,这使我们的代码非常容易复制.

We have heard about Reflector and other decompilers which makes our code very much vulnerable for copying.

我们的客户群不是公司,而是可能自己做不到的医生,但我们的竞争对手可能想要复制/禁用许可,甚至复制代码/功能,因此我们的产品在市场上的价值下降.

Our customer base is not Corporates but medical practitioners who themselves may not do it but our competitors may want to copy/disable licensing or even replicate the code/functionality so the value of our product goes down in the market.

任何防止这种情况的建议都是受欢迎的.

Any suggestion to prevent this is most welcome.

推荐答案

如果将.NET程序集部署到客户端计算机,则总是可以使用反射器和类似工具进行某种形式的反编译.

If you deploy .NET assemblies to your client machines, some kind of decompilation will always be possible using reflector and similar tools.

但是,这种情况与使用本机C ++编写应用程序时所遇到的情况没有本质上的不同.总是可以对事物进行反编译-如果不可能,则处理器也无法理解.

However, this situation isn't materially different to what you'd encounter if you wrote the application in native C++. It is always possible to decompile things - if it were impossible, the processor couldn't understand it either.

您永远不会打败专家级的饼干-他们会将您的安全视为仅解决挑战就可以解决的智力难题.

You're never going to defeat the expert cracker - they'll treat your security as an intellectual puzzle to be solved for the challenge alone.

问题围绕着打败您的许可实践和投资回报率有多困难.

The question revolves around how hard it is to defeat your licensing practices and the return on investment.

使用电子表格坐下来,仔细研究可能的情况-危险可能比您想象的要小.

Sit down with a spreadsheet and look through the possible scenarios - the danger is probably less than you think.

诸如易用性"之类的因素在您的软件中可见,任何用户都可以观察到-因此,您认为它很容易复制.但是,由于大多数开发人员(包括我自己)都不像典型的用户,因此很少有良好的用户体验(并且很少能很好地复制).

Factors like "ease of use" are visible in your software for any user to observe - so you'd think it easy to copy. But, good User experience is rare (and seldom copied well), because most developers (myself included) are nothing like typical users.

我建议您专注于使饼干的工作更加困难,因为您永远不可能使它变得不可能,只是无利可图.

I'd suggest you concentrate on making the job of a cracker harder, cause you can never make it impossible, just non-profitable.

尝试的一种可能性:作为安装过程的一部分,可以将程序集预编译为本机代码. Paint.NET出于性能原因执行此操作.我相信,一旦完成此操作,就可以丢弃原始程序集,并使用经过优化的本机代码版本.

One possibility to try: It's possible to pre-compile assemblies into native code as a part of the installation process. Paint.NET does this for performance reasons. I believe that once you've done this, you can discard the original assemblies and use the optimised, native code editions.

这篇关于如何防止任何C#应用程序反编译的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆