修复field encrypt在ecrypt时未提前将float和double转为int和long的bug

backup
walon 2025-05-10 19:56:40 +08:00
parent 18800f78c4
commit 8cc1110e07
1 changed files with 8 additions and 0 deletions

View File

@ -122,6 +122,10 @@ namespace Obfuz.ObfusPasses.FieldEncrypt
{
// value has been put on stack
// xor
if (fei.fieldType == ElementType.R4)
{
outputInstructions.Add(Instruction.Create(OpCodes.Call, importer.CastFloatAsInt));
}
outputInstructions.Add(Instruction.CreateLdcI4((int)fei.xorValueForZero));
outputInstructions.Add(Instruction.Create(OpCodes.Xor));
@ -134,6 +138,10 @@ namespace Obfuz.ObfusPasses.FieldEncrypt
{
// value has been put on stack
// xor
if (fei.fieldType == ElementType.R8)
{
outputInstructions.Add(Instruction.Create(OpCodes.Call, importer.CastDoubleAsLong));
}
outputInstructions.Add(Instruction.Create(OpCodes.Ldc_I8, fei.xorValueForZero));
outputInstructions.Add(Instruction.Create(OpCodes.Xor));