Ale*_*nko 2 .net c# 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
|
}
Run Code Online (Sandbox Code Playgroud)
UPD:问题不是重命名构造函数.它的名字显然变成了".ctor".我需要防止代码本身的混淆.是的,一些混淆器不仅重命名符号,还改变代码.是的,我知道我不能用这个属性来做.编译器也这么说.我已经知道我不能做什么.我问我能做什么,最好只使用标准的.net工具.
构造函数总是在.ctor内部重命名,您不能使用混淆的名称(但您也不能使用原始名称)。反编译器将使用混淆的类名命名构造函数。
我想你的意思是混淆函数内部的代码,而不是成员名称?据推测,支持代码重排而不仅仅是名称混淆的更高级的混淆器将拥有自己的属性来控制……因为System.Reflection.ObfuscationAttribute不适合控制更强大的混淆技术。
特别是,AttributeUsageAttribute在ObfuscationAttribute类不包括AttributeTargets.Constructor作为允许使用。
你可以只使用你想要的东西ObfuscationAttribute,但它很繁琐:适用[Obfuscation(ApplyToMembers=false)]于类,以及除构造函数之外的[Obfuscation]每个成员.
或者,使用混淆器的配置来排除构造函数.由于ObfuscationAttribute提供的控制非常有限(基本上仅打开和关闭功能),因此大多数都具有用于细粒度控制的单独配置.
最后,考虑使构造函数如此简单和无趣,以至于流是否被混淆无关紧要.无论如何理想情况应该是这样 - 如果你的构造函数只执行成员初始化,那么首先就没有太多的混淆.您可以为更多涉及的内容调用成员函数,并且可以控制使用该属性的那些人的模糊处理.
| 归档时间: |
|
| 查看次数: |
1871 次 |
| 最近记录: |