Dispose() of all modules we don't need
This commit is contained in:
parent
1c4b3a7382
commit
0e16e3e51b
|
@ -44,6 +44,8 @@ namespace de4dot.code {
|
||||||
}
|
}
|
||||||
|
|
||||||
ModuleDefMD setModule(ModuleDefMD newModule) {
|
ModuleDefMD setModule(ModuleDefMD newModule) {
|
||||||
|
if (module != null)
|
||||||
|
module.Dispose();
|
||||||
module = newModule;
|
module = newModule;
|
||||||
TheAssemblyResolver.Instance.addModule(module);
|
TheAssemblyResolver.Instance.addModule(module);
|
||||||
module.EnableTypeDefFindCache = true;
|
module.EnableTypeDefFindCache = true;
|
||||||
|
|
|
@ -17,13 +17,14 @@
|
||||||
along with de4dot. If not, see <http://www.gnu.org/licenses/>.
|
along with de4dot. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using de4dot.code.deobfuscators;
|
using de4dot.code.deobfuscators;
|
||||||
using dot10.DotNet;
|
using dot10.DotNet;
|
||||||
using de4dot.code.renamer;
|
using de4dot.code.renamer;
|
||||||
|
|
||||||
namespace de4dot.code {
|
namespace de4dot.code {
|
||||||
public interface IObfuscatedFile {
|
public interface IObfuscatedFile : IDisposable {
|
||||||
ModuleDefMD ModuleDefMD { get; }
|
ModuleDefMD ModuleDefMD { get; }
|
||||||
IDeobfuscator Deobfuscator { get; }
|
IDeobfuscator Deobfuscator { get; }
|
||||||
IDeobfuscatorContext DeobfuscatorContext { get; set; }
|
IDeobfuscatorContext DeobfuscatorContext { get; set; }
|
||||||
|
|
|
@ -778,5 +778,13 @@ namespace de4dot.code {
|
||||||
void IDeobfuscatedFile.setDeobfuscator(IDeobfuscator deob) {
|
void IDeobfuscatedFile.setDeobfuscator(IDeobfuscator deob) {
|
||||||
this.deob = deob;
|
this.deob = deob;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Dispose() {
|
||||||
|
deobfuscateCleanUp();
|
||||||
|
if (module != null)
|
||||||
|
module.Dispose();
|
||||||
|
module = null;
|
||||||
|
deob = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,6 +85,7 @@ namespace de4dot.cui {
|
||||||
void detectObfuscators() {
|
void detectObfuscators() {
|
||||||
foreach (var file in loadAllFiles(true)) {
|
foreach (var file in loadAllFiles(true)) {
|
||||||
removeModule(file.ModuleDefMD);
|
removeModule(file.ModuleDefMD);
|
||||||
|
file.Dispose();
|
||||||
deobfuscatorContext.clear();
|
deobfuscatorContext.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -108,7 +109,7 @@ namespace de4dot.cui {
|
||||||
Program.printStackTrace(ex, LoggerEvent.Verbose);
|
Program.printStackTrace(ex, LoggerEvent.Verbose);
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
file.deobfuscateCleanUp();
|
file.Dispose();
|
||||||
Logger.Instance.IndentLevel = oldIndentLevel;
|
Logger.Instance.IndentLevel = oldIndentLevel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -116,9 +117,17 @@ namespace de4dot.cui {
|
||||||
|
|
||||||
void deobfuscateAll() {
|
void deobfuscateAll() {
|
||||||
var allFiles = new List<IObfuscatedFile>(loadAllFiles());
|
var allFiles = new List<IObfuscatedFile>(loadAllFiles());
|
||||||
deobfuscateAllFiles(allFiles);
|
try {
|
||||||
rename(allFiles);
|
deobfuscateAllFiles(allFiles);
|
||||||
saveAllFiles(allFiles);
|
rename(allFiles);
|
||||||
|
saveAllFiles(allFiles);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
foreach (var file in allFiles) {
|
||||||
|
if (file != null)
|
||||||
|
file.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerable<IObfuscatedFile> loadAllFiles() {
|
IEnumerable<IObfuscatedFile> loadAllFiles() {
|
||||||
|
@ -310,6 +319,7 @@ namespace de4dot.cui {
|
||||||
var obfuscatedFile = new ObfuscatedFile(fileOptions, options.ModuleContext, options.AssemblyClientFactory);
|
var obfuscatedFile = new ObfuscatedFile(fileOptions, options.ModuleContext, options.AssemblyClientFactory);
|
||||||
if (add(obfuscatedFile, searchDir.SkipUnknownObfuscators, false))
|
if (add(obfuscatedFile, searchDir.SkipUnknownObfuscators, false))
|
||||||
return obfuscatedFile;
|
return obfuscatedFile;
|
||||||
|
obfuscatedFile.Dispose();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user