ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – Dotfuscator访问器重命名get和set

2019-07-08 16:05:24  阅读:292  来源: 互联网

标签:c accessor renaming dotfuscator


我的问题是Dotfuscator配置重命名.想象一个看起来像这样的类:

Class MyClass
{
    private int _propertyA;
    private int _propertyB;

    public int PropertyA
    {
        get{return _propertyA;}
        set{_propertyA = value;}
    }

    [Obfuscation(Feature = "renaming", Exclude = true)]
    public int DestinationReference
    {
        get{return _propertyB;}
    }
}

混淆的类将写成这样的东西

Class a
{

    int s()
    void z(int a)

    public int DestinationReference
    {
        get{return _propertyB;}
    }
}

这是我从使用.Net Reflector看到的假设

我的问题如下:
– 在我们的代码中,我们实现了一个方法,该方法使用反射查找类的所有属性,以便查找特定参数
– 此方法在混淆代码中不起作用,因为我的访问者PropertyA已被替换为get访问器和set访问器的两种不同方法.
– 我知道如果我将一个访问者排除在重命名之外它会在msil代码中保留一个访问者,并且可以通过我的方法查找访问者

我的问题是:
– 不是重命名唯一的选择吗?
– Dotfuscator中是否有一个参数允许重命名访问者,而不将其分成两个不同的方法并丢失访问者?

我对混淆很新,所以原谅我的不完美之处,这就是我所能看到的类似于上面反射器中所描述的类的东西.

如您所见,从重命名中排除的属性将保留具有get访问器的属性.但对于另一个被混淆的人,我可以看到两个不同的方法s和z

我试图看看是否有办法获得单个访问器,例如使用底层的getter和setter重命名为“s”

解决方法:

我在查看这篇文章后首先找到了一些问题的答案:http://vicky4147.wordpress.com/2007/10/23/exploring-msil-properties/

我看到MSIL生成了get_XXX()方法和set_XXX(int)方法以及添加属性. Dotfuscator负责重命名get和set方法(这是我们想要的),但也用于删除属性本身(我不想要)

解决方案是为混淆的DLL启用“库模式”,如果启用了库模式,则文档说明:

  • Names of public classes and nested public classes are not renamed. Members (fields and methods) of these classes are also not renamed if they have public, family, or famorassem access.
  • In addition, no virtual methods are renamed, regardless of access specifier. This allows clients of your library to override private virtual methods if need be (this is allowed behavior in the .NET architecture).
  • Any user-specified custom renaming exclusions are applied in addition to the exclusions implied by the above rules.
  • Property and Event metadata are always preserved.

这可以在反射器中进行模糊处理后看到,顶部库模式被禁用,底部库模式被启用

可以看出,没有公共类/方法/字段被重命名,更重要的是我保留了属性元数据.

现在我的下一个问题是,如何保留属性元数据但允许重命名属性本身.我想找到一个令人满意的解决方案,而无需使用自定义混淆属性定义手动装饰每个属性.

我会继续寻找另一天,如果我找不到任何东西,就会将这个答案标记为问题的解决方案.

标签:c,accessor,renaming,dotfuscator
来源: https://codeday.me/bug/20190708/1403554.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有