Merge branch 'master' into co
This commit is contained in:
commit
192fd3b66c
|
@ -181,6 +181,10 @@ namespace de4dot.code.deobfuscators {
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void DeobfuscateEnd() {
|
public virtual void DeobfuscateEnd() {
|
||||||
|
// Make sure the TypeDefCache isn't enabled while we modify types or remove stuff
|
||||||
|
bool cacheState = module.EnableTypeDefFindCache;
|
||||||
|
module.EnableTypeDefFindCache = false;
|
||||||
|
|
||||||
if (CanRemoveTypes) {
|
if (CanRemoveTypes) {
|
||||||
RemoveTypesWithInvalidBaseTypes();
|
RemoveTypesWithInvalidBaseTypes();
|
||||||
|
|
||||||
|
@ -195,6 +199,8 @@ namespace de4dot.code.deobfuscators {
|
||||||
|
|
||||||
RestoreBaseType();
|
RestoreBaseType();
|
||||||
FixMDHeaderVersion();
|
FixMDHeaderVersion();
|
||||||
|
|
||||||
|
module.EnableTypeDefFindCache = cacheState;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool IsTypeWithInvalidBaseType(TypeDef moduleType, TypeDef type) {
|
static bool IsTypeWithInvalidBaseType(TypeDef moduleType, TypeDef type) {
|
||||||
|
|
|
@ -1232,6 +1232,8 @@ namespace de4dot.code.renamer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var overrideMethod = method.MethodDef.Overrides[0].MethodDeclaration;
|
var overrideMethod = method.MethodDef.Overrides[0].MethodDeclaration;
|
||||||
|
if (overrideMethod.DeclaringType == null)
|
||||||
|
return "";
|
||||||
var name = overrideMethod.DeclaringType.FullName.Replace('/', '.');
|
var name = overrideMethod.DeclaringType.FullName.Replace('/', '.');
|
||||||
name = removeGenericsArityRegex.Replace(name, "");
|
name = removeGenericsArityRegex.Replace(name, "");
|
||||||
return name + ".";
|
return name + ".";
|
||||||
|
|
|
@ -227,9 +227,7 @@ namespace de4dot.code.renamer.asmmodules {
|
||||||
}
|
}
|
||||||
types = newTypes;
|
types = newTypes;
|
||||||
|
|
||||||
bool old = ModuleDefMD.EnableTypeDefFindCache;
|
ModuleDefMD.ResetTypeDefFindCache();
|
||||||
ModuleDefMD.EnableTypeDefFindCache = false;
|
|
||||||
ModuleDefMD.EnableTypeDefFindCache = old;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static ITypeDefOrRef GetNonGenericTypeRef(ITypeDefOrRef typeRef) {
|
static ITypeDefOrRef GetNonGenericTypeRef(ITypeDefOrRef typeRef) {
|
||||||
|
|
|
@ -61,18 +61,26 @@ namespace de4dot.code.renamer.asmmodules {
|
||||||
moduleHash.Add(module);
|
moduleHash.Add(module);
|
||||||
}
|
}
|
||||||
|
|
||||||
string GetModuleKey(Module module) {
|
static string GetModuleKey(Module module) {
|
||||||
if (module.ModuleDefMD.Assembly != null)
|
if (module.ModuleDefMD.Assembly != null)
|
||||||
return module.ModuleDefMD.Assembly.ToString();
|
return GetAssemblyName(module.ModuleDefMD.Assembly);
|
||||||
return Utils.GetBaseName(module.ModuleDefMD.Location);
|
return Utils.GetBaseName(module.ModuleDefMD.Location);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ModuleHash Lookup(string assemblyName) {
|
public ModuleHash Lookup(IAssembly asm) {
|
||||||
ModuleHash moduleHash;
|
ModuleHash moduleHash;
|
||||||
if (assemblyHash.TryGetValue(assemblyName, out moduleHash))
|
if (assemblyHash.TryGetValue(GetAssemblyName(asm), out moduleHash))
|
||||||
return moduleHash;
|
return moduleHash;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static string GetAssemblyName(IAssembly asm) {
|
||||||
|
if (asm == null)
|
||||||
|
return string.Empty;
|
||||||
|
if (PublicKeyBase.IsNullOrEmpty2(asm.PublicKeyOrToken))
|
||||||
|
return asm.Name;
|
||||||
|
return asm.FullName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ModuleHash {
|
class ModuleHash {
|
||||||
|
@ -402,7 +410,7 @@ namespace de4dot.code.renamer.asmmodules {
|
||||||
var asm = type.Module.Assembly;
|
var asm = type.Module.Assembly;
|
||||||
if (asm == null)
|
if (asm == null)
|
||||||
return null;
|
return null;
|
||||||
var moduleHash = assemblyHash.Lookup(asm.FullName);
|
var moduleHash = assemblyHash.Lookup(asm);
|
||||||
if (moduleHash == null)
|
if (moduleHash == null)
|
||||||
return null;
|
return null;
|
||||||
var module = moduleHash.Lookup(scope.ScopeName);
|
var module = moduleHash.Lookup(scope.ScopeName);
|
||||||
|
@ -415,7 +423,7 @@ namespace de4dot.code.renamer.asmmodules {
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerable<Module> FindModules(AssemblyRef assemblyRef) {
|
IEnumerable<Module> FindModules(AssemblyRef assemblyRef) {
|
||||||
var moduleHash = assemblyHash.Lookup(assemblyRef.FullName);
|
var moduleHash = assemblyHash.Lookup(assemblyRef);
|
||||||
if (moduleHash != null)
|
if (moduleHash != null)
|
||||||
return moduleHash.Modules;
|
return moduleHash.Modules;
|
||||||
return null;
|
return null;
|
||||||
|
|
2
dnlib
2
dnlib
|
@ -1 +1 @@
|
||||||
Subproject commit fda808afae435fe1259074dd129e0ba97b0091c1
|
Subproject commit 29c5bfd1e57ea8041034cce69e8b741613126a52
|
Loading…
Reference in New Issue
Block a user