Add preserveTokensAndTypes()

This commit is contained in:
de4dot 2012-12-14 16:50:06 +01:00
parent 63f1ec4f93
commit e8a9c0675a
2 changed files with 16 additions and 7 deletions

View File

@ -51,6 +51,8 @@ namespace de4dot.code.deobfuscators {
MethodCallRemover methodCallRemover = new MethodCallRemover();
byte[] moduleBytes;
protected InitializedDataCreator initializedDataCreator;
bool keepTypes;
MetaDataFlags? mdFlags;
protected byte[] ModuleBytes {
get { return moduleBytes; }
@ -78,7 +80,7 @@ namespace de4dot.code.deobfuscators {
public DecrypterType DefaultDecrypterType { get; set; }
public virtual MetaDataFlags MetaDataFlags {
get { return Operations.MetaDataFlags; }
get { return mdFlags ?? Operations.MetaDataFlags; }
}
public abstract string Type { get; }
@ -89,8 +91,9 @@ namespace de4dot.code.deobfuscators {
get { return false; }
}
protected virtual bool KeepTypes {
get { return false; }
protected bool KeepTypes {
get { return keepTypes; }
set { keepTypes = value; }
}
protected bool CanRemoveTypes {
@ -129,6 +132,15 @@ namespace de4dot.code.deobfuscators {
initializedDataCreator = new InitializedDataCreator(module);
}
protected void preserveTokensAndTypes() {
keepTypes = true;
mdFlags = Operations.MetaDataFlags;
mdFlags |= MetaDataFlags.PreserveRids |
MetaDataFlags.PreserveUSOffsets |
MetaDataFlags.PreserveBlobOffsets |
MetaDataFlags.PreserveExtraSignatureData;
}
protected virtual bool checkValidName(string name) {
return optionsBase.ValidNameRegex.isMatch(name);
}

View File

@ -63,12 +63,9 @@ namespace de4dot.code.deobfuscators.Unknown {
get { return obfuscatorName ?? "Unknown Obfuscator"; }
}
protected override bool KeepTypes {
get { return true; }
}
internal Deobfuscator(Options options)
: base(options) {
KeepTypes = true;
}
void setName(string name) {