From 702f20c6b07090f7b77b4e2d12aec88716022cf0 Mon Sep 17 00:00:00 2001 From: walon Date: Sun, 25 May 2025 10:06:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DFieldEncryption=E5=A4=84?= =?UTF-8?q?=E7=90=86=E6=B5=AE=E7=82=B9=E7=B1=BB=E5=9E=8B=E6=97=B6=E6=9C=AA?= =?UTF-8?q?=E6=8F=92=E5=85=A5castFloatAsInt=E6=8C=87=E4=BB=A4=EF=BC=8C?= =?UTF-8?q?=E5=9C=A8il2cpp=E7=94=9F=E6=88=90=E7=9A=84=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=B8=BA=E7=9B=B4=E6=8E=A5=E5=BC=BA=E8=BD=AC`(int)f`=EF=BC=8C?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E7=BB=93=E6=9E=9C=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FieldEncrypt/DefaultFieldEncryptor.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/com.code-philosophy.obfuz/Editor/ObfusPasses/FieldEncrypt/DefaultFieldEncryptor.cs b/com.code-philosophy.obfuz/Editor/ObfusPasses/FieldEncrypt/DefaultFieldEncryptor.cs index 8ff7fbd..ac81a8c 100644 --- a/com.code-philosophy.obfuz/Editor/ObfusPasses/FieldEncrypt/DefaultFieldEncryptor.cs +++ b/com.code-philosophy.obfuz/Editor/ObfusPasses/FieldEncrypt/DefaultFieldEncryptor.cs @@ -108,6 +108,10 @@ namespace Obfuz.ObfusPasses.FieldEncrypt { // value has been put on stack + if (fei.fieldType == ElementType.R4) + { + outputInstructions.Add(Instruction.Create(OpCodes.Call, importer.CastFloatAsInt)); + } // encrypt outputInstructions.Add(Instruction.CreateLdcI4(fei.encryptOps)); outputInstructions.Add(Instruction.CreateLdcI4(fei.salt)); @@ -115,10 +119,19 @@ namespace Obfuz.ObfusPasses.FieldEncrypt // xor outputInstructions.Add(Instruction.CreateLdcI4((int)fei.xorValueForZero)); outputInstructions.Add(Instruction.Create(OpCodes.Xor)); + + if (fei.fieldType == ElementType.R4) + { + outputInstructions.Add(Instruction.Create(OpCodes.Call, importer.CastIntAsFloat)); + } } else if (fei.fieldType == ElementType.I8 || fei.fieldType == ElementType.U8 || fei.fieldType == ElementType.R8) { // value has been put on stack + if (fei.fieldType == ElementType.R8) + { + outputInstructions.Add(Instruction.Create(OpCodes.Call, importer.CastDoubleAsLong)); + } // encrypt outputInstructions.Add(Instruction.CreateLdcI4(fei.encryptOps)); @@ -127,6 +140,10 @@ namespace Obfuz.ObfusPasses.FieldEncrypt // xor outputInstructions.Add(Instruction.Create(OpCodes.Ldc_I8, fei.xorValueForZero)); outputInstructions.Add(Instruction.Create(OpCodes.Xor)); + if (fei.fieldType == ElementType.R8) + { + outputInstructions.Add(Instruction.Create(OpCodes.Call, importer.CastLongAsDouble)); + } } else { @@ -157,6 +174,11 @@ namespace Obfuz.ObfusPasses.FieldEncrypt outputInstructions.Add(Instruction.CreateLdcI4(fei.encryptOps)); outputInstructions.Add(Instruction.CreateLdcI4(fei.salt)); outputInstructions.Add(Instruction.Create(OpCodes.Call, encryptionServiceMetadataImporter.DecryptInt)); + + if (fei.fieldType == ElementType.R4) + { + outputInstructions.Add(Instruction.Create(OpCodes.Call, importer.CastIntAsFloat)); + } } else if (fei.fieldType == ElementType.I8 || fei.fieldType == ElementType.U8 || fei.fieldType == ElementType.R8) { @@ -173,6 +195,11 @@ namespace Obfuz.ObfusPasses.FieldEncrypt outputInstructions.Add(Instruction.CreateLdcI4(fei.encryptOps)); outputInstructions.Add(Instruction.CreateLdcI4(fei.salt)); outputInstructions.Add(Instruction.Create(OpCodes.Call, encryptionServiceMetadataImporter.DecryptLong)); + + if (fei.fieldType == ElementType.R8) + { + outputInstructions.Add(Instruction.Create(OpCodes.Call, importer.CastLongAsDouble)); + } } else {