2025-04-30 21:47:21 +08:00
|
|
|
|
using dnlib.DotNet;
|
|
|
|
|
|
2025-05-04 19:55:10 +08:00
|
|
|
|
namespace Obfuz.ObfusPasses.MemEncrypt
|
2025-04-30 21:47:21 +08:00
|
|
|
|
{
|
2025-05-10 18:25:43 +08:00
|
|
|
|
public class ConfigEncryptionPolicy : EncryptPolicyBase
|
2025-04-30 21:47:21 +08:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|