Remove support for .methods files.

This commit is contained in:
de4dot 2011-11-06 12:26:41 +01:00
parent cbdcf1d8c1
commit 7821fc03bf
3 changed files with 3 additions and 30 deletions

View File

@ -27,20 +27,13 @@ using de4dot.blocks;
namespace de4dot { namespace de4dot {
class AssemblyModule { class AssemblyModule {
string filename; string filename;
string methodsFilename;
Dictionary<uint, DumpedMethod> dumpedMethods;
ModuleDefinition module; ModuleDefinition module;
public AssemblyModule(string filename, string methodsFilename = null) { public AssemblyModule(string filename) {
this.filename = Utils.getFullPath(filename); this.filename = Utils.getFullPath(filename);
this.methodsFilename = methodsFilename;
if (this.methodsFilename == null)
this.methodsFilename = this.filename + ".methods";
} }
public ModuleDefinition load() { public ModuleDefinition load() {
readMethodsFile();
readFile(); readFile();
return module; return module;
} }
@ -57,7 +50,6 @@ namespace de4dot {
var assemblyResolver = AssemblyResolver.Instance; var assemblyResolver = AssemblyResolver.Instance;
assemblyResolver.removeModule(module); assemblyResolver.removeModule(module);
DotNetUtils.typeCaches.invalidate(module); DotNetUtils.typeCaches.invalidate(module);
this.dumpedMethods = dumpedMethods;
var readerParameters = new ReaderParameters(ReadingMode.Deferred); var readerParameters = new ReaderParameters(ReadingMode.Deferred);
readerParameters.AssemblyResolver = assemblyResolver; readerParameters.AssemblyResolver = assemblyResolver;
@ -67,22 +59,11 @@ namespace de4dot {
return module; return module;
} }
void readMethodsFile() {
if (Utils.fileExists(methodsFilename)) {
using (var reader = new BinaryReader(File.Open(methodsFilename, FileMode.Open, FileAccess.Read, FileShare.Read))) {
dumpedMethods = new DumpedMethodsReader(reader).read();
}
}
else {
dumpedMethods = new Dictionary<uint, DumpedMethod>();
}
}
void readFile() { void readFile() {
var assemblyResolver = AssemblyResolver.Instance; var assemblyResolver = AssemblyResolver.Instance;
var readerParameters = new ReaderParameters(ReadingMode.Deferred); var readerParameters = new ReaderParameters(ReadingMode.Deferred);
readerParameters.AssemblyResolver = assemblyResolver; readerParameters.AssemblyResolver = assemblyResolver;
module = ModuleDefinition.ReadModule(filename, readerParameters, dumpedMethods); module = ModuleDefinition.ReadModule(filename, readerParameters);
assemblyResolver.addModule(module); assemblyResolver.addModule(module);
} }

View File

@ -165,13 +165,6 @@ namespace de4dot {
newFileOptions.StringDecrypterMethods.AddRange(defaultStringDecrypterMethods); newFileOptions.StringDecrypterMethods.AddRange(defaultStringDecrypterMethods);
}); });
fileOptions.Add(defaultOption); fileOptions.Add(defaultOption);
fileOptions.Add(new OneArgOption("m", null, "Name of .methods file", "file", (val) => {
if (newFileOptions == null)
exitError("Missing input file");
if (!Utils.fileExists(val))
exitError(string.Format("File \"{0}\" does not exist.", val));
newFileOptions.MethodsFilename = val;
}));
fileOptions.Add(new OneArgOption("o", null, "Name of output file", "file", (val) => { fileOptions.Add(new OneArgOption("o", null, "Name of output file", "file", (val) => {
if (newFileOptions == null) if (newFileOptions == null)
exitError("Missing input file"); exitError("Missing input file");

View File

@ -80,7 +80,6 @@ namespace de4dot {
public class Options { public class Options {
public string Filename { get; set; } public string Filename { get; set; }
public string MethodsFilename { get; set; }
public string NewFilename { get; set; } public string NewFilename { get; set; }
public string ForcedObfuscatorType { get; set; } public string ForcedObfuscatorType { get; set; }
public DecrypterType StringDecrypterType { get; set; } public DecrypterType StringDecrypterType { get; set; }
@ -128,7 +127,7 @@ namespace de4dot {
this.options = options; this.options = options;
userStringDecrypterMethods = options.StringDecrypterMethods.Count > 0; userStringDecrypterMethods = options.StringDecrypterMethods.Count > 0;
options.Filename = Utils.getFullPath(options.Filename); options.Filename = Utils.getFullPath(options.Filename);
assemblyModule = new AssemblyModule(options.Filename, options.MethodsFilename); assemblyModule = new AssemblyModule(options.Filename);
if (options.NewFilename == null) if (options.NewFilename == null)
options.NewFilename = getDefaultNewFilename(); options.NewFilename = getDefaultNewFilename();