.NET混淆器问题

6
我正在开发一些应用程序,并决定运行我的代码通过混淆器。我下载并使用了Eazfuscator.NET,然后在安装应用程序之后,我下载了Ispy来查看这个过程的效果。
我发现我仍然可以轻松地看到很多代码,例如我的例行程序中的大部分逻辑都在某些背景工作者的部分中。是的,字符串已经改变了,但是我认为相当重要的一些部分仍然是可见的。
例如,当我构建应用程序身份验证密钥时,我会在加密之前将某些项目附加到密钥上。当我使用Ispy查看程序集时,这些项目是可见的。我的加密库的密码被隐藏了,但我觉得这仍然比我想要别人能够看到的信息更多。
我的问题是-当使用混淆器时,这是正常行为吗?还是我应该尝试其他的混淆器?

我会尝试其他的。我已经使用了dotfuscator,除了匿名类型外它表现得非常好。我相信VS2010也有混淆功能。 - Brian
2
欢迎来到Stack Overflow!我使用了Eazfuscator,得到非常稠密、高强度的输出。确保你正在使用最新版本。尝试调整一些设置。 - ashes999
我看到的设置很少,你具体指的是哪些? - Mitch Miller
2
我曾经使用过Eazfuscator,并发现它是市场上最好的免费工具之一。输出结果是可以接受的。 - JL.
请记住,混淆器只是使反向工程变得困难,而不是不可能!我发现免费的混淆器没有付费的好。我正在使用Crypto Obfuscator,它有很多设置! - c0deNinja
确保你运行de4dot https://bitbucket.org/0xd4d/de4dot/ 来查看你可以反混淆多少内容。如果你想要保护的内容可以被反转,购买前三思。 - Lex Li
3个回答

3

使用以下设置来获取更好的Eazfuscator.NET结果:

[assembly: Obfuscation(Feature = "code control flow obfuscation", Exclude = false)]
[assembly: Obfuscation(Feature = "PEVerify", Exclude = false)]
[assembly: Obfuscation(Feature = "encrypt symbol names with password mypassword", Exclude = false)]
[assembly: Obfuscation(Feature = "encrypt resources [compress]", Exclude = false)]

在你的程序集信息文件中。

你列出的这些设置对于生成的 .exe 文件非常有效。然而,与之同时构建的类库在其程序集文件中具有相同的设置,但我仍然可以看到其中相当一部分内容,例如函数参数。对于类库,我需要做一些特殊的事情吗? - Mitch Miller
方法或属性是公共的吗?默认情况下,库中的公共部分无法混淆,因为它们是公共的,所以对于任何附加该库的人都是可见的。 - Marcin
是的,这些方法是公开的,因为我在各种不同的应用程序中使用相同的库。我是否漏掉了什么,否则我怎么能编写一个可重用但可以混淆的库呢? - Mitch Miller
1
尝试使用internalsvisibleto属性并将public更改为internal,或查看Eazfuscator.NET文档,我认为那里有一个选项可以混淆public。类似于[assembly: Obfuscation(Feature = "Apply to type *: apply to member * when public and property: renaming", Exclude = false)] - Marcin
好的,我会在另一个话题上处理NLog。您上面的回答解决了我在混淆器方面的问题。 - Mitch Miller
显示剩余4条评论

0

使用高级混淆功能来混淆程序集,使混淆的.NET代码更难理解或无法反编译。我们可以通过代码保护来保护.NET应用程序和DLL,其中包括方法级别的代码加密、反向工程、防调试、防篡改等多种功能,以防止未经授权的访问和修改。

我正在使用FxProtect-.Net混淆器。它真的很好。

你可以试试....Net混淆器


0

试试Crypto Obfuscator - 它有很多混淆技术,包括字符串加密、控制流混淆、方法调用隐藏、资源保护等,这些技术可以使代码变得非常难以阅读和理解。

免责声明:我在LogicNP Software工作,是Crypto Obfuscator的开发者。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接