getFieldToMethodDictionary() is now a non-virtual method
This commit is contained in:
parent
4ffa123e7f
commit
3abb8de345
|
@ -95,25 +95,6 @@ namespace de4dot.code.deobfuscators.Babel_NET {
|
|||
return null;
|
||||
}
|
||||
|
||||
protected override Dictionary<FieldDefinition, MethodDefinition> getFieldToMethodDictionary(TypeDefinition type) {
|
||||
var dict = new Dictionary<FieldDefinition, MethodDefinition>();
|
||||
foreach (var method in type.Methods) {
|
||||
if (!method.IsStatic || !method.HasBody || method.Name == ".cctor")
|
||||
continue;
|
||||
|
||||
var instructions = method.Body.Instructions;
|
||||
for (int i = 0; i < instructions.Count; i++) {
|
||||
var instr = instructions[i];
|
||||
if (instr.OpCode.Code != Code.Ldsfld)
|
||||
continue;
|
||||
|
||||
dict[(FieldDefinition)instr.Operand] = method;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
|
||||
protected override void getCallInfo(object context, FieldDefinition field, out MethodReference calledMethod, out OpCode callOpcode) {
|
||||
var ctx = (Context)context;
|
||||
|
||||
|
|
|
@ -73,25 +73,6 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator {
|
|||
return null;
|
||||
}
|
||||
|
||||
protected override Dictionary<FieldDefinition, MethodDefinition> getFieldToMethodDictionary(TypeDefinition type) {
|
||||
var dict = new Dictionary<FieldDefinition, MethodDefinition>();
|
||||
foreach (var method in type.Methods) {
|
||||
if (!method.IsStatic || !method.HasBody || method.Name == ".cctor")
|
||||
continue;
|
||||
|
||||
var instructions = method.Body.Instructions;
|
||||
for (int i = 0; i < instructions.Count; i++) {
|
||||
var instr = instructions[i];
|
||||
if (instr.OpCode.Code != Code.Ldsfld)
|
||||
continue;
|
||||
|
||||
dict[(FieldDefinition)instr.Operand] = method;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
|
||||
protected override void getCallInfo(object context, FieldDefinition field, out MethodReference calledMethod, out OpCode callOpcode) {
|
||||
var ctx = (Context)context;
|
||||
|
||||
|
|
|
@ -136,10 +136,6 @@ namespace de4dot.code.deobfuscators.Goliath_NET {
|
|||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
protected override Dictionary<FieldDefinition, MethodDefinition> getFieldToMethodDictionary(TypeDefinition type) {
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
protected override void getCallInfo(object context, FieldDefinition field, out MethodReference calledMethod, out OpCode callOpcode) {
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
|
|
@ -431,9 +431,30 @@ namespace de4dot.code.deobfuscators {
|
|||
}
|
||||
|
||||
protected abstract object checkCctor(TypeDefinition type, MethodDefinition cctor);
|
||||
protected abstract Dictionary<FieldDefinition, MethodDefinition> getFieldToMethodDictionary(TypeDefinition type);
|
||||
protected abstract void getCallInfo(object context, FieldDefinition field, out MethodReference calledMethod, out OpCode callOpcode);
|
||||
|
||||
Dictionary<FieldDefinition, MethodDefinition> getFieldToMethodDictionary(TypeDefinition type) {
|
||||
var dict = new Dictionary<FieldDefinition, MethodDefinition>();
|
||||
foreach (var method in type.Methods) {
|
||||
if (!method.IsStatic || !method.HasBody || method.Name == ".cctor")
|
||||
continue;
|
||||
|
||||
var instructions = method.Body.Instructions;
|
||||
for (int i = 0; i < instructions.Count; i++) {
|
||||
var instr = instructions[i];
|
||||
if (instr.OpCode.Code != Code.Ldsfld)
|
||||
continue;
|
||||
var field = instr.Operand as FieldDefinition;
|
||||
if (field == null)
|
||||
continue;
|
||||
|
||||
dict[field] = method;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
|
||||
protected override bool deobfuscate(Blocks blocks, IList<Block> allBlocks) {
|
||||
var removeInfos = new Dictionary<Block, List<RemoveInfo>>();
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user