C# 混淆或保护 .Net 程序集的最佳方法
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/59893/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Best method to obfuscate or secure .Net assemblies
提问by Curtis
I'm looking for a technique or tool which we can use to obfuscate or somehow secure our compiled c# code. The goal is not for user/data security but to hinder reverse engineering of some of the technology in our software.
我正在寻找一种技术或工具,我们可以使用它来混淆或以某种方式保护我们编译的 c# 代码。目标不是为了用户/数据安全,而是为了阻止我们软件中某些技术的逆向工程。
This is not for use on the web, but for a desktop application.
这不是用于网络,而是用于桌面应用程序。
So, do you know of any tools available to do this type of thing? (They need not be free)
那么,你知道有什么工具可以做这种事情吗?(他们不必是免费的)
What kind of performance implications do they have if any?
如果有的话,它们会产生什么样的性能影响?
Does this have any negative side effects when using a debugger during development?
在开发过程中使用调试器时,这是否有任何负面影响?
We log stack traces of problems in the field. How would obfuscation affect this?
我们记录现场问题的堆栈跟踪。混淆会如何影响这一点?
采纳答案by Aaron Fischer
This is a pretty good list of obfuscators from Visual Studio MarketplaceObfuscators
这是来自Visual Studio MarketplaceObfuscators 的一个很好的混淆器列表
- ArmDot
- Crypto Obfuscator
- Demeanorfor .NET
- DeployLX CodeVeil
- Dotfuscator.NET Obfuscator
- Semantic Designs: C# Source Code Obfuscator
- Smartassembly
- Spices.Net
- XenocodePostbuild 2006
- .NET Reactor
- 臂点
- 加密混淆器
- .NET风度
- DeployLX CodeVeil
- Dotfuscator的.NET混淆器
- 语义设计:C# 源代码混淆器
- 智能装配
- 香料网
- XenocodePostbuild 2006
- .NET 反应器
I have not observed any performance issues when obfuscating my code. If your just sending text basted stack traces you might have a problem translating the method names.
在混淆我的代码时,我没有观察到任何性能问题。如果您只是发送基于文本的堆栈跟踪,则在翻译方法名称时可能会遇到问题。
回答by Gishu
There are tools that also 'deobfuscate' obfuscated DLLs - I'd suggest turning the piece that needs to be protected into an unmanaged component.
有一些工具也可以“反混淆”混淆的 DLL - 我建议将需要保护的部分转换为非托管组件。
回答by Jonathan Allen
You are wasting your time going down that path. If you have code that you don't want anyone to see, you need to keep it behind closed doors. For example, only execute that code on your own server using a web service interface.
沿着这条路走下去,你是在浪费时间。如果您有不想让任何人看到的代码,则需要将其隐藏起来。例如,仅使用 Web 服务接口在您自己的服务器上执行该代码。
Obfuscating your code only deters the most casual of people. As the video game industry leaned a long time ago, no code is safe from cracking.
混淆你的代码只会阻止最随意的人。由于视频游戏行业很久以前就开始倾斜,没有任何代码是安全的。
回答by Crippeoblade
http://xheo.com/products/code-protection
http://xheo.com/products/code-protection
Done the job for me in the past.
过去为我完成了工作。