Remove support for .methods files.
This commit is contained in:
parent
cbdcf1d8c1
commit
7821fc03bf
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user