我正在尝试使用 eazfuscator.net 混淆 .net 项目。问题是,当我使用 .NET Reflector 反编译它时,您可以看到大部分代码。所有私有(private)成员都被混淆了,但是公共(public)成员提供了很多关于程序的信息。
是否也可以混淆我图书馆的公共(public)成员?我知道这不是由程序完成的,因为公共(public)成员通常是从其他程序集访问的。但是难道不应该混淆整个解决方案,以便从其他程序集访问的那些访问也从该工具重命名吗?
我已经尝试使用ObfuscationAttribute
[assembly: Obfuscation(Feature = "Apply to type * when public: renaming",
Exclude = false)]
但这并没有真正产生任何影响。
那么是否可以使用 eazfuscator 或其他工具来做类似的事情?
最佳答案
一般来说,混淆器不会混淆公共(public)/ protected 成员。
他们这样做是有原因的,假设您在程序集中有一个公共(public)成员(假设是一个 dll)。通常创建程序集是为了共享代码,如果混淆器更改了成员和类名怎么办?当另一个程序集依赖它时,这将如何工作?
如果你真的想混淆一个类,为什么它首先是 public
?如果不打算在程序集外使用,您始终可以将其设置为内部
。
混淆器擅长处理内部类型/成员。它不仅会混淆类的成员,还会更进一步重命名类本身。
您可以考虑使用 Phoenix protector .我希望它也可以配置为混淆公共(public)成员。
更新:
一个选项是将所有依赖程序集合并为一个巨大的程序集 (exe),然后使用混淆公共(public)成员 选项混淆合并后的程序集。这样,您可以在不破坏任何内容的情况下同时混淆公共(public)成员。
关于c# - eazfuscator 公共(public)成员未混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26041616/