From da3cf1454c6f29f67f49e6437602b25b1b2dcdf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 28 Jan 2018 16:08:20 +0100 Subject: [PATCH] AS1/2 Try..catch with error types support - decompilation and direct editation --- CHANGELOG.md | 2 +- .../action/model/clauses/TryActionItem.java | 119 +++++++++++++++--- .../parser/script/ActionScript2Parser.java | 21 +++- .../flash/action/swf7/ActionTry.java | 102 ++++++++++++--- .../decompiler/flash/ActionScript2Test.java | 62 +++++++++ libsrc/ffdec_lib/testdata/as2/MyError.as | 4 + libsrc/ffdec_lib/testdata/as2/as2.fla | Bin 1086903 -> 1087014 bytes libsrc/ffdec_lib/testdata/as2/as2.swf | Bin 27819 -> 28066 bytes 8 files changed, 275 insertions(+), 35 deletions(-) create mode 100644 libsrc/ffdec_lib/testdata/as2/MyError.as diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c0274ddc..bc2c27f95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. ### Added - AS2 classes: maintain order of variables, and methods (place variables before methods) - AS1/2: displaying script path in the error log when jump to invalid address - +- AS1/2: Try..catch with Error types - decompilation and direct editation ### Changed - AS1/2 direct editation - generated constantpool is sorted according to ActionPush position diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/clauses/TryActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/clauses/TryActionItem.java index 42dcc5ddb..fa6fc486c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/clauses/TryActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/clauses/TryActionItem.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.action.model.clauses; import com.jpexs.decompiler.flash.SWF; @@ -20,9 +21,21 @@ import com.jpexs.decompiler.flash.SourceGeneratorLocalData; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.model.ActionItem; import com.jpexs.decompiler.flash.action.model.ConstantPool; +import com.jpexs.decompiler.flash.action.model.DirectValueActionItem; import com.jpexs.decompiler.flash.action.parser.script.ActionSourceGenerator; +import com.jpexs.decompiler.flash.action.swf4.ActionIf; import com.jpexs.decompiler.flash.action.swf4.ActionJump; +import com.jpexs.decompiler.flash.action.swf4.ActionPop; +import com.jpexs.decompiler.flash.action.swf4.ActionPush; +import com.jpexs.decompiler.flash.action.swf4.RegisterNumber; +import com.jpexs.decompiler.flash.action.swf5.ActionDefineLocal; +import com.jpexs.decompiler.flash.action.swf5.ActionEquals2; +import com.jpexs.decompiler.flash.action.swf5.ActionPushDuplicate; +import com.jpexs.decompiler.flash.action.swf5.ActionStackSwap; +import com.jpexs.decompiler.flash.action.swf7.ActionCastOp; +import com.jpexs.decompiler.flash.action.swf7.ActionThrow; import com.jpexs.decompiler.flash.action.swf7.ActionTry; +import com.jpexs.decompiler.flash.ecma.Null; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; import com.jpexs.decompiler.graph.Block; import com.jpexs.decompiler.graph.CompilationException; @@ -33,6 +46,8 @@ import com.jpexs.decompiler.graph.model.ContinueItem; import com.jpexs.decompiler.graph.model.LocalData; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; /** * @@ -42,7 +57,9 @@ public class TryActionItem extends ActionItem implements Block { public List tryCommands; - public List catchExceptions; + public List catchExceptionNames; + + public List catchExceptionTypes; public List> catchCommands; @@ -61,10 +78,11 @@ public class TryActionItem extends ActionItem implements Block { return ret; } - public TryActionItem(List tryCommands, List catchExceptions, List> catchCommands, List finallyCommands) { + public TryActionItem(List tryCommands, List catchExceptionNames, List catchExceptionTypes, List> catchCommands, List finallyCommands) { super(null, null, NOPRECEDENCE); this.tryCommands = tryCommands; - this.catchExceptions = catchExceptions; + this.catchExceptionNames = catchExceptionNames; + this.catchExceptionTypes = catchExceptionTypes; this.catchCommands = catchCommands; this.finallyCommands = finallyCommands; } @@ -73,19 +91,23 @@ public class TryActionItem extends ActionItem implements Block { public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { writer.append("try"); appendBlock(null, writer, localData, tryCommands); - for (int e = 0; e < catchExceptions.size(); e++) { + for (int e = 0; e < catchExceptionNames.size(); e++) { writer.newLine(); writer.append("catch"); if (writer.getFormatting().spaceBeforeParenthesesCatchParentheses) { writer.append(" "); } writer.append("("); - catchExceptions.get(e).toStringNoQuotes(writer, localData); + catchExceptionNames.get(e).toStringNoQuotes(writer, localData); + if (catchExceptionTypes.get(e) != null) { + writer.append(":"); + catchExceptionTypes.get(e).toStringNoQuotes(writer, localData); + } writer.append(")"); List commands = catchCommands.get(e); appendBlock(null, writer, localData, commands); } - if (catchExceptions.isEmpty() || finallyCommands.size() > 0) { + if (catchExceptionNames.isEmpty() || finallyCommands.size() > 0) { writer.newLine(); writer.append("finally"); appendBlock(null, writer, localData, finallyCommands); @@ -140,15 +162,82 @@ public class TryActionItem extends ActionItem implements Block { List finallyCommandsA = finallyCommands == null ? null : asGenerator.toActionList(asGenerator.generate(localData, finallyCommands)); List catchCommandsA = null; String catchName = null; - if (catchExceptions != null) { - if (!catchExceptions.isEmpty()) { - catchName = catchExceptions.get(0).toStringNoQuotes(LocalData.create(new ConstantPool(asGenerator.getConstantPool()))); - } - - } int catchSize = 0; + int catchRegister = 0; + boolean catchInRegisterFlag = false; if (catchCommands != null && !catchCommands.isEmpty()) { - catchCommandsA = asGenerator.toActionList(asGenerator.generate(localData, catchCommands.get(0))); + + List fullCatchBody = new ArrayList<>(); + + if (catchExceptionNames.size() == 1 && catchExceptionTypes.get(0) == null) { //catch everything without any type + GraphTargetItem ename = catchExceptionNames.get(0); + if (ename instanceof DirectValueActionItem) { + catchName = ((DirectValueActionItem) ename).getAsString(); + } else { + Logger.getLogger(TryActionItem.class.getName()).log(Level.SEVERE, "Invalid catchName, string expected"); + } + catchInRegisterFlag = false; + fullCatchBody = GraphTargetItem.toSourceMerge(localData, generator, catchCommands.get(0)); + } else { + catchInRegisterFlag = true; + catchRegister = asGenerator.getTempRegister(localData); + boolean allCatched = false; + for (int i = catchExceptionNames.size() - 1; i >= 0; i--) { + GraphTargetItem etype = catchExceptionTypes.get(i); + if (etype == null) { + allCatched = true; + break; + } + } + + if (!allCatched) { + fullCatchBody.addAll(0, GraphTargetItem.toSourceMerge(localData, generator, + new ActionPush(new RegisterNumber(catchRegister)), + new ActionThrow() + )); + } + + for (int i = catchExceptionNames.size() - 1; i >= 0; i--) { + GraphTargetItem ename = catchExceptionNames.get(i); + GraphTargetItem etype = catchExceptionTypes.get(i); + List ebody = catchCommands.get(i); + if (etype == null) { + fullCatchBody.addAll(0, GraphTargetItem.toSourceMerge(localData, generator, + new DirectValueActionItem(new RegisterNumber(catchRegister)), + ename, + new ActionStackSwap(), + new ActionDefineLocal(), + ebody + )); + } else { + List ifBody = GraphTargetItem.toSourceMerge(localData, generator, + ename, + new ActionStackSwap(), + new ActionDefineLocal(), + ebody); + fullCatchBody.add(0, new ActionPop()); + int toFinishSize = Action.actionsToBytes(asGenerator.toActionList(fullCatchBody), false, SWF.DEFAULT_VERSION).length; + ActionJump finishJump = new ActionJump(toFinishSize); + ifBody.add(finishJump); + List ifBodyA = asGenerator.toActionList(ifBody); + int ifBodySize = Action.actionsToBytes(ifBodyA, false, SWF.DEFAULT_VERSION).length; + fullCatchBody.addAll(0, ifBody); + fullCatchBody.addAll(0, + GraphTargetItem.toSourceMerge(localData, generator, + etype, + new ActionPush(new RegisterNumber(catchRegister)), + new ActionCastOp(), + new ActionPushDuplicate(), + new ActionPush(Null.INSTANCE), + new ActionEquals2(), + new ActionIf(ifBodySize) + )); + + } + } + asGenerator.releaseTempRegister(localData, catchRegister); + } + catchCommandsA = asGenerator.toActionList(fullCatchBody); catchSize = Action.actionsToBytes(catchCommandsA, false, SWF.DEFAULT_VERSION).length; tryCommandsA.add(new ActionJump(catchSize)); } @@ -157,7 +246,7 @@ public class TryActionItem extends ActionItem implements Block { finallySize = Action.actionsToBytes(finallyCommandsA, false, SWF.DEFAULT_VERSION).length; } int trySize = Action.actionsToBytes(tryCommandsA, false, SWF.DEFAULT_VERSION).length; - ret.add(new ActionTry(false, finallyCommands != null, catchCommands != null, catchName, 0, trySize, catchSize, finallySize, SWF.DEFAULT_VERSION)); + ret.add(new ActionTry(catchInRegisterFlag, finallyCommands != null, catchCommands != null, catchName, catchRegister, trySize, catchSize, finallySize, SWF.DEFAULT_VERSION)); ret.addAll(tryCommandsA); if (catchCommandsA != null) { ret.addAll(catchCommandsA); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java index 3b41a5fac..9e506a13a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java @@ -1152,14 +1152,25 @@ public class ActionScript2Parser { s = lex(); boolean found = false; List> catchCommands = null; - List catchExceptions = new ArrayList<>(); - if (s.type == SymbolType.CATCH) { + List catchExceptionNames = new ArrayList<>(); + List catchExceptionTypes = new ArrayList<>(); + + while (s.type == SymbolType.CATCH) { expectedType(SymbolType.PARENT_OPEN); s = lex(); expected(s, lexer.yyline(), SymbolType.IDENTIFIER, SymbolType.STRING); - catchExceptions.add(pushConst((String) s.value)); + catchExceptionNames.add(pushConst((String) s.value)); + s = lex(); + if (s.type == SymbolType.COLON) { + catchExceptionTypes.add(type(variables)); + } else { + catchExceptionTypes.add(null); + lexer.pushback(s); + } expectedType(SymbolType.PARENT_CLOSE); - catchCommands = new ArrayList<>(); + if (catchCommands == null) { + catchCommands = new ArrayList<>(); + } List cc = new ArrayList<>(); cc.add(command(inFunction, inMethod, forinlevel, true, variables, functions)); catchCommands.add(cc); @@ -1177,7 +1188,7 @@ public class ActionScript2Parser { expected(s, lexer.yyline(), SymbolType.CATCH, SymbolType.FINALLY); } lexer.pushback(s); - ret = new TryActionItem(tryCommands, catchExceptions, catchCommands, finallyCommands); + ret = new TryActionItem(tryCommands, catchExceptionNames, catchExceptionTypes, catchCommands, finallyCommands); break; case THROW: ret = new ThrowActionItem(null, null, expression(inFunction, inMethod, true, variables, functions)); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf7/ActionTry.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf7/ActionTry.java index f5cdc4667..f10f44463 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf7/ActionTry.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf7/ActionTry.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.action.swf7; import com.jpexs.decompiler.flash.SWFInputStream; @@ -21,12 +22,16 @@ import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.ActionList; import com.jpexs.decompiler.flash.action.LocalDataArea; import com.jpexs.decompiler.flash.action.model.ActionItem; +import com.jpexs.decompiler.flash.action.model.CastOpActionItem; +import com.jpexs.decompiler.flash.action.model.DefineLocalActionItem; import com.jpexs.decompiler.flash.action.model.DirectValueActionItem; +import com.jpexs.decompiler.flash.action.model.ThrowActionItem; import com.jpexs.decompiler.flash.action.model.clauses.TryActionItem; import com.jpexs.decompiler.flash.action.parser.ActionParseException; import com.jpexs.decompiler.flash.action.parser.pcode.ASMParsedSymbol; import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer; import com.jpexs.decompiler.flash.action.swf4.RegisterNumber; +import com.jpexs.decompiler.flash.ecma.Null; import com.jpexs.decompiler.flash.exporters.modes.ScriptExportMode; import com.jpexs.decompiler.flash.types.annotations.Reserved; import com.jpexs.decompiler.flash.types.annotations.SWFVersion; @@ -34,6 +39,9 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemContainer; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.TranslateStack; +import com.jpexs.decompiler.graph.model.IfItem; +import com.jpexs.decompiler.graph.model.PopItem; +import com.jpexs.decompiler.graph.model.PushItem; import com.jpexs.helpers.Helper; import com.jpexs.helpers.utf8.Utf8Helper; import java.io.IOException; @@ -274,23 +282,89 @@ public class ActionTry extends Action implements GraphSourceItemContainer { @Override public void translateContainer(List> contents, GraphSourceItem lineStartItem, TranslateStack stack, List output, HashMap regNames, HashMap variables, HashMap functions) { List tryCommands = contents.get(0); - ActionItem catchName; - if (catchInRegisterFlag) { - catchName = new DirectValueActionItem(this, lineStartItem, -1, new RegisterNumber(this.catchRegister), new ArrayList<>()); - } else { - catchName = new DirectValueActionItem(this, lineStartItem, -1, this.catchName, new ArrayList<>()); - } - List catchExceptions = new ArrayList<>(); - if (catchBlockFlag) { - catchExceptions.add(catchName); - } + + List catchExceptionNames = new ArrayList<>(); + List catchExceptionTypes = new ArrayList<>(); List> catchCommands = new ArrayList<>(); + if (catchBlockFlag) { - catchCommands.add(contents.get(1)); + List body = contents.get(1); + if (catchInRegisterFlag) { + //catchName = new DirectValueActionItem(this, lineStartItem, -1, new RegisterNumber(this.catchRegister), new ArrayList<>()); + if (body.size() >= 2) { + int pos = 0; + loopex: + while (body.get(pos) instanceof PushItem) { + PushItem pi = (PushItem) body.get(pos); + if (pi.value instanceof CastOpActionItem) { + CastOpActionItem co = (CastOpActionItem) pi.value; + if ((co.object instanceof DirectValueActionItem) && (((DirectValueActionItem) co.object).value instanceof RegisterNumber)) { + RegisterNumber rn = (RegisterNumber) ((DirectValueActionItem) co.object).value; + if (rn.number == catchRegister) { + catchExceptionTypes.add(co.constructor); + if (body.get(pos + 1) instanceof IfItem) { + IfItem ifi = (IfItem) body.get(pos + 1); + if (!ifi.onTrue.isEmpty()) { + if (ifi.onTrue.get(0) instanceof DefineLocalActionItem) { + DefineLocalActionItem dl = (DefineLocalActionItem) ifi.onTrue.get(0); + catchExceptionNames.add(dl.name); + List catchBody = new ArrayList<>(ifi.onTrue); + catchBody.remove(0); + catchCommands.add(catchBody); + if (!ifi.onFalse.isEmpty()) { + if (ifi.onFalse.get(0) instanceof PopItem) { + pos = 1; + body = ifi.onFalse; + continue loopex; + } else { + break; + } + } else { + break; + } + /*if (body.size() == pos + 4) { + if (body.get(pos + 2) instanceof PopItem) { + if (body.get(pos + 3) instanceof ThrowActionItem) { + ThrowActionItem ta = (ThrowActionItem) body.get(pos + 3); + if (ta.value instanceof DirectValueActionItem) { + if (((DirectValueActionItem) ta.value).value instanceof RegisterNumber) { + RegisterNumber rn2 = (RegisterNumber) ((DirectValueActionItem) ta.value).value; + if (rn2.number == catchRegister) { + break; + } + } + } + } + } + }else{ + + }*/ + } + } + } + } + } + + } + } + if (body.get(pos) instanceof DefineLocalActionItem) { + DefineLocalActionItem dl = (DefineLocalActionItem) body.get(pos); + catchExceptionNames.add(dl.name); + catchExceptionTypes.add(null); + List catchBody = new ArrayList<>(body); + catchBody.remove(0); //pop + catchBody.remove(0); //definelocal + catchCommands.add(catchBody); + } + } + } else { + catchExceptionNames.add(new DirectValueActionItem(this, lineStartItem, -1, this.catchName, new ArrayList<>())); + catchExceptionTypes.add(null); + catchCommands.add(body); + } } List finallyCommands = contents.get(2); - output.add(new TryActionItem(tryCommands, catchExceptions, catchCommands, finallyCommands)); - + output.add(new TryActionItem(tryCommands, catchExceptionNames, catchExceptionTypes, catchCommands, finallyCommands)); } @Override diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java index 73652164e..c557b9895 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java @@ -1873,4 +1873,66 @@ public class ActionScript2Test extends ActionScript2TestBase { + "trace(\"switchVariantsTest\");\r\n" ); } + + @Test + public void frame68_tryTypeTest() { + compareSrc(68, "trace(\"tryTypeTest\");\r\n" + + "var a = 5;\r\n" + + "try\r\n" + + "{\r\n" + + "a = a / 0;\r\n" + + "}\r\n" + + "catch(e)\r\n" + + "{\r\n" + + "trace(\"err:\" + e);\r\n" + + "}\r\n" + + "try\r\n" + + "{\r\n" + + "a = a / 0;\r\n" + + "}\r\n" + + "catch(e)\r\n" + + "{\r\n" + + "if(a == 0)\r\n" + + "{\r\n" + + "throw e;\r\n" + + "}\r\n" + + "else\r\n" + + "{\r\n" + + "trace(\"err:\" + e);\r\n" + + "}\r\n" + + "}\r\n" + + "try\r\n" + + "{\r\n" + + "a = a / 0;\r\n" + + "}\r\n" + + "catch(e:MyError)\r\n" + + "{\r\n" + + "trace(\"err:\" + e);\r\n" + + "}\r\n" + + "try\r\n" + + "{\r\n" + + "a = a / 0;\r\n" + + "}\r\n" + + "catch(e1:MyError)\r\n" + + "{\r\n" + + "trace(\"err:\" + e1);\r\n" + + "}\r\n" + + "catch(e2)\r\n" + + "{\r\n" + + "trace(\"err:\" + e2);\r\n" + + "}\r\n" + + "try\r\n" + + "{\r\n" + + "a = a / 0;\r\n" + + "}\r\n" + + "catch(e:MyError)\r\n" + + "{\r\n" + + "trace(\"err:\" + e);\r\n" + + "}\r\n" + + "catch(e2:Error)\r\n" + + "{\r\n" + + "trace(\"err:\" + e2);\r\n" + + "}\r\n" + ); + } } diff --git a/libsrc/ffdec_lib/testdata/as2/MyError.as b/libsrc/ffdec_lib/testdata/as2/MyError.as new file mode 100644 index 000000000..17155b011 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as2/MyError.as @@ -0,0 +1,4 @@ +class MyError extends Error +{ + var message = "My custom error occurred"; +} \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/as2/as2.fla b/libsrc/ffdec_lib/testdata/as2/as2.fla index cad3e071e176477e607ffef6a9b4ed0b9743efa4..a84106d3808a54f451155110493497f9e1400597 100644 GIT binary patch delta 11287 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 KfI1HNuKouyqWLcX diff --git a/libsrc/ffdec_lib/testdata/as2/as2.swf b/libsrc/ffdec_lib/testdata/as2/as2.swf index c9832c61c8e2ea9c478a8156c91b55774068db09..58a2056d815013887748c558aec013e58196345b 100644 GIT binary patch delta 22627 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%0DhV`<&C`Cr3P>^1@$buMbO@&R(k}fA0ubGos_j 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