我试图用eazfuscator.net混淆.net项目。问题是,当我使用.NET Reflector对其进行反编译时,您可以看到很多代码。所有私人成员都被混淆了,但公众成员提供了有关该计划的大量信息。
是否有可能混淆我图书馆的公众成员?我知道这不是由程序完成的,因为公共成员通常是从其他程序集访问的。但是,是否有可能对整个解决方案进行模糊处理,以便从工具中重命名来自其他程序集的访问?
我已尝试使用ObfuscationAttribute
[assembly: Obfuscation(Feature = "Apply to type * when public: renaming",
Exclude = false)]
但它并没有什么不同。
因此可以使用eazfuscator或其他工具做类似的事情吗?
答案 0 :(得分:3)
一般而言,混淆器不会混淆公共/受保护的成员。
他们这样做是有原因的,假设你在一个程序集中有一个公共成员(假设一个dll)。通常会创建程序集来共享代码,如果混淆器改变了成员和类名,该怎么办?当另一个组件依赖它时,这将如何工作?
如果你想混淆一个类,为什么它首先是public
?如果不打算在程序集外部使用,则可以始终将其设为internal
。
Obfucsators善于处理内部类型/成员。它不仅会混淆类的成员,还会更进一步重命名类本身。
您可以考虑使用Phoenix protector。我希望它也可以配置为混淆公共成员。
<强>更新强>
一种选择是将所有依赖程序集合并到单个巨型程序集(exe),然后使用 obfuscate public members 选项对合并的程序集进行模糊处理。通过这种方式,您可以在不破坏任何内容的情况下对公共成员进行模糊处理。