【问题标题】:eazfuscator public members not obfuscatedeazfuscator 公共成员未混淆
【发布时间】:2014-11-20 09:44:09
【问题描述】:

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

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

我已经尝试使用ObfuscationAttribute

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

但实际上并没有什么不同。

那么有可能用 eazfuscator 或其他工具做类似的事情吗?

【问题讨论】:

    标签: c# .net obfuscation public eazfuscator


    【解决方案1】:

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

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

    如果你想要混淆一个类,为什么首先是public?如果它不打算在程序集之外使用,您始终可以将其设为 internal

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

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

    更新:

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

    【讨论】:

    • 所以 Phoenix 保护器也可以为公共成员配置,但是它破坏了功能性,因为存在依赖于该库的程序集。我只是认为应该可以将这些程序集混淆在一起,以便两个程序集中的名称以相同的方式更改,以便程序正常工作。
    • @DanielWaidele 我认为您不会在免费的混淆工具中获得这样的功能。您可能会在商业工具中获得它,但不确定。
    • 您可以考虑将所有程序集合并为一个,然后混淆公共成员。
    • Eazfuscator 具有合并功能。在我的测试项目中效果很好。谢谢你的帮助
    • @DanielWaidele 很高兴它对您有所帮助。我也会在我的回答中添加这一点。
    猜你喜欢
    • 2021-12-05
    • 1970-01-01
    • 2023-03-27
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2015-02-26
    相关资源
    最近更新 更多