From 33645432f16a2695d0e3e75493decb9b3d04ab6d Mon Sep 17 00:00:00 2001 From: de4dot Date: Sun, 18 Nov 2012 00:20:07 +0100 Subject: [PATCH] Fix TypesRestorer porting bug --- de4dot.code/deobfuscators/TypesRestorer.cs | 27 ++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/de4dot.code/deobfuscators/TypesRestorer.cs b/de4dot.code/deobfuscators/TypesRestorer.cs index c8e86ab3..d8794d20 100644 --- a/de4dot.code/deobfuscators/TypesRestorer.cs +++ b/de4dot.code/deobfuscators/TypesRestorer.cs @@ -431,7 +431,7 @@ namespace de4dot.code.deobfuscators { } bool addMethodArgType(IGenericParameterProvider gpp, Parameter methodParam, IField field) { - if (field == null || field.FieldSig == null) + if (field == null) return false; return addMethodArgType(gpp, methodParam, field.FieldSig.GetFieldType()); } @@ -579,6 +579,24 @@ namespace de4dot.code.deobfuscators { case ElementType.Ptr: case ElementType.Class: case ElementType.ValueType: + case ElementType.Void: + case ElementType.Boolean: + case ElementType.Char: + case ElementType.I1: + case ElementType.U1: + case ElementType.I2: + case ElementType.U2: + case ElementType.I4: + case ElementType.U4: + case ElementType.I8: + case ElementType.U8: + case ElementType.R4: + case ElementType.R8: + case ElementType.TypedByRef: + case ElementType.I: + case ElementType.U: + case ElementType.String: + case ElementType.Object: break; case ElementType.Var: @@ -593,6 +611,11 @@ namespace de4dot.code.deobfuscators { case ElementType.CModReqd: case ElementType.Pinned: case ElementType.Sentinel: + case ElementType.ValueArray: + case ElementType.R: + case ElementType.End: + case ElementType.Internal: + case ElementType.Module: default: return false; } @@ -634,7 +657,7 @@ namespace de4dot.code.deobfuscators { protected override bool isUnknownType(object o) { var arg = o as Parameter; if (arg != null) - return arg.Type != null && arg.Type.ElementType == ElementType.Object; + return arg.Type.GetElementType() == ElementType.Object; var field = o as FieldDef; if (field != null)