Dotfuscator 是如何工作的?我尝试混淆我的一些类,并将方法/类重命名为 a、b、c 等。但我仍然可以看到这些方法中的代码?是不是,我做错了什么?
有什么东西可以阻止完全分解我的组件吗?
Dotfuscator 是如何工作的?我尝试混淆我的一些类,并将方法/类重命名为 a、b、c 等。但我仍然可以看到这些方法中的代码?是不是,我做错了什么?
有什么东西可以阻止完全分解我的组件吗?
代码混淆远远超出类、成员和变量的简单重命名,尽管这是其中的重要部分。
例如,Dotfuscator 使用一种称为重载归纳的专利技术,其中许多方法被重命名为相同的名称(只要它们具有不同的签名,这是可能的)。PreEmptive 解决方案引用了代码中三分之一的方法重命名为 a() 的情况。其他技术包括将简单的迭代重写为递归,以及代码变形。
实际上,现代混淆技术完全足以使代码几乎不可能进行逆向工程,至少手工操作是这样。虽然 .NET 程序集原则上永远不可能是 RE 安全的,但混淆可以提供一个非常强大的障碍。
对于我们大多数人来说,这就足够了。
这就是它应该工作的方式。您的代码仍然可以访问,只是更难理解。如果您想要“更强大”的东西,请查看Xenocode PostBuild。
你不能阻止.net中的反汇编
不幸的是,没有办法阻止有人反映您的程序集并将其分解为您的源代码。Dotfuscator 之类的混淆工具将使人们更难真正阅读反汇编代码,其中几乎所有人类可读的名称都可以被无意义的符号替换。
如果你在任何地方发布你的代码,如果有人有足够的决心,他们将能够对其进行逆向工程。你能做的最好的就是让他们不值得花时间这样做。
Visual Studio 附带的版本是有限的,如果您需要将某些东西部署到客户站点,我不会依赖它进行全面的混淆。您可能想查看一个免费的Eazfuscator.net。
Dotfuscator 只是使反编译的源代码更难阅读 - 它不会阻止反编译本身。
如果您有 Professional 或 Gold Dotfuscator,您可以阻止 Reflector 程序打开您的程序集。