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"); 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(); int numRemovedLocals = blocks.optimizeLocals();
if (numRemovedLocals > 0) if (numRemovedLocals > 0)
Log.v("Removed {0} unused local(s)", numRemovedLocals); Log.v("Removed {0} unused local(s)", numRemovedLocals);
blocks.repartitionBlocks();
} }
deobfuscateStrings(blocks); deobfuscateStrings(blocks);
deob.deobfuscateMethodEnd(blocks); deob.deobfuscateMethodEnd(blocks);