c# - 在 .NET 中从混淆中排除构造函数

标签 c# .net obfuscation

.NET 中有 ObfuscationAttibute。但我不明白,如何从混淆中排除构造函数中的代码。

// Obfuscated class
class MyClass {
    [Obfuscation(Exclude = true)] // "Attribute 'Obfuscation' is not valid on this declaration type"
    public MyClass() {
        //some code, I need to exclude this code from obfuscation
    }
    // Obfuscated method
    public void Method1() {
        //some code
    |
    // Obfuscated method
    public void Method2() {
        //some code
    |
}

UPD:问题不在于重命名构造函数。它的名字显然变成了“.ctor”。我需要防止混淆代码本身。是的,一些混淆器不仅重命名符号,而且还更改代码。是的,我知道我不能用这个属性来做。编译器说的一样。我已经知道我不能做什么。我在问我能做什么,最好只使用标准的 .net 工具。

最佳答案

你可以只使用 ObfuscationAttribute 做你想做的事,但这很乏味:将 [Obfuscation(ApplyToMembers=false)] 应用到类,然后 [Obfuscation ] 给每个单独的成员除了构造函数。

或者,使用混淆器的配置将构造函数排除在考虑之外。由于 ObfuscationAttribute 仅提供非常有限的控制(基本上只是打开和关闭功能),大多数都具有单独的配置以进行细粒度控制。

最后,考虑让您的构造函数变得如此简单和无趣,以至于流程是否被混淆并不重要。无论如何,理想情况下应该是这样——如果您的构造函数只执行成员初始化,那么一开始就没有太多需要混淆的地方。您可以为更复杂的内容调用成员函数,并且可以控制使用该属性的人的混淆。

关于c# - 在 .NET 中从混淆中排除构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28734759/

相关文章:

c# - 如何让 ActionBlock 在发生任何异常时运行

.net - REDIS 耐久性 ?如何自动过期数据?

c - 如何从 K&R C 转换为 ANSI C?

c++ - 如何混淆本地变量?

C# Raspberry pi Linux 串行端口权限即使作为 root 也被拒绝

c# - 比较 2 个自定义对象 - C#

c# - 为什么在尝试调用我的方法时会出现对象引用错误?

.net - Office 功能区 XML 与 Office 标准功能区设计器?

c# - ICommunicationObject.State 不起作用?

java - Android Apk反编译似乎很容易