40 lines
1.0 KiB
C#
40 lines
1.0 KiB
C#
|
using dnlib.DotNet;
|
|||
|
|
|||
|
namespace Obfuz.ObfusPasses.MemEncrypt
|
|||
|
{
|
|||
|
public class ConfigEncryptionPolicy : EncryptionPolicyBase
|
|||
|
{
|
|||
|
|
|||
|
private bool IsSupportedFieldType(TypeSig type)
|
|||
|
{
|
|||
|
type = type.RemovePinnedAndModifiers();
|
|||
|
switch (type.ElementType)
|
|||
|
{
|
|||
|
case ElementType.I4:
|
|||
|
case ElementType.I8:
|
|||
|
case ElementType.U4:
|
|||
|
case ElementType.U8:
|
|||
|
case ElementType.R4:
|
|||
|
case ElementType.R8:
|
|||
|
return true;
|
|||
|
default: return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public override bool NeedEncrypt(FieldDef field)
|
|||
|
{
|
|||
|
TypeDef type = field.DeclaringType;
|
|||
|
if (!IsSupportedFieldType(field.FieldType))
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
// TODO
|
|||
|
if (type.Name == "EncryptField" || type.Name == "EncryptProperty")
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|