使用ConfuserEx在Xamarin表单中声明性混淆

时间:2017-08-05 21:45:36

标签: xamarin xamarin.android xamarin.forms obfuscation confuserex

我正在使用Xamarin.Forms创建一个Android应用程序,我正在使用ConfuserEx进行混淆。我想在此example中使用声明性混淆,因此我可以更改每个类的Obfuscation属性。

但是,Xamarin.Forms中的System.Reflection命名空间无法识别System.Reflection.ObfuscationAttribute类。我是否需要使用其他NuGet包,或者我错过了什么?

否则,有没有办法以不同的方式在不同的类中包含或排除混淆功能?

1 个答案:

答案 0 :(得分:0)

ConfuserEx仅查看属性的名称

if (ca.TypeFullName != "System.Reflection.ObfuscationAttribute")

所以我只想在PCL(System.Reflection.ObfuscationAttribute)项目中创建一个Xamarin.Forms类。

即。

using System.Runtime.InteropServices;

namespace System.Reflection
{
    [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Parameter | AttributeTargets.Delegate, AllowMultiple = true, Inherited = false), ComVisible(true)]
    public sealed class ObfuscationAttribute : Attribute
    {
        //
        // Fields
        //
        private bool m_strip = true;

        private bool m_exclude = true;

        private bool m_applyToMembers = true;

        private string m_feature = "all";

        //
        // Properties
        //
        public bool ApplyToMembers
        {
            get
            {
                return this.m_applyToMembers;
            }
            set
            {
                this.m_applyToMembers = value;
            }
        }

        public bool Exclude
        {
            get
            {
                return this.m_exclude;
            }
            set
            {
                this.m_exclude = value;
            }
        }

        public string Feature
        {
            get
            {
                return this.m_feature;
            }
            set
            {
                this.m_feature = value;
            }
        }

        public bool StripAfterObfuscation
        {
            get
            {
                return this.m_strip;
            }
            set
            {
                this.m_strip = value;
            }
        }
    }
}

回复:https://github.com/yck1509/ConfuserEx/blob/3c9c29d9daf2f1259edf69054c5693d5d225a980/Confuser.Core/ObfAttrMarker.cs#L138