gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:45:03 25 4
gpt4 key购买 nike

我的问题是用于重命名的 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会这样写

Class a
{

int s()
void z(int a)

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

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

我的问题如下:- 在我们的代码中,我们实现了一个方法,该方法使用反射查找类的所有属性以查找特定参数- 此方法在混淆代码中不起作用,因为我的访问器 PropertyA 已被替换为获取访问器和设置访问器的两种不同方法。- 我知道如果我从重命名中排除一个访问器,它会在 msil 代码中保留一个访问器,并且会被我查找访问器的方法找到

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

我对混淆还很陌生,所以请原谅我的不完美之处,这是我在反射器中看到的类似于上述类的类。

Screenshot

如您所见,被排除在重命名之外的属性仍然是具有 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.

并且在反射器中混淆后可以看到,在顶部库模式被禁用,在底部库模式被启用

Screenshot

可以看出,没有任何公共(public)类/方法/字段被重命名,对我来说更重要的是属性元数据已被保留。

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

我会继续搜索另一天,如果找不到任何内容,会将此答案标记为问题的解决方案。

关于c# - Dotfuscator 访问器重命名 get 和 set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25857766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com