diff --git a/AssemblyData/methodsrewriter/ResolverUtils.cs b/AssemblyData/methodsrewriter/ResolverUtils.cs index 59a3b5a0..43659cf5 100644 --- a/AssemblyData/methodsrewriter/ResolverUtils.cs +++ b/AssemblyData/methodsrewriter/ResolverUtils.cs @@ -146,7 +146,7 @@ namespace AssemblyData.methodsrewriter { var asmRef = DotNetUtils.getAssemblyNameReference(b); var asmName = a.Assembly.GetName(); - if (asmRef.Name != asmName.Name) + if (asmRef == null || asmRef.Name != asmName.Name) return false; return compareTypes(a.DeclaringType, b.DeclaringType); diff --git a/blocks/DotNetUtils.cs b/blocks/DotNetUtils.cs index 98868692..0c310b86 100644 --- a/blocks/DotNetUtils.cs +++ b/blocks/DotNetUtils.cs @@ -926,6 +926,9 @@ namespace de4dot.blocks { public static AssemblyNameReference getAssemblyNameReference(TypeReference type) { var scope = type.Scope; + if (scope == null) + return null; + if (scope is ModuleDefinition) { var moduleDefinition = (ModuleDefinition)scope; return moduleDefinition.Assembly.Name; @@ -946,7 +949,7 @@ namespace de4dot.blocks { public static string getFullAssemblyName(TypeReference type) { var asmRef = getAssemblyNameReference(type); - return asmRef.FullName; + return asmRef == null ? null : asmRef.FullName; } public static bool isAssembly(IMetadataScope scope, string assemblySimpleName) { diff --git a/de4dot.code/ExternalAssemblies.cs b/de4dot.code/ExternalAssemblies.cs index 3913f491..8c29764b 100644 --- a/de4dot.code/ExternalAssemblies.cs +++ b/de4dot.code/ExternalAssemblies.cs @@ -56,6 +56,8 @@ namespace de4dot.code { ExternalAssembly load(TypeReference type) { var asmFullName = DotNetUtils.getFullAssemblyName(type); + if (asmFullName == null) + return null; ExternalAssembly asm; if (assemblies.TryGetValue(asmFullName, out asm)) return asm; diff --git a/de4dot.code/renamer/asmmodules/Modules.cs b/de4dot.code/renamer/asmmodules/Modules.cs index 8550f9e5..9cc0bd1d 100644 --- a/de4dot.code/renamer/asmmodules/Modules.cs +++ b/de4dot.code/renamer/asmmodules/Modules.cs @@ -390,6 +390,8 @@ namespace de4dot.code.renamer.asmmodules { // Returns null if it's a non-loaded module/assembly IEnumerable findModules(TypeReference type) { var scope = type.Scope; + if (scope == null) + return null; if (scope is AssemblyNameReference) return findModules((AssemblyNameReference)scope);