From 0ad6422b7b09c9a8f83663ec5c6f9d43fc159535 Mon Sep 17 00:00:00 2001 From: walon Date: Wed, 23 Apr 2025 18:32:02 +0800 Subject: [PATCH] =?UTF-8?q?ConstFromFieldRvaDataNode=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E8=B0=83=E7=94=A8=20ConstUtility=E4=B8=AD=E5=87=BD=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E7=AE=80=E5=8C=96=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataNodes/ConstFromFieldRvaDataNode.cs | 37 ++++++++----------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/Editor/Virtualization/DataNodes/ConstFromFieldRvaDataNode.cs b/Editor/Virtualization/DataNodes/ConstFromFieldRvaDataNode.cs index 0f294b0..c5edc10 100644 --- a/Editor/Virtualization/DataNodes/ConstFromFieldRvaDataNode.cs +++ b/Editor/Virtualization/DataNodes/ConstFromFieldRvaDataNode.cs @@ -53,12 +53,12 @@ namespace Obfuz.Virtualization { return; } - s_convertInt = mod.Import(typeof(BitConverter).GetMethod("ToInt32", new[] { typeof(byte[]), typeof(int) })); - s_convertLong = mod.Import(typeof(BitConverter).GetMethod("ToInt64", new[] { typeof(byte[]), typeof(int) })); - s_convertFloat = mod.Import(typeof(BitConverter).GetMethod("ToSingle", new[] { typeof(byte[]), typeof(int) })); - s_convertDouble = mod.Import(typeof(BitConverter).GetMethod("ToDouble", new[] { typeof(byte[]), typeof(int) })); - s_convertString = mod.Import(typeof(Encoding).GetMethod("GetString", new[] { typeof(byte[]), typeof(int), typeof(int) })); - s_Encoding_Utf8 = mod.Import(typeof(Encoding).GetField("UTF8")); + s_convertInt = mod.Import(typeof(ConstUtility).GetMethod("GetInt", new[] { typeof(byte[]), typeof(int) })); + s_convertLong = mod.Import(typeof(ConstUtility).GetMethod("GetLong", new[] { typeof(byte[]), typeof(int) })); + s_convertFloat = mod.Import(typeof(ConstUtility).GetMethod("GetFloat", new[] { typeof(byte[]), typeof(int) })); + s_convertDouble = mod.Import(typeof(ConstUtility).GetMethod("GetDouble", new[] { typeof(byte[]), typeof(int) })); + s_convertString = mod.Import(typeof(ConstUtility).GetMethod("GetString", new[] { typeof(byte[]), typeof(int), typeof(int) })); + //s_Encoding_Utf8 = mod.Import(typeof(Encoding).GetField("UTF8")); s_convertBytes = mod.Import(typeof(ConstUtility).GetMethod("GetBytes", new[] { typeof(byte[]), typeof(int), typeof(int) })); } @@ -99,26 +99,19 @@ namespace Obfuz.Virtualization break; } case DataNodeType.String: + case DataNodeType.Bytes: { // Encoding.UTF8.GetString(data, offset, length); - ctx.output.Add(Instruction.Create(OpCodes.Ldsfld, s_Encoding_Utf8)); - ctx.output.Add(Instruction.Create(OpCodes.Ldsfld, rvaData.field)); - output.Add(Instruction.Create(OpCodes.Ldc_I4, rvaData.offset)); - output.Add(Instruction.Create(OpCodes.Ldc_I4, rvaData.size)); - output.Add(Instruction.Create(OpCodes.Call, convertMethod)); - break; - } - case DataNodeType.Bytes: - { - // byte[] result = new byte[length]; - // Array.Copy(data, offset, result, 0, length); - ctx.output.Add(Instruction.Create(OpCodes.Ldsfld, rvaData.field)); - output.Add(Instruction.Create(OpCodes.Ldc_I4, rvaData.offset)); - output.Add(Instruction.Create(OpCodes.Ldc_I4, rvaData.size)); - //output.Add(Instruction.Create(OpCodes.Newarr, mod.CorLibTypes.Byte.ToTypeDefOrRef())); - //output.Add(Instruction.Create(OpCodes.Ldc_I4, 0)); + //ctx.output.Add(Instruction.Create(OpCodes.Ldsfld, s_Encoding_Utf8)); + //ctx.output.Add(Instruction.Create(OpCodes.Ldsfld, rvaData.field)); + //output.Add(Instruction.Create(OpCodes.Ldc_I4, rvaData.offset)); //output.Add(Instruction.Create(OpCodes.Ldc_I4, rvaData.size)); + //output.Add(Instruction.Create(OpCodes.Call, convertMethod)); + + ctx.output.Add(Instruction.Create(OpCodes.Ldsfld, rvaData.field)); + output.Add(Instruction.Create(OpCodes.Ldc_I4, rvaData.offset)); + output.Add(Instruction.Create(OpCodes.Ldc_I4, rvaData.size)); output.Add(Instruction.Create(OpCodes.Call, convertMethod)); break; }