Make sure blocks are laid out in a verifiable order

This commit is contained in:
de4dot 2011-10-20 02:58:30 +02:00
parent 865cfb9536
commit f79b12d4f3
2 changed files with 6 additions and 0 deletions

View File

@ -201,5 +201,10 @@ namespace de4dot.blocks {
throw new ApplicationException("Invalid ld/st local instruction");
}
}
public void repartitionBlocks() {
foreach (var scopeBlock in getAllScopeBlocks(methodBlocks))
scopeBlock.repartitionBlocks();
}
}
}

View File

@ -460,6 +460,7 @@ namespace de4dot {
int numRemovedLocals = blocks.optimizeLocals();
if (numRemovedLocals > 0)
Log.v("Removed {0} unused local(s)", numRemovedLocals);
blocks.repartitionBlocks();
}
deobfuscateStrings(blocks);
deob.deobfuscateMethodEnd(blocks);