2014-09-25 93 views
7

我想用eazfuscator.net混淆一个.net项目。问题是,当我使用.NET Reflector对其进行反编译时,您可以看到很多代码。所有私人成员都被混淆了,但公众成员提供了有关该计划的许多信息。eazfuscator公共成员没有模糊

是否有可能混淆我的图书馆的公共成员?我知道这不是由程序完成的,因为公共成员通常是从其他程序集访问的。但是难道不应该混淆整个解决方案,以便其他程序集的访问也可以从该工具重命名?

我已经尝试使用ObfuscationAttribute

[assembly: Obfuscation(Feature = "Apply to type * when public: renaming", 
         Exclude = false)] 

但它并没有真正使任何区别。

那么有可能做这样的事情与eazfuscator或可能是另一种工具?

回答

3

通常,混淆器不会混淆公共/受保护的成员。

他们这样做是有原因的,假设你有一个程序集中的公共成员(让我们说一个dll)。通常创建程序集以共享代码,如果混淆器更改了成员和类名称会怎样?当另一个程序集依赖于它时,这将如何工作?

如果你想混淆一个类,为什么它首先是public?如果不打算在组件外使用,则始终可以使其成为internal

Obfucsators擅长处理内部类型/成员。它不仅混淆了类的成员,还会进一步重命名类本身。您可以考虑使用Phoenix protector。我希望它也可以配置为混淆公众成员。

更新:

一种选择是合并所有相关组件,以巨单组件(EXE),然后用模糊的合并组装混淆公共成员选项。通过这种方式,您可以在不破坏任何内容的同时混淆公共成员。

+0

所以Phoenix保护器也可以为公共成员配置,但它打破了功能,因为有依赖于该库的程序集。我只是认为应该可以将这些程序集混淆在一起,以便两个程序集中的名称以与程序相同的方式进行更改。 – 2014-09-26 06:25:36

+0

@DanielWaidele我不认为你会在免费的混淆工具中获得这样的功能。尽管我不确定,但您可以使用商业工具。 – 2014-09-26 06:31:08

+0

您可以考虑将所有程序集合并为一个,然后混淆公共成员。 – 2014-09-26 06:32:53