7

我正在尝试使用 eazfuscator.net 混淆 .net 项目。问题是,当我使用 .NET Reflector 对其进行反编译时,您可以看到大部分代码。所有私人成员都被混淆了,但公共成员提供了有关该程序的大量信息。

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

我已经尝试使用ObfuscationAttribute

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

但这并没有什么不同。

那么是否可以使用 eazfuscator 或其他工具来做类似的事情?

4

1 回答 1

3

一般来说,混淆器不会混淆公共/受保护的成员。

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

如果你想要混淆一个类,为什么它是public第一位的?internal如果它不打算在程序集之外使用,您总是可以制作它。

混淆器擅长处理内部类型/成员。它不仅混淆了类的成员,它还将更进一步重命名类本身。

您可以考虑使用Phoenix 保护器。我希望它也可以配置为混淆公共成员。

更新:

一种选择是将所有依赖程序集合并到单个巨型程序集(exe),然后使用混淆公共成员选项混淆合并的程序集。这样,您可以在不破坏任何内容的同时混淆公共成员。

于 2014-09-25T15:06:41.197 回答