ICode9

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

c# – Dotfuscator中的Reflection Bug的解决方法?

2019-06-14 03:55:03  阅读:194  来源: 互联网

标签:c net reflection obfuscation


问候所有,

我正在调用Type.GetProperties(),但是在运行Dotfuscator之后,它返回零项,之前它返回的值大于零.

public class Test
{
    public int Number { get; set; }

    public void ShowInfo()
    {
        Type type = this.GetType();

        PropertyInfo[] props = type.GetProperties();
        Console.WriteLine("type [" + type.Name + "] props count: " + props.Length);
    }
}

如果我在Dotfuscator中重命名“Number”属性,那么它可以工作,但不会.但是,我不可能对我的项目中的所有属性执行此操作,因为这会导致可能的错误.

这种方法有没有变通方法?或者甚至我可以使用的其他“免费”混淆应用程序?

我已经尝试在他们的网站上查找提交错误,但我只使用社区版,所以似乎没有那么多的支持.

解决方法:

Dotfuscator在重命名期间自动剥离属性(无论如何都是元数据 – 真正的工作是由自动创建的get / set方法对完成).它还重命名了底层的get / set方法.根据您要执行的操作,您需要排除属性元数据本身或重命名的get / set方法(或可能两者).

如果您需要保持属性元数据不变(例如,只是列出类型中的属性),您可以指示Dotfuscator通过在“重命名排除”选项卡上的树视图中检查属性或使用自定义正则表达式属性来排除重命名属性规则.这将仅排除属性元数据 – 仍将重命名get / set方法.

如果你需要保留get / set方法(例如,因为你试图通过反射来获取或设置属性的值),你可以通过在树视图中展开属性并检查来指示Dotfuscator从重命名中排除这些方法下面的get / set方法,或者使用自定义正则表达式方法规则.

标签:c,net,reflection,obfuscation
来源: https://codeday.me/bug/20190614/1236977.html

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

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

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

ICode9版权所有