diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscator.java index 802b3342c..5db58dbd6 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscator.java @@ -150,7 +150,15 @@ public class ActionDeobfuscator extends ActionDeobfuscatorSimple { } newIstructionCount += 2 * result.variables.size(); - if (newIstructionCount * 2 < result.instructionsProcessed) { + boolean allValueValid = true; + for (Object value : result.variables.values()) { + if (!ActionPush.isValidValue(value)) { + allValueValid = false; + break; + } + } + + if (allValueValid && newIstructionCount * 2 < result.instructionsProcessed) { Action target = actions.get(result.idx); Action prevAction = actions.get(i); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java index ab88fd0e1..8ac8e795e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java @@ -186,6 +186,23 @@ public class ActionPush extends Action { return surroundWithAction(baos.toByteArray(), version); } + public static boolean isValidValue(Object value) { + if (value instanceof String) { + for (char ch : ((String) value).toCharArray()) { + if (ch == 0) { + return false; + } + } + } + if (value instanceof Long) { + long l = (Long) value; + if (l < 0x8000000 || l > 0x7ffffff) { + return false; + } + } + return true; + } + public ActionPush(Object value) { super(0x96, 0); this.values = new ArrayList<>();