From 52668b9420639ef19cfe88cb171be659d1c72316 Mon Sep 17 00:00:00 2001 From: de4dot Date: Fri, 22 Nov 2013 20:21:09 +0100 Subject: [PATCH] Restore bool/char array ldelem/stelem instructions --- .../Agile_NET/vm/CilOperandInstructionRestorer.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/CilOperandInstructionRestorer.cs b/de4dot.code/deobfuscators/Agile_NET/vm/CilOperandInstructionRestorer.cs index 4df28e4c..43a26c69 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/CilOperandInstructionRestorer.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/CilOperandInstructionRestorer.cs @@ -53,6 +53,8 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm { newOpCode = OpCodes.Ldelem_Ref; else { switch (operandTypeTmp.ElementType) { + case ElementType.Boolean: newOpCode = OpCodes.Ldelem_I1; break; + case ElementType.Char: newOpCode = OpCodes.Ldelem_U2; break; case ElementType.I: newOpCode = OpCodes.Ldelem_I; break; case ElementType.I1: newOpCode = OpCodes.Ldelem_I1; break; case ElementType.I2: newOpCode = OpCodes.Ldelem_I2; break; @@ -82,8 +84,10 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm { switch (operandTypeTmp.ElementType) { case ElementType.U: case ElementType.I: newOpCode = OpCodes.Stelem_I; break; + case ElementType.Boolean: case ElementType.U1: case ElementType.I1: newOpCode = OpCodes.Stelem_I1; break; + case ElementType.Char: case ElementType.U2: case ElementType.I2: newOpCode = OpCodes.Stelem_I2; break; case ElementType.U4: