From 156bc4c7ee3e6564df24c66a9b6857319a7f17e9 Mon Sep 17 00:00:00 2001 From: de4dot Date: Wed, 16 Oct 2013 10:13:09 +0200 Subject: [PATCH] Rename public value -> Value, validMask -> ValidMask --- de4dot.blocks/cflow/CflowUtils.cs | 2 +- de4dot.blocks/cflow/ConstantsFolder.cs | 4 +- de4dot.blocks/cflow/InstructionEmulator.cs | 2 +- de4dot.blocks/cflow/Int32Value.cs | 196 +++++++++--------- de4dot.blocks/cflow/Int64Value.cs | 168 +++++++-------- de4dot.blocks/cflow/Real8Value.cs | 16 +- de4dot.code/deobfuscators/ArrayFinder.cs | 10 +- .../Babel_NET/BabelMethodCallInliner.cs | 6 +- .../Babel_NET/StringDecrypter.cs | 18 +- .../DeepSea/DsMethodCallInliner.cs | 4 +- .../Eazfuscator_NET/StringDecrypter.cs | 6 +- 11 files changed, 216 insertions(+), 216 deletions(-) diff --git a/de4dot.blocks/cflow/CflowUtils.cs b/de4dot.blocks/cflow/CflowUtils.cs index 1f644bf1..401f75d1 100644 --- a/de4dot.blocks/cflow/CflowUtils.cs +++ b/de4dot.blocks/cflow/CflowUtils.cs @@ -25,7 +25,7 @@ namespace de4dot.blocks.cflow { if (!intValue.AllBitsValid()) return null; - int index = intValue.value; + int index = intValue.Value; if (targets == null || index < 0 || index >= targets.Count) return fallThrough; else diff --git a/de4dot.blocks/cflow/ConstantsFolder.cs b/de4dot.blocks/cflow/ConstantsFolder.cs index 43c291de..917b5c28 100644 --- a/de4dot.blocks/cflow/ConstantsFolder.cs +++ b/de4dot.blocks/cflow/ConstantsFolder.cs @@ -89,14 +89,14 @@ namespace de4dot.blocks.cflow { var intValue = (Int32Value)value; if (!intValue.AllBitsValid()) return false; - block.Instructions[index] = new Instr(Instruction.CreateLdcI4(intValue.value)); + block.Instructions[index] = new Instr(Instruction.CreateLdcI4(intValue.Value)); return true; } else if (value.IsInt64()) { var intValue = (Int64Value)value; if (!intValue.AllBitsValid()) return false; - block.Instructions[index] = new Instr(OpCodes.Ldc_I8.ToInstruction(intValue.value)); + block.Instructions[index] = new Instr(OpCodes.Ldc_I8.ToInstruction(intValue.Value)); return true; } return false; diff --git a/de4dot.blocks/cflow/InstructionEmulator.cs b/de4dot.blocks/cflow/InstructionEmulator.cs index 1e9468c2..56f6a47f 100644 --- a/de4dot.blocks/cflow/InstructionEmulator.cs +++ b/de4dot.blocks/cflow/InstructionEmulator.cs @@ -141,7 +141,7 @@ namespace de4dot.blocks.cflow { case ElementType.R4: if (value.IsReal8()) - return new Real8Value((float)((Real8Value)value).value); + return new Real8Value((float)((Real8Value)value).Value); return new UnknownValue(); case ElementType.R8: diff --git a/de4dot.blocks/cflow/Int32Value.cs b/de4dot.blocks/cflow/Int32Value.cs index 94008b9d..41844f33 100644 --- a/de4dot.blocks/cflow/Int32Value.cs +++ b/de4dot.blocks/cflow/Int32Value.cs @@ -25,23 +25,23 @@ namespace de4dot.blocks.cflow { public static readonly Int32Value One = new Int32Value(1); internal const uint NO_UNKNOWN_BITS = uint.MaxValue; - public readonly int value; - public readonly uint validMask; + public readonly int Value; + public readonly uint ValidMask; public Int32Value(int value) : base(ValueType.Int32) { - this.value = value; - this.validMask = NO_UNKNOWN_BITS; + this.Value = value; + this.ValidMask = NO_UNKNOWN_BITS; } public Int32Value(int value, uint validMask) : base(ValueType.Int32) { - this.value = value; - this.validMask = validMask; + this.Value = value; + this.ValidMask = validMask; } public bool HasUnknownBits() { - return validMask != NO_UNKNOWN_BITS; + return ValidMask != NO_UNKNOWN_BITS; } public bool AllBitsValid() { @@ -49,7 +49,7 @@ namespace de4dot.blocks.cflow { } bool IsBitValid(int n) { - return IsBitValid(validMask, n); + return IsBitValid(ValidMask, n); } static bool IsBitValid(uint validMask, int n) { @@ -57,7 +57,7 @@ namespace de4dot.blocks.cflow { } bool AreBitsValid(uint bitsToTest) { - return (validMask & bitsToTest) == bitsToTest; + return (ValidMask & bitsToTest) == bitsToTest; } public static Int32Value CreateUnknownBool() { @@ -81,11 +81,11 @@ namespace de4dot.blocks.cflow { } public bool IsNonZero() { - return (value & validMask) != 0; + return (Value & ValidMask) != 0; } public bool HasValue(int value) { - return AllBitsValid() && this.value == value; + return AllBitsValid() && this.Value == value; } public bool HasValue(uint value) { @@ -117,11 +117,11 @@ namespace de4dot.blocks.cflow { } public static Int32Value Conv_U1(Int32Value a) { - return Conv_U1(a.value, a.validMask); + return Conv_U1(a.Value, a.ValidMask); } public static Int32Value Conv_U1(Int64Value a) { - return Conv_U1((int)a.value, (uint)a.validMask); + return Conv_U1((int)a.Value, (uint)a.ValidMask); } public static Int32Value Conv_U1(int value, uint validMask) { @@ -131,15 +131,15 @@ namespace de4dot.blocks.cflow { } public static Int32Value Conv_U1(Real8Value a) { - return new Int32Value((int)(byte)a.value); + return new Int32Value((int)(byte)a.Value); } public static Int32Value Conv_I1(Int32Value a) { - return Conv_I1(a.value, a.validMask); + return Conv_I1(a.Value, a.ValidMask); } public static Int32Value Conv_I1(Int64Value a) { - return Conv_I1((int)a.value, (uint)a.validMask); + return Conv_I1((int)a.Value, (uint)a.ValidMask); } public static Int32Value Conv_I1(int value, uint validMask) { @@ -152,15 +152,15 @@ namespace de4dot.blocks.cflow { } public static Int32Value Conv_I1(Real8Value a) { - return new Int32Value((int)(sbyte)a.value); + return new Int32Value((int)(sbyte)a.Value); } public static Int32Value Conv_U2(Int32Value a) { - return Conv_U2(a.value, a.validMask); + return Conv_U2(a.Value, a.ValidMask); } public static Int32Value Conv_U2(Int64Value a) { - return Conv_U2((int)a.value, (uint)a.validMask); + return Conv_U2((int)a.Value, (uint)a.ValidMask); } public static Int32Value Conv_U2(int value, uint validMask) { @@ -170,15 +170,15 @@ namespace de4dot.blocks.cflow { } public static Int32Value Conv_U2(Real8Value a) { - return new Int32Value((int)(ushort)a.value); + return new Int32Value((int)(ushort)a.Value); } public static Int32Value Conv_I2(Int32Value a) { - return Conv_I2(a.value, a.validMask); + return Conv_I2(a.Value, a.ValidMask); } public static Int32Value Conv_I2(Int64Value a) { - return Conv_I2((int)a.value, (uint)a.validMask); + return Conv_I2((int)a.Value, (uint)a.ValidMask); } public static Int32Value Conv_I2(int value, uint validMask) { @@ -191,7 +191,7 @@ namespace de4dot.blocks.cflow { } public static Int32Value Conv_I2(Real8Value a) { - return new Int32Value((int)(short)a.value); + return new Int32Value((int)(short)a.Value); } public static Int32Value Conv_U4(Int32Value a) { @@ -199,11 +199,11 @@ namespace de4dot.blocks.cflow { } public static Int32Value Conv_U4(Int64Value a) { - return new Int32Value((int)(uint)a.value, (uint)a.validMask); + return new Int32Value((int)(uint)a.Value, (uint)a.ValidMask); } public static Int32Value Conv_U4(Real8Value a) { - return new Int32Value((int)(uint)a.value); + return new Int32Value((int)(uint)a.Value); } public static Int32Value Conv_I4(Int32Value a) { @@ -211,15 +211,15 @@ namespace de4dot.blocks.cflow { } public static Int32Value Conv_I4(Int64Value a) { - return new Int32Value((int)a.value, (uint)a.validMask); + return new Int32Value((int)a.Value, (uint)a.ValidMask); } public static Int32Value Conv_I4(Real8Value a) { - return new Int32Value((int)a.value); + return new Int32Value((int)a.Value); } bool CheckSign(uint mask) { - return ((uint)value & mask) == 0 || ((uint)value & mask) == mask; + return ((uint)Value & mask) == 0 || ((uint)Value & mask) == mask; } public static Int32Value Conv_Ovf_I1(Int32Value a) { @@ -231,7 +231,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Conv_Ovf_I1_Un(Int32Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 7) || - (uint)a.value > sbyte.MaxValue) + (uint)a.Value > sbyte.MaxValue) return CreateUnknown(); return Conv_I1(a); } @@ -245,7 +245,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Conv_Ovf_I2_Un(Int32Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 15) || - (uint)a.value > short.MaxValue) + (uint)a.Value > short.MaxValue) return CreateUnknown(); return Conv_I2(a); } @@ -255,52 +255,52 @@ namespace de4dot.blocks.cflow { } public static Int32Value Conv_Ovf_I4_Un(Int32Value a) { - if (!IsBitValid(a.validMask, 31) || a.value < 0) + if (!IsBitValid(a.ValidMask, 31) || a.Value < 0) return CreateUnknown(); return a; } public static Int64Value Conv_Ovf_I8(Int32Value a) { - ulong validMask = a.validMask; - if (IsBitValid(a.validMask, 31)) + ulong validMask = a.ValidMask; + if (IsBitValid(a.ValidMask, 31)) validMask |= Int64Value.NO_UNKNOWN_BITS << 32; - return new Int64Value(a.value, validMask); + return new Int64Value(a.Value, validMask); } public static Int64Value Conv_Ovf_I8_Un(Int32Value a) { - return new Int64Value((long)(uint)a.value, a.validMask | (Int64Value.NO_UNKNOWN_BITS << 32)); + return new Int64Value((long)(uint)a.Value, a.ValidMask | (Int64Value.NO_UNKNOWN_BITS << 32)); } public static Int32Value Conv_Ovf_U1(Int32Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 7) || - a.value < 0 || a.value > byte.MaxValue) + a.Value < 0 || a.Value > byte.MaxValue) return CreateUnknownUInt8(); return Conv_U1(a); } public static Int32Value Conv_Ovf_U1_Un(Int32Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 8) || - (uint)a.value > byte.MaxValue) + (uint)a.Value > byte.MaxValue) return CreateUnknownUInt8(); return Conv_U1(a); } public static Int32Value Conv_Ovf_U2(Int32Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 15) || - a.value < 0 || a.value > ushort.MaxValue) + a.Value < 0 || a.Value > ushort.MaxValue) return CreateUnknownUInt16(); return Conv_U2(a); } public static Int32Value Conv_Ovf_U2_Un(Int32Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 16) || - (uint)a.value > ushort.MaxValue) + (uint)a.Value > ushort.MaxValue) return CreateUnknownUInt16(); return Conv_U2(a); } public static Int32Value Conv_Ovf_U4(Int32Value a) { - if (!IsBitValid(a.validMask, 31) || a.value < 0) + if (!IsBitValid(a.ValidMask, 31) || a.Value < 0) return CreateUnknown(); return a; } @@ -310,26 +310,26 @@ namespace de4dot.blocks.cflow { } public static Int64Value Conv_Ovf_U8(Int32Value a) { - if (!IsBitValid(a.validMask, 31) || a.value < 0) + if (!IsBitValid(a.ValidMask, 31) || a.Value < 0) return Int64Value.CreateUnknown(); - return new Int64Value(a.value, (ulong)a.validMask | (Int64Value.NO_UNKNOWN_BITS << 32)); + return new Int64Value(a.Value, (ulong)a.ValidMask | (Int64Value.NO_UNKNOWN_BITS << 32)); } public static Int64Value Conv_Ovf_U8_Un(Int32Value a) { - return new Int64Value((long)(uint)a.value, a.validMask | (Int64Value.NO_UNKNOWN_BITS << 32)); + return new Int64Value((long)(uint)a.Value, a.ValidMask | (Int64Value.NO_UNKNOWN_BITS << 32)); } public static Int32Value Add(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return new Int32Value(a.value + b.value); + return new Int32Value(a.Value + b.Value); if (ReferenceEquals(a, b)) - return new Int32Value(a.value << 1, (a.validMask << 1) | 1); + return new Int32Value(a.Value << 1, (a.ValidMask << 1) | 1); return CreateUnknown(); } public static Int32Value Sub(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return new Int32Value(a.value - b.value); + return new Int32Value(a.Value - b.Value); if (ReferenceEquals(a, b)) return Zero; return CreateUnknown(); @@ -337,7 +337,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Mul(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return new Int32Value(a.value * b.value); + return new Int32Value(a.Value * b.Value); if (a.IsZero() || b.IsZero()) return Zero; if (a.HasValue(1)) @@ -350,7 +350,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Div(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int32Value(a.value / b.value); + return new Int32Value(a.Value / b.Value); } catch (ArithmeticException) { return CreateUnknown(); @@ -366,7 +366,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Div_Un(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int32Value((int)((uint)a.value / (uint)b.value)); + return new Int32Value((int)((uint)a.Value / (uint)b.Value)); } catch (ArithmeticException) { return CreateUnknown(); @@ -382,7 +382,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Rem(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int32Value(a.value % b.value); + return new Int32Value(a.Value % b.Value); } catch (ArithmeticException) { return CreateUnknown(); @@ -396,7 +396,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Rem_Un(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int32Value((int)((uint)a.value % (uint)b.value)); + return new Int32Value((int)((uint)a.Value % (uint)b.Value)); } catch (ArithmeticException) { return CreateUnknown(); @@ -409,14 +409,14 @@ namespace de4dot.blocks.cflow { public static Int32Value Neg(Int32Value a) { if (a.AllBitsValid()) - return new Int32Value(-a.value); + return new Int32Value(-a.Value); return CreateUnknown(); } public static Int32Value Add_Ovf(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int32Value(checked(a.value + b.value)); + return new Int32Value(checked(a.Value + b.Value)); } catch (OverflowException) { } @@ -426,7 +426,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Add_Ovf_Un(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { - uint aa = (uint)a.value, bb = (uint)b.value; + uint aa = (uint)a.Value, bb = (uint)b.Value; try { return new Int32Value((int)checked(aa + bb)); } @@ -439,7 +439,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Sub_Ovf(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int32Value(checked(a.value - b.value)); + return new Int32Value(checked(a.Value - b.Value)); } catch (OverflowException) { } @@ -449,7 +449,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Sub_Ovf_Un(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { - uint aa = (uint)a.value, bb = (uint)b.value; + uint aa = (uint)a.Value, bb = (uint)b.Value; try { return new Int32Value((int)checked(aa - bb)); } @@ -462,7 +462,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Mul_Ovf(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int32Value(checked(a.value * b.value)); + return new Int32Value(checked(a.Value * b.Value)); } catch (OverflowException) { } @@ -472,7 +472,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Mul_Ovf_Un(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { - uint aa = (uint)a.value, bb = (uint)b.value; + uint aa = (uint)a.Value, bb = (uint)b.Value; try { return new Int32Value((int)checked(aa * bb)); } @@ -483,65 +483,65 @@ namespace de4dot.blocks.cflow { } public static Int32Value And(Int32Value a, Int32Value b) { - int av = a.value, bv = b.value; - uint am = a.validMask, bm = b.validMask; + int av = a.Value, bv = b.Value; + uint am = a.ValidMask, bm = b.ValidMask; return new Int32Value(av & bv, (am & bm) | (((uint)av & am) ^ am) | (((uint)bv & bm) ^ bm)); } public static Int32Value Or(Int32Value a, Int32Value b) { - int av = a.value, bv = b.value; - uint am = a.validMask, bm = b.validMask; + int av = a.Value, bv = b.Value; + uint am = a.ValidMask, bm = b.ValidMask; return new Int32Value(av | bv, (am & bm) | ((uint)av & am) | ((uint)bv & bm)); } public static Int32Value Xor(Int32Value a, Int32Value b) { if (ReferenceEquals(a, b)) return Zero; - int av = a.value, bv = b.value; - uint am = a.validMask, bm = b.validMask; + int av = a.Value, bv = b.Value; + uint am = a.ValidMask, bm = b.ValidMask; return new Int32Value(av ^ bv, am & bm); } public static Int32Value Not(Int32Value a) { - return new Int32Value(~a.value, a.validMask); + return new Int32Value(~a.Value, a.ValidMask); } public static Int32Value Shl(Int32Value a, Int32Value b) { if (b.HasUnknownBits()) return CreateUnknown(); - if (b.value == 0) + if (b.Value == 0) return a; - if (b.value < 0 || b.value >= sizeof(int) * 8) + if (b.Value < 0 || b.Value >= sizeof(int) * 8) return CreateUnknown(); - int shift = b.value; - uint validMask = (a.validMask << shift) | (uint.MaxValue >> (sizeof(int) * 8 - shift)); - return new Int32Value(a.value << shift, validMask); + int shift = b.Value; + uint validMask = (a.ValidMask << shift) | (uint.MaxValue >> (sizeof(int) * 8 - shift)); + return new Int32Value(a.Value << shift, validMask); } public static Int32Value Shr(Int32Value a, Int32Value b) { if (b.HasUnknownBits()) return CreateUnknown(); - if (b.value == 0) + if (b.Value == 0) return a; - if (b.value < 0 || b.value >= sizeof(int) * 8) + if (b.Value < 0 || b.Value >= sizeof(int) * 8) return CreateUnknown(); - int shift = b.value; - uint validMask = a.validMask >> shift; + int shift = b.Value; + uint validMask = a.ValidMask >> shift; if (a.IsBitValid(sizeof(int) * 8 - 1)) validMask |= (uint.MaxValue << (sizeof(int) * 8 - shift)); - return new Int32Value(a.value >> shift, validMask); + return new Int32Value(a.Value >> shift, validMask); } public static Int32Value Shr_Un(Int32Value a, Int32Value b) { if (b.HasUnknownBits()) return CreateUnknown(); - if (b.value == 0) + if (b.Value == 0) return a; - if (b.value < 0 || b.value >= sizeof(int) * 8) + if (b.Value < 0 || b.Value >= sizeof(int) * 8) return CreateUnknown(); - int shift = b.value; - uint validMask = (a.validMask >> shift) | (uint.MaxValue << (sizeof(int) * 8 - shift)); - return new Int32Value((int)((uint)a.value >> shift), validMask); + int shift = b.Value; + uint validMask = (a.ValidMask >> shift) | (uint.MaxValue << (sizeof(int) * 8 - shift)); + return new Int32Value((int)((uint)a.Value >> shift), validMask); } static Int32Value create(Bool3 b) { @@ -574,27 +574,27 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareEq(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return a.value == b.value ? Bool3.True : Bool3.False; + return a.Value == b.Value ? Bool3.True : Bool3.False; if (ReferenceEquals(a, b)) return Bool3.True; - if ((a.value & a.validMask & b.validMask) != (b.value & a.validMask & b.validMask)) + if ((a.Value & a.ValidMask & b.ValidMask) != (b.Value & a.ValidMask & b.ValidMask)) return Bool3.False; return Bool3.Unknown; } public static Bool3 CompareNeq(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return a.value != b.value ? Bool3.True : Bool3.False; + return a.Value != b.Value ? Bool3.True : Bool3.False; if (ReferenceEquals(a, b)) return Bool3.False; - if ((a.value & a.validMask & b.validMask) != (b.value & a.validMask & b.validMask)) + if ((a.Value & a.ValidMask & b.ValidMask) != (b.Value & a.ValidMask & b.ValidMask)) return Bool3.True; return Bool3.Unknown; } public static Bool3 CompareGt(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return a.value > b.value ? Bool3.True : Bool3.False; + return a.Value > b.Value ? Bool3.True : Bool3.False; if (a.HasValue(int.MinValue)) return Bool3.False; // min > x => false if (b.HasValue(int.MaxValue)) @@ -604,7 +604,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareGt_Un(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return (uint)a.value > (uint)b.value ? Bool3.True : Bool3.False; + return (uint)a.Value > (uint)b.Value ? Bool3.True : Bool3.False; if (a.HasValue(uint.MinValue)) return Bool3.False; // min > x => false if (b.HasValue(uint.MaxValue)) @@ -614,7 +614,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareGe(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return a.value >= b.value ? Bool3.True : Bool3.False; + return a.Value >= b.Value ? Bool3.True : Bool3.False; if (a.HasValue(int.MaxValue)) return Bool3.True; // max >= x => true if (b.HasValue(int.MinValue)) @@ -624,7 +624,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareGe_Un(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return (uint)a.value >= (uint)b.value ? Bool3.True : Bool3.False; + return (uint)a.Value >= (uint)b.Value ? Bool3.True : Bool3.False; if (a.HasValue(uint.MaxValue)) return Bool3.True; // max >= x => true if (b.HasValue(uint.MinValue)) @@ -634,7 +634,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareLe(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return a.value <= b.value ? Bool3.True : Bool3.False; + return a.Value <= b.Value ? Bool3.True : Bool3.False; if (a.HasValue(int.MinValue)) return Bool3.True; // min <= x => true if (b.HasValue(int.MaxValue)) @@ -644,7 +644,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareLe_Un(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return (uint)a.value <= (uint)b.value ? Bool3.True : Bool3.False; + return (uint)a.Value <= (uint)b.Value ? Bool3.True : Bool3.False; if (a.HasValue(uint.MinValue)) return Bool3.True; // min <= x => true if (b.HasValue(uint.MaxValue)) @@ -654,7 +654,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareLt(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return a.value < b.value ? Bool3.True : Bool3.False; + return a.Value < b.Value ? Bool3.True : Bool3.False; if (a.HasValue(int.MaxValue)) return Bool3.False; // max < x => false if (b.HasValue(int.MinValue)) @@ -664,7 +664,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareLt_Un(Int32Value a, Int32Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return (uint)a.value < (uint)b.value ? Bool3.True : Bool3.False; + return (uint)a.Value < (uint)b.Value ? Bool3.True : Bool3.False; if (a.HasValue(uint.MaxValue)) return Bool3.False; // max < x => false if (b.HasValue(uint.MinValue)) @@ -674,24 +674,24 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareTrue(Int32Value a) { if (a.AllBitsValid()) - return a.value != 0 ? Bool3.True : Bool3.False; - if ((a.value & a.validMask) != 0) + return a.Value != 0 ? Bool3.True : Bool3.False; + if ((a.Value & a.ValidMask) != 0) return Bool3.True; return Bool3.Unknown; } public static Bool3 CompareFalse(Int32Value a) { if (a.AllBitsValid()) - return a.value == 0 ? Bool3.True : Bool3.False; - if ((a.value & a.validMask) != 0) + return a.Value == 0 ? Bool3.True : Bool3.False; + if ((a.Value & a.ValidMask) != 0) return Bool3.False; return Bool3.Unknown; } public override string ToString() { if (AllBitsValid()) - return value.ToString(); - return string.Format("0x{0:X8}({1:X8})", value, validMask); + return Value.ToString(); + return string.Format("0x{0:X8}({1:X8})", Value, ValidMask); } } } diff --git a/de4dot.blocks/cflow/Int64Value.cs b/de4dot.blocks/cflow/Int64Value.cs index d9f129ae..0bf4a558 100644 --- a/de4dot.blocks/cflow/Int64Value.cs +++ b/de4dot.blocks/cflow/Int64Value.cs @@ -25,23 +25,23 @@ namespace de4dot.blocks.cflow { public static readonly Int64Value One = new Int64Value(1); internal const ulong NO_UNKNOWN_BITS = ulong.MaxValue; - public readonly long value; - public readonly ulong validMask; + public readonly long Value; + public readonly ulong ValidMask; public Int64Value(long value) : base(ValueType.Int64) { - this.value = value; - this.validMask = NO_UNKNOWN_BITS; + this.Value = value; + this.ValidMask = NO_UNKNOWN_BITS; } public Int64Value(long value, ulong validMask) : base(ValueType.Int64) { - this.value = value; - this.validMask = validMask; + this.Value = value; + this.ValidMask = validMask; } bool HasUnknownBits() { - return validMask != NO_UNKNOWN_BITS; + return ValidMask != NO_UNKNOWN_BITS; } public bool AllBitsValid() { @@ -49,7 +49,7 @@ namespace de4dot.blocks.cflow { } bool IsBitValid(int n) { - return IsBitValid(validMask, n); + return IsBitValid(ValidMask, n); } static bool IsBitValid(ulong validMask, int n) { @@ -57,7 +57,7 @@ namespace de4dot.blocks.cflow { } bool AreBitsValid(ulong bitsToTest) { - return (validMask & bitsToTest) == bitsToTest; + return (ValidMask & bitsToTest) == bitsToTest; } public static Int64Value CreateUnknown() { @@ -69,11 +69,11 @@ namespace de4dot.blocks.cflow { } public bool IsNonZero() { - return ((ulong)value & validMask) != 0; + return ((ulong)Value & ValidMask) != 0; } public bool HasValue(long value) { - return AllBitsValid() && this.value == value; + return AllBitsValid() && this.Value == value; } public bool HasValue(ulong value) { @@ -81,8 +81,8 @@ namespace de4dot.blocks.cflow { } public static Int64Value Conv_U8(Int32Value a) { - long value = (long)(ulong)(uint)a.value; - ulong validMask = a.validMask | (NO_UNKNOWN_BITS << 32); + long value = (long)(ulong)(uint)a.Value; + ulong validMask = a.ValidMask | (NO_UNKNOWN_BITS << 32); return new Int64Value(value, validMask); } @@ -91,12 +91,12 @@ namespace de4dot.blocks.cflow { } public static Int64Value Conv_U8(Real8Value a) { - return new Int64Value((long)(ulong)a.value); + return new Int64Value((long)(ulong)a.Value); } public static Int64Value Conv_I8(Int32Value a) { - long value = a.value; - ulong validMask = a.validMask; + long value = a.Value; + ulong validMask = a.ValidMask; if (IsBitValid(validMask, 31)) validMask |= NO_UNKNOWN_BITS << 32; else @@ -109,11 +109,11 @@ namespace de4dot.blocks.cflow { } public static Int64Value Conv_I8(Real8Value a) { - return new Int64Value((long)a.value); + return new Int64Value((long)a.Value); } bool CheckSign(ulong mask) { - return ((ulong)value & mask) == 0 || ((ulong)value & mask) == mask; + return ((ulong)Value & mask) == 0 || ((ulong)Value & mask) == mask; } public static Int32Value Conv_Ovf_I1(Int64Value a) { @@ -125,7 +125,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Conv_Ovf_I1_Un(Int64Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 7) || - (ulong)a.value > (ulong)sbyte.MaxValue) + (ulong)a.Value > (ulong)sbyte.MaxValue) return Int32Value.CreateUnknown(); return Int32Value.Conv_I1(a); } @@ -139,7 +139,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Conv_Ovf_I2_Un(Int64Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 15) || - (ulong)a.value > (ulong)short.MaxValue) + (ulong)a.Value > (ulong)short.MaxValue) return Int32Value.CreateUnknown(); return Int32Value.Conv_I2(a); } @@ -153,7 +153,7 @@ namespace de4dot.blocks.cflow { public static Int32Value Conv_Ovf_I4_Un(Int64Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 31) || - (ulong)a.value > (ulong)int.MaxValue) + (ulong)a.Value > (ulong)int.MaxValue) return Int32Value.CreateUnknown(); return Int32Value.Conv_I4(a); } @@ -163,55 +163,55 @@ namespace de4dot.blocks.cflow { } public static Int64Value Conv_Ovf_I8_Un(Int64Value a) { - if (!IsBitValid(a.validMask, 63) || a.value < 0) + if (!IsBitValid(a.ValidMask, 63) || a.Value < 0) return CreateUnknown(); return a; } public static Int32Value Conv_Ovf_U1(Int64Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 7) || - a.value < 0 || a.value > byte.MaxValue) + a.Value < 0 || a.Value > byte.MaxValue) return Int32Value.CreateUnknownUInt8(); return Int32Value.Conv_U1(a); } public static Int32Value Conv_Ovf_U1_Un(Int64Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 8) || - (ulong)a.value > byte.MaxValue) + (ulong)a.Value > byte.MaxValue) return Int32Value.CreateUnknownUInt8(); return Int32Value.Conv_U1(a); } public static Int32Value Conv_Ovf_U2(Int64Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 15) || - a.value < 0 || a.value > ushort.MaxValue) + a.Value < 0 || a.Value > ushort.MaxValue) return Int32Value.CreateUnknownUInt16(); return Int32Value.Conv_U2(a); } public static Int32Value Conv_Ovf_U2_Un(Int64Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 16) || - (ulong)a.value > ushort.MaxValue) + (ulong)a.Value > ushort.MaxValue) return Int32Value.CreateUnknownUInt16(); return Int32Value.Conv_U2(a); } public static Int32Value Conv_Ovf_U4(Int64Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 31) || - a.value < 0 || a.value > uint.MaxValue) + a.Value < 0 || a.Value > uint.MaxValue) return Int32Value.CreateUnknown(); return Int32Value.Conv_U4(a); } public static Int32Value Conv_Ovf_U4_Un(Int64Value a) { if (!a.AreBitsValid(NO_UNKNOWN_BITS << 32) || - (ulong)a.value > uint.MaxValue) + (ulong)a.Value > uint.MaxValue) return Int32Value.CreateUnknown(); return Int32Value.Conv_U4(a); } public static Int64Value Conv_Ovf_U8(Int64Value a) { - if (!IsBitValid(a.validMask, 63) || a.value < 0) + if (!IsBitValid(a.ValidMask, 63) || a.Value < 0) return CreateUnknown(); return a; } @@ -222,15 +222,15 @@ namespace de4dot.blocks.cflow { public static Int64Value Add(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return new Int64Value(a.value + b.value); + return new Int64Value(a.Value + b.Value); if (ReferenceEquals(a, b)) - return new Int64Value(a.value << 1, (a.validMask << 1) | 1); + return new Int64Value(a.Value << 1, (a.ValidMask << 1) | 1); return CreateUnknown(); } public static Int64Value Sub(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return new Int64Value(a.value - b.value); + return new Int64Value(a.Value - b.Value); if (ReferenceEquals(a, b)) return Zero; return CreateUnknown(); @@ -238,7 +238,7 @@ namespace de4dot.blocks.cflow { public static Int64Value Mul(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return new Int64Value(a.value * b.value); + return new Int64Value(a.Value * b.Value); if (a.IsZero() || b.IsZero()) return Zero; if (a.HasValue(1)) @@ -251,7 +251,7 @@ namespace de4dot.blocks.cflow { public static Int64Value Div(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int64Value(a.value / b.value); + return new Int64Value(a.Value / b.Value); } catch (ArithmeticException) { return CreateUnknown(); @@ -267,7 +267,7 @@ namespace de4dot.blocks.cflow { public static Int64Value Div_Un(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int64Value((long)((ulong)a.value / (ulong)b.value)); + return new Int64Value((long)((ulong)a.Value / (ulong)b.Value)); } catch (ArithmeticException) { return CreateUnknown(); @@ -283,7 +283,7 @@ namespace de4dot.blocks.cflow { public static Int64Value Rem(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int64Value(a.value % b.value); + return new Int64Value(a.Value % b.Value); } catch (ArithmeticException) { return CreateUnknown(); @@ -297,7 +297,7 @@ namespace de4dot.blocks.cflow { public static Int64Value Rem_Un(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int64Value((long)((ulong)a.value % (ulong)b.value)); + return new Int64Value((long)((ulong)a.Value % (ulong)b.Value)); } catch (ArithmeticException) { return CreateUnknown(); @@ -310,14 +310,14 @@ namespace de4dot.blocks.cflow { public static Int64Value Neg(Int64Value a) { if (a.AllBitsValid()) - return new Int64Value(-a.value); + return new Int64Value(-a.Value); return CreateUnknown(); } public static Int64Value Add_Ovf(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int64Value(checked(a.value + b.value)); + return new Int64Value(checked(a.Value + b.Value)); } catch (OverflowException) { } @@ -327,7 +327,7 @@ namespace de4dot.blocks.cflow { public static Int64Value Add_Ovf_Un(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { - ulong aa = (ulong)a.value, bb = (ulong)b.value; + ulong aa = (ulong)a.Value, bb = (ulong)b.Value; try { return new Int64Value((long)checked(aa + bb)); } @@ -340,7 +340,7 @@ namespace de4dot.blocks.cflow { public static Int64Value Sub_Ovf(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int64Value(checked(a.value - b.value)); + return new Int64Value(checked(a.Value - b.Value)); } catch (OverflowException) { } @@ -350,7 +350,7 @@ namespace de4dot.blocks.cflow { public static Int64Value Sub_Ovf_Un(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { - ulong aa = (ulong)a.value, bb = (ulong)b.value; + ulong aa = (ulong)a.Value, bb = (ulong)b.Value; try { return new Int64Value((long)checked(aa - bb)); } @@ -363,7 +363,7 @@ namespace de4dot.blocks.cflow { public static Int64Value Mul_Ovf(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { try { - return new Int64Value(checked(a.value * b.value)); + return new Int64Value(checked(a.Value * b.Value)); } catch (OverflowException) { } @@ -373,7 +373,7 @@ namespace de4dot.blocks.cflow { public static Int64Value Mul_Ovf_Un(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) { - ulong aa = (ulong)a.value, bb = (ulong)b.value; + ulong aa = (ulong)a.Value, bb = (ulong)b.Value; try { return new Int64Value((long)checked(aa * bb)); } @@ -384,65 +384,65 @@ namespace de4dot.blocks.cflow { } public static Int64Value And(Int64Value a, Int64Value b) { - long av = a.value, bv = b.value; - ulong am = a.validMask, bm = b.validMask; + long av = a.Value, bv = b.Value; + ulong am = a.ValidMask, bm = b.ValidMask; return new Int64Value(av & bv, (am & bm) | (((ulong)av & am) ^ am) | (((ulong)bv & bm) ^ bm)); } public static Int64Value Or(Int64Value a, Int64Value b) { - long av = a.value, bv = b.value; - ulong am = a.validMask, bm = b.validMask; + long av = a.Value, bv = b.Value; + ulong am = a.ValidMask, bm = b.ValidMask; return new Int64Value(av | bv, (am & bm) | ((ulong)av & am) | ((ulong)bv & bm)); } public static Int64Value Xor(Int64Value a, Int64Value b) { if (ReferenceEquals(a, b)) return Zero; - long av = a.value, bv = b.value; - ulong am = a.validMask, bm = b.validMask; + long av = a.Value, bv = b.Value; + ulong am = a.ValidMask, bm = b.ValidMask; return new Int64Value(av ^ bv, am & bm); } public static Int64Value Not(Int64Value a) { - return new Int64Value(~a.value, a.validMask); + return new Int64Value(~a.Value, a.ValidMask); } public static Int64Value Shl(Int64Value a, Int32Value b) { if (b.HasUnknownBits()) return CreateUnknown(); - if (b.value == 0) + if (b.Value == 0) return a; - if (b.value < 0 || b.value >= sizeof(long) * 8) + if (b.Value < 0 || b.Value >= sizeof(long) * 8) return CreateUnknown(); - int shift = b.value; - ulong validMask = (a.validMask << shift) | (ulong.MaxValue >> (sizeof(long) * 8 - shift)); - return new Int64Value(a.value << shift, validMask); + int shift = b.Value; + ulong validMask = (a.ValidMask << shift) | (ulong.MaxValue >> (sizeof(long) * 8 - shift)); + return new Int64Value(a.Value << shift, validMask); } public static Int64Value Shr(Int64Value a, Int32Value b) { if (b.HasUnknownBits()) return CreateUnknown(); - if (b.value == 0) + if (b.Value == 0) return a; - if (b.value < 0 || b.value >= sizeof(long) * 8) + if (b.Value < 0 || b.Value >= sizeof(long) * 8) return CreateUnknown(); - int shift = b.value; - ulong validMask = a.validMask >> shift; + int shift = b.Value; + ulong validMask = a.ValidMask >> shift; if (a.IsBitValid(sizeof(long) * 8 - 1)) validMask |= (ulong.MaxValue << (sizeof(long) * 8 - shift)); - return new Int64Value(a.value >> shift, validMask); + return new Int64Value(a.Value >> shift, validMask); } public static Int64Value Shr_Un(Int64Value a, Int32Value b) { if (b.HasUnknownBits()) return CreateUnknown(); - if (b.value == 0) + if (b.Value == 0) return a; - if (b.value < 0 || b.value >= sizeof(long) * 8) + if (b.Value < 0 || b.Value >= sizeof(long) * 8) return CreateUnknown(); - int shift = b.value; - ulong validMask = (a.validMask >> shift) | (ulong.MaxValue << (sizeof(long) * 8 - shift)); - return new Int64Value((long)((ulong)a.value >> shift), validMask); + int shift = b.Value; + ulong validMask = (a.ValidMask >> shift) | (ulong.MaxValue << (sizeof(long) * 8 - shift)); + return new Int64Value((long)((ulong)a.Value >> shift), validMask); } static Int32Value Create(Bool3 b) { @@ -475,27 +475,27 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareEq(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return a.value == b.value ? Bool3.True : Bool3.False; + return a.Value == b.Value ? Bool3.True : Bool3.False; if (ReferenceEquals(a, b)) return Bool3.True; - if (((ulong)a.value & a.validMask & b.validMask) != ((ulong)b.value & a.validMask & b.validMask)) + if (((ulong)a.Value & a.ValidMask & b.ValidMask) != ((ulong)b.Value & a.ValidMask & b.ValidMask)) return Bool3.False; return Bool3.Unknown; } public static Bool3 CompareNeq(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return a.value != b.value ? Bool3.True : Bool3.False; + return a.Value != b.Value ? Bool3.True : Bool3.False; if (ReferenceEquals(a, b)) return Bool3.False; - if (((ulong)a.value & a.validMask & b.validMask) != ((ulong)b.value & a.validMask & b.validMask)) + if (((ulong)a.Value & a.ValidMask & b.ValidMask) != ((ulong)b.Value & a.ValidMask & b.ValidMask)) return Bool3.True; return Bool3.Unknown; } public static Bool3 CompareGt(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return a.value > b.value ? Bool3.True : Bool3.False; + return a.Value > b.Value ? Bool3.True : Bool3.False; if (a.HasValue(long.MinValue)) return Bool3.False; // min > x => false if (b.HasValue(long.MaxValue)) @@ -505,7 +505,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareGt_Un(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return (ulong)a.value > (ulong)b.value ? Bool3.True : Bool3.False; + return (ulong)a.Value > (ulong)b.Value ? Bool3.True : Bool3.False; if (a.HasValue(ulong.MinValue)) return Bool3.False; // min > x => false if (b.HasValue(ulong.MaxValue)) @@ -515,7 +515,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareGe(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return a.value >= b.value ? Bool3.True : Bool3.False; + return a.Value >= b.Value ? Bool3.True : Bool3.False; if (a.HasValue(long.MaxValue)) return Bool3.True; // max >= x => true if (b.HasValue(long.MinValue)) @@ -525,7 +525,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareGe_Un(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return (ulong)a.value >= (ulong)b.value ? Bool3.True : Bool3.False; + return (ulong)a.Value >= (ulong)b.Value ? Bool3.True : Bool3.False; if (a.HasValue(ulong.MaxValue)) return Bool3.True; // max >= x => true if (b.HasValue(ulong.MinValue)) @@ -535,7 +535,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareLe(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return a.value <= b.value ? Bool3.True : Bool3.False; + return a.Value <= b.Value ? Bool3.True : Bool3.False; if (a.HasValue(long.MinValue)) return Bool3.True; // min <= x => true if (b.HasValue(long.MaxValue)) @@ -545,7 +545,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareLe_Un(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return (ulong)a.value <= (ulong)b.value ? Bool3.True : Bool3.False; + return (ulong)a.Value <= (ulong)b.Value ? Bool3.True : Bool3.False; if (a.HasValue(ulong.MinValue)) return Bool3.True; // min <= x => true if (b.HasValue(ulong.MaxValue)) @@ -555,7 +555,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareLt(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return a.value < b.value ? Bool3.True : Bool3.False; + return a.Value < b.Value ? Bool3.True : Bool3.False; if (a.HasValue(long.MaxValue)) return Bool3.False; // max < x => false if (b.HasValue(long.MinValue)) @@ -565,7 +565,7 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareLt_Un(Int64Value a, Int64Value b) { if (a.AllBitsValid() && b.AllBitsValid()) - return (ulong)a.value < (ulong)b.value ? Bool3.True : Bool3.False; + return (ulong)a.Value < (ulong)b.Value ? Bool3.True : Bool3.False; if (a.HasValue(ulong.MaxValue)) return Bool3.False; // max < x => false if (b.HasValue(ulong.MinValue)) @@ -575,24 +575,24 @@ namespace de4dot.blocks.cflow { public static Bool3 CompareTrue(Int64Value a) { if (a.AllBitsValid()) - return a.value != 0 ? Bool3.True : Bool3.False; - if (((ulong)a.value & a.validMask) != 0) + return a.Value != 0 ? Bool3.True : Bool3.False; + if (((ulong)a.Value & a.ValidMask) != 0) return Bool3.True; return Bool3.Unknown; } public static Bool3 CompareFalse(Int64Value a) { if (a.AllBitsValid()) - return a.value == 0 ? Bool3.True : Bool3.False; - if (((ulong)a.value & a.validMask) != 0) + return a.Value == 0 ? Bool3.True : Bool3.False; + if (((ulong)a.Value & a.ValidMask) != 0) return Bool3.False; return Bool3.Unknown; } public override string ToString() { if (AllBitsValid()) - return value.ToString(); - return string.Format("0x{0:X8}L({1:X8})", value, validMask); + return Value.ToString(); + return string.Format("0x{0:X8}L({1:X8})", Value, ValidMask); } } } diff --git a/de4dot.blocks/cflow/Real8Value.cs b/de4dot.blocks/cflow/Real8Value.cs index 430ef9c6..511fcbaf 100644 --- a/de4dot.blocks/cflow/Real8Value.cs +++ b/de4dot.blocks/cflow/Real8Value.cs @@ -19,35 +19,35 @@ namespace de4dot.blocks.cflow { public class Real8Value : Value { - public readonly double value; + public readonly double Value; public Real8Value(double value) : base(ValueType.Real8) { - this.value = value; + this.Value = value; } public static Real8Value Add(Real8Value a, Real8Value b) { - return new Real8Value(a.value + b.value); + return new Real8Value(a.Value + b.Value); } public static Real8Value Sub(Real8Value a, Real8Value b) { - return new Real8Value(a.value - b.value); + return new Real8Value(a.Value - b.Value); } public static Real8Value Mul(Real8Value a, Real8Value b) { - return new Real8Value(a.value * b.value); + return new Real8Value(a.Value * b.Value); } public static Real8Value Div(Real8Value a, Real8Value b) { - return new Real8Value(a.value / b.value); + return new Real8Value(a.Value / b.Value); } public static Real8Value Rem(Real8Value a, Real8Value b) { - return new Real8Value(a.value % b.value); + return new Real8Value(a.Value % b.Value); } public static Real8Value Neg(Real8Value a) { - return new Real8Value(-a.value); + return new Real8Value(-a.Value); } public static Int32Value Conv_Ovf_I1(Real8Value a) { diff --git a/de4dot.code/deobfuscators/ArrayFinder.cs b/de4dot.code/deobfuscators/ArrayFinder.cs index 821405eb..af7ccc1b 100644 --- a/de4dot.code/deobfuscators/ArrayFinder.cs +++ b/de4dot.code/deobfuscators/ArrayFinder.cs @@ -86,7 +86,7 @@ namespace de4dot.code.deobfuscators { var intValue = resultValueArray[i] as Int32Value; if (intValue == null || !intValue.AllBitsValid()) return null; - resultArray[i] = (byte)intValue.value; + resultArray[i] = (byte)intValue.Value; } return resultArray; } @@ -99,7 +99,7 @@ namespace de4dot.code.deobfuscators { var intValue = resultValueArray[i] as Int32Value; if (intValue == null || !intValue.AllBitsValid()) return null; - resultArray[i] = (short)intValue.value; + resultArray[i] = (short)intValue.Value; } return resultArray; } @@ -112,7 +112,7 @@ namespace de4dot.code.deobfuscators { var intValue = resultValueArray[i] as Int32Value; if (intValue == null || !intValue.AllBitsValid()) return null; - resultArray[i] = (int)intValue.value; + resultArray[i] = (int)intValue.Value; } return resultArray; } @@ -168,8 +168,8 @@ namespace de4dot.code.deobfuscators { var index = emulator.Pop() as Int32Value; var array = emulator.Pop(); if (ReferenceEquals(array, theArray) && index != null && index.AllBitsValid()) { - if (0 <= index.value && index.value < resultValueArray.Length) - resultValueArray[index.value] = value; + if (0 <= index.Value && index.Value < resultValueArray.Length) + resultValueArray[index.Value] = value; } } else diff --git a/de4dot.code/deobfuscators/Babel_NET/BabelMethodCallInliner.cs b/de4dot.code/deobfuscators/Babel_NET/BabelMethodCallInliner.cs index eb514e26..88623545 100644 --- a/de4dot.code/deobfuscators/Babel_NET/BabelMethodCallInliner.cs +++ b/de4dot.code/deobfuscators/Babel_NET/BabelMethodCallInliner.cs @@ -64,8 +64,8 @@ namespace de4dot.code.deobfuscators.Babel_NET { return false; var instr = instructions[emulateIndex]; var targets = (Instruction[])instr.Operand; - if (switchIndex.value >= 0 && switchIndex.value < targets.Length) - emulateIndex = instructions.IndexOf(targets[switchIndex.value]); + if (switchIndex.Value >= 0 && switchIndex.Value < targets.Length) + emulateIndex = instructions.IndexOf(targets[switchIndex.Value]); else emulateIndex++; return true; @@ -221,7 +221,7 @@ namespace de4dot.code.deobfuscators.Babel_NET { var retValue2 = (Int32Value)retValue; if (!retValue2.AllBitsValid()) return false; - newValue = retValue2.value; + newValue = retValue2.Value; return true; default: diff --git a/de4dot.code/deobfuscators/Babel_NET/StringDecrypter.cs b/de4dot.code/deobfuscators/Babel_NET/StringDecrypter.cs index bda53b08..77b4f663 100644 --- a/de4dot.code/deobfuscators/Babel_NET/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/Babel_NET/StringDecrypter.cs @@ -126,7 +126,7 @@ namespace de4dot.code.deobfuscators.Babel_NET { emulator.Push(new Int32Value(offset)); foreach (var instr in OffsetCalcInstructions) emulator.Emulate(instr); - return ((Int32Value)emulator.Pop()).value; + return ((Int32Value)emulator.Pop()).Value; } public string Decrypt(object[] args) { @@ -348,7 +348,7 @@ namespace de4dot.code.deobfuscators.Babel_NET { case Code.Newarr: var arrayType = (ITypeDefOrRef)instr.Operand; - int arrayCount = ((Int32Value)emulator.Pop()).value; + int arrayCount = ((Int32Value)emulator.Pop()).Value; if (arrayType.FullName == "System.Char") emulator.Push(new UserValue(new char[arrayCount])); else @@ -362,7 +362,7 @@ namespace de4dot.code.deobfuscators.Babel_NET { break; case Code.Ldelem_U1: - arrayIndex = ((Int32Value)emulator.Pop()).value; + arrayIndex = ((Int32Value)emulator.Pop()).Value; array = (Value)emulator.Pop(); if (array is UserValue) emulator.Push(new Int32Value(((byte[])((UserValue)array).obj)[arrayIndex])); @@ -372,22 +372,22 @@ namespace de4dot.code.deobfuscators.Babel_NET { case Code.Stelem_I1: value = emulator.Pop(); - arrayIndex = ((Int32Value)emulator.Pop()).value; + arrayIndex = ((Int32Value)emulator.Pop()).Value; array = (Value)emulator.Pop(); if (array is UserValue) - ((byte[])((UserValue)array).obj)[arrayIndex] = (byte)((Int32Value)value).value; + ((byte[])((UserValue)array).obj)[arrayIndex] = (byte)((Int32Value)value).Value; break; case Code.Stelem_I2: value = emulator.Pop(); - arrayIndex = ((Int32Value)emulator.Pop()).value; + arrayIndex = ((Int32Value)emulator.Pop()).Value; array = (Value)emulator.Pop(); if (array is UserValue) - ((char[])((UserValue)array).obj)[arrayIndex] = (char)((Int32Value)value).value; + ((char[])((UserValue)array).obj)[arrayIndex] = (char)((Int32Value)value).Value; break; case Code.Ldelem_Ref: - arrayIndex = ((Int32Value)emulator.Pop()).value; + arrayIndex = ((Int32Value)emulator.Pop()).Value; array = (Value)emulator.Pop(); var userValue = array as UserValue; if (userValue != null && userValue.obj is string[]) @@ -451,7 +451,7 @@ namespace de4dot.code.deobfuscators.Babel_NET { object CreateDNLibOperand(OpCode opcode, Value op) { if (op is Int32Value) - return ((Int32Value)op).value; + return ((Int32Value)op).Value; if (op is StringValue) return ((StringValue)op).value; return null; diff --git a/de4dot.code/deobfuscators/DeepSea/DsMethodCallInliner.cs b/de4dot.code/deobfuscators/DeepSea/DsMethodCallInliner.cs index 0a23829a..7da4cc1d 100644 --- a/de4dot.code/deobfuscators/DeepSea/DsMethodCallInliner.cs +++ b/de4dot.code/deobfuscators/DeepSea/DsMethodCallInliner.cs @@ -191,8 +191,8 @@ namespace de4dot.code.deobfuscators.DeepSea { if (value == null || !value.AllBitsValid()) return false; var targets = (Instruction[])instr.Operand; - if (value.value >= 0 && value.value < targets.Length) - index = instrs.IndexOf(targets[value.value]); + if (value.Value >= 0 && value.Value < targets.Length) + index = instrs.IndexOf(targets[value.Value]); else index++; break; diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/StringDecrypter.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/StringDecrypter.cs index dd40699d..b8a3e082 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/StringDecrypter.cs @@ -626,7 +626,7 @@ namespace de4dot.code.deobfuscators.Eazfuscator_NET { if (val == null || !val.AllBitsValid()) fields[field] = null; else - fields[field] = val.value; + fields[field] = val.Value; break; case Code.Call: @@ -695,8 +695,8 @@ done: ; var dcGen = dynocode.GetDynocodeGenerator(ctor.DeclaringType); if (dcGen == null) return false; - int loopLocalValue = initValue2.value; - foreach (var val in dcGen.GetValues(initValue.value)) + int loopLocalValue = initValue2.Value; + foreach (var val in dcGen.GetValues(initValue.Value)) loopLocalValue ^= val; emu.SetLocal(loopLocal, new Int32Value(loopLocalValue));