Fix method signature
This commit is contained in:
parent
cd46fb9793
commit
887ee7c9e8
|
@ -30,7 +30,7 @@ namespace de4dot.blocks.cflow {
|
|||
public void init(Blocks blocks, Block block) {
|
||||
this.blocks = blocks;
|
||||
this.block = block;
|
||||
instructionEmulator.init(blocks.Method.HasImplicitThis, false, blocks.Method.Parameters, blocks.Locals);
|
||||
instructionEmulator.init(blocks);
|
||||
}
|
||||
|
||||
// Returns true if code was updated, false otherwise
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace de4dot.blocks.cflow {
|
|||
public bool deobfuscate() {
|
||||
bool changed = false;
|
||||
foreach (var block in allBlocks) {
|
||||
instructionEmulator.init(blocks.Method.HasImplicitThis, false, blocks.Method.Parameters, blocks.Locals);
|
||||
instructionEmulator.init(blocks);
|
||||
var instrs = block.Instructions;
|
||||
for (int i = 0; i < instrs.Count; i++) {
|
||||
var instr = instrs[i];
|
||||
|
|
|
@ -35,18 +35,24 @@ namespace de4dot.blocks.cflow {
|
|||
public InstructionEmulator() {
|
||||
}
|
||||
|
||||
public InstructionEmulator(bool implicitThis, bool initLocals, IList<ParameterDefinition> parameterDefinitions, IList<VariableDefinition> variableDefinitions) {
|
||||
init(implicitThis, initLocals, parameterDefinitions, variableDefinitions);
|
||||
public InstructionEmulator(MethodDefinition method) {
|
||||
init(method);
|
||||
}
|
||||
|
||||
public void init(bool implicitThis, bool initLocals, IList<ParameterDefinition> parameterDefinitions, IList<VariableDefinition> variableDefinitions) {
|
||||
this.parameterDefinitions = parameterDefinitions;
|
||||
this.variableDefinitions = variableDefinitions;
|
||||
public void init(Blocks blocks) {
|
||||
init(blocks.Method);
|
||||
}
|
||||
|
||||
public void init(MethodDefinition method) {
|
||||
bool initLocals = false;
|
||||
|
||||
this.parameterDefinitions = method.Parameters;
|
||||
this.variableDefinitions = method.Body.Variables;
|
||||
valueStack.init();
|
||||
|
||||
args.Clear();
|
||||
argBase = 0;
|
||||
if (implicitThis) {
|
||||
if (method.HasImplicitThis) {
|
||||
argBase = 1;
|
||||
args.Add(new UnknownValue());
|
||||
}
|
||||
|
|
|
@ -144,7 +144,7 @@ namespace de4dot.blocks.cflow {
|
|||
foreach (var source in new List<Block>(block.Sources)) {
|
||||
if (!isBranchBlock(source))
|
||||
continue;
|
||||
instructionEmulator.init(blocks.Method.HasImplicitThis, false, blocks.Method.Parameters, blocks.Locals);
|
||||
instructionEmulator.init(blocks);
|
||||
instructionEmulator.emulate(source.Instructions);
|
||||
|
||||
var target = getSwitchTarget(switchTargets, switchFallThrough, source, instructionEmulator.pop());
|
||||
|
@ -170,7 +170,7 @@ namespace de4dot.blocks.cflow {
|
|||
foreach (var source in new List<Block>(block.Sources)) {
|
||||
if (!isBranchBlock(source))
|
||||
continue;
|
||||
instructionEmulator.init(blocks.Method.HasImplicitThis, false, blocks.Method.Parameters, blocks.Locals);
|
||||
instructionEmulator.init(blocks);
|
||||
instructionEmulator.emulate(source.Instructions);
|
||||
|
||||
var target = getSwitchTarget(switchTargets, switchFallThrough, source, instructionEmulator.getLocal(switchVariable));
|
||||
|
@ -193,7 +193,7 @@ namespace de4dot.blocks.cflow {
|
|||
foreach (var source in new List<Block>(block.Sources)) {
|
||||
if (!isBranchBlock(source))
|
||||
continue;
|
||||
instructionEmulator.init(blocks.Method.HasImplicitThis, false, blocks.Method.Parameters, blocks.Locals);
|
||||
instructionEmulator.init(blocks);
|
||||
instructionEmulator.emulate(source.Instructions);
|
||||
|
||||
var target = getSwitchTarget(switchTargets, switchFallThrough, source, instructionEmulator.pop());
|
||||
|
@ -264,7 +264,7 @@ namespace de4dot.blocks.cflow {
|
|||
}
|
||||
|
||||
bool emulateGetTarget(Block switchBlock, out Block target) {
|
||||
instructionEmulator.init(blocks.Method.HasImplicitThis, false, blocks.Method.Parameters, blocks.Locals);
|
||||
instructionEmulator.init(blocks);
|
||||
try {
|
||||
instructionEmulator.emulate(switchBlock.Instructions, 0, switchBlock.Instructions.Count - 1);
|
||||
}
|
||||
|
@ -278,7 +278,7 @@ namespace de4dot.blocks.cflow {
|
|||
}
|
||||
|
||||
bool willHaveKnownTarget(Block switchBlock, Block source) {
|
||||
instructionEmulator.init(blocks.Method.HasImplicitThis, false, blocks.Method.Parameters, blocks.Locals);
|
||||
instructionEmulator.init(blocks);
|
||||
try {
|
||||
instructionEmulator.emulate(source.Instructions);
|
||||
instructionEmulator.emulate(switchBlock.Instructions, 0, switchBlock.Instructions.Count - 1);
|
||||
|
|
|
@ -126,7 +126,7 @@ namespace de4dot.code.deobfuscators {
|
|||
public static Value[] getInitializedArray(int arraySize, MethodDefinition method, ref int newarrIndex, Code stelemOpCode) {
|
||||
var resultValueArray = new Value[arraySize];
|
||||
|
||||
var emulator = new InstructionEmulator(method.HasImplicitThis, false, method.Parameters, method.Body.Variables);
|
||||
var emulator = new InstructionEmulator(method);
|
||||
var theArray = new UnknownValue();
|
||||
emulator.push(theArray);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user