.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/