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