From f79b12d4f3750614d57dd0d0048a9704a0a7a348 Mon Sep 17 00:00:00 2001 From: de4dot Date: Thu, 20 Oct 2011 02:58:30 +0200 Subject: [PATCH] Make sure blocks are laid out in a verifiable order --- blocks/Blocks.cs | 5 +++++ de4dot.code/ObfuscatedFile.cs | 1 + 2 files changed, 6 insertions(+) diff --git a/blocks/Blocks.cs b/blocks/Blocks.cs index 91db21f1..c1027862 100644 --- a/blocks/Blocks.cs +++ b/blocks/Blocks.cs @@ -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(); + } } } diff --git a/de4dot.code/ObfuscatedFile.cs b/de4dot.code/ObfuscatedFile.cs index d5eea8f9..e90a8c71 100644 --- a/de4dot.code/ObfuscatedFile.cs +++ b/de4dot.code/ObfuscatedFile.cs @@ -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);