From 8a6c4cf35c4922beb5b5ca53917c5dea58695ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 20 Feb 2021 22:01:46 +0100 Subject: [PATCH] Fixed: AS3 with statement decompilation --- CHANGELOG.md | 1 + .../flash/abc/avm2/graph/AVM2Graph.java | 55 +++++++++++++++--- .../flash/abc/avm2/model/WithAVM2Item.java | 13 ++++- .../src/com/jpexs/decompiler/graph/Graph.java | 5 +- .../decompiler/graph/GraphTargetItem.java | 4 ++ .../ActionScript3AssembledDecompileTest.java | 4 +- ...ctionScript3CrossCompileDecompileTest.java | 22 +++++++ ...ipt3CrossCompileSwfToolsDecompileTest.java | 26 +++++++++ .../bin/as3_cross_compile.air.swf | Bin 5151 -> 5472 bytes .../bin/as3_cross_compile.flex.swf | Bin 6964 -> 7374 bytes .../bin/as3_cross_compile.flex_apache.swf | Bin 6918 -> 7356 bytes .../bin/as3_cross_compile.swftools.swf | Bin 2964 -> 3112 bytes .../testdata/as3_cross_compile/src/Main.as | 5 +- .../src/tests/TestTryCatchWith.as | 39 +++++++++++++ 14 files changed, 160 insertions(+), 14 deletions(-) create mode 100644 libsrc/ffdec_lib/testdata/as3_cross_compile/src/tests/TestTryCatchWith.as diff --git a/CHANGELOG.md b/CHANGELOG.md index 458df1eaa..3e58948af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ All notable changes to this project will be documented in this file. - #1159, #1608 Regexp syntax hilight when not a regexp (only division) again - Graphviz Graph not showing AS3 exception end - #1609 First frame missing in frame to PDF export +- AS3 with statement decompilation ### Changed - #1565, #1407, #1350 On BinaryData SWF save, parent SWF is saved diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java index 3f78f2156..9206b3ccf 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java @@ -71,6 +71,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.SetTypeAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.ThrowAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.WithAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.WithEndAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.WithObjectAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.clauses.ExceptionAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.clauses.FilterAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.clauses.ForEachInAVM2Item; @@ -243,7 +244,6 @@ public class AVM2Graph extends Graph { List targetOutput = translatePart(localData2, finallyTryTargetPart, finallyTryTargetStack, 0 /*??*/, "try_target"); - int switchedReg = -1; int finallyKind = FINALLY_KIND_UNKNOWN; Integer finallyThrowPushByte = null; @@ -1018,7 +1018,7 @@ public class AVM2Graph extends Graph { localData2.scopeStack = new ScopeStack(); //We are assuming Finally target has only 1 part - finallyTargetItems = translatePart(localData, finallyTryTargetPart, st2, staticOperation, path);//printGraph(foundGotos, partCodes, partCodePos, visited, localData2, st2, allParts, null, finallyTryTargetPart, finallyTargetStopPart, loops, throwStates, 0, path); + finallyTargetItems = translatePart(localData2, finallyTryTargetPart, st2, staticOperation, path);//printGraph(foundGotos, partCodes, partCodePos, visited, localData2, st2, allParts, null, finallyTryTargetPart, finallyTargetStopPart, loops, throwStates, 0, path); //boolean targetHasThrow = false; if (!finallyTargetItems.isEmpty() && (finallyTargetItems.get(finallyTargetItems.size() - 1) instanceof ThrowAVM2Item)) { @@ -1132,6 +1132,30 @@ public class AVM2Graph extends Graph { currentCatchCommands.remove(0); } }*/ + loopwith: + while (!currentCatchCommands.isEmpty() && (currentCatchCommands.get(0) instanceof WithAVM2Item)) { + WithAVM2Item w = (WithAVM2Item) currentCatchCommands.get(0); + if (w.scope instanceof LocalRegAVM2Item) { + int regId = ((LocalRegAVM2Item) w.scope).regIndex; + for (GraphTargetItem item : localData.scopeStack) { + if (item instanceof WithObjectAVM2Item) { + WithObjectAVM2Item wo = (WithObjectAVM2Item) item; + + if (wo.scope instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocal = (SetLocalAVM2Item) wo.scope; + if (setLocal.regIndex == regId) { + currentCatchCommands.remove(0); + int setLocalIp = localData.code.adr2pos(setLocal.getSrc().getAddress()); + int getLocalIp = localData.code.adr2pos(w.scope.getSrc().getAddress()); + localData.setLocalPosToGetLocalPos.get(setLocalIp).remove(getLocalIp); + continue loopwith; + } + } + } + } + } + break; //its a brand new with inside catch clause + } if (!currentCatchCommands.isEmpty() && (currentCatchCommands.get(currentCatchCommands.size() - 1) instanceof SetLocalAVM2Item)) { SetLocalAVM2Item setLocal = (SetLocalAVM2Item) currentCatchCommands.get(currentCatchCommands.size() - 1); if (setLocal.regIndex == switchedReg) { @@ -1160,21 +1184,18 @@ public class AVM2Graph extends Graph { && (((SetLocalAVM2Item) currentRet.get(currentRet.size() - 1)).regIndex == switchedReg)) { currentRet.remove(currentRet.size() - 1); } - - if (!finallyAsUnnamedException && !inlinedFinally && catchedExceptions.isEmpty() && finallyCommands.isEmpty()) { currentRet.addAll(tryCommands); return true; } - if (finallyAsUnnamedException) - { + if (finallyAsUnnamedException) { catchedExceptions.add(finallyException); catchCommands.add(finallyCommands); finallyCommands = new ArrayList<>(); } - + TryAVM2Item tryItem = new TryAVM2Item(tryCommands, catchedExceptions, catchCommands, finallyCommands, ""); if (inlinedFinally) { List> parentCatchCommands = new ArrayList<>(); @@ -1871,6 +1892,26 @@ public class AVM2Graph extends Graph { } for (int i = 0; i < list.size(); i++) { + + if (list.get(i) instanceof WithAVM2Item) { + WithAVM2Item wa = (WithAVM2Item) list.get(i); + if (wa.scope instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocal = (SetLocalAVM2Item) wa.scope; + int setLocalIp = avm2code.adr2pos(setLocal.getSrc().getAddress()); + if (localData.getRegisterUsage(setLocalIp).isEmpty()) { + for (int j = i + 1; j < list.size(); j++) { + if (list.get(j) instanceof WithEndAVM2Item) { + WithEndAVM2Item we = (WithEndAVM2Item) list.get(j); + if (we.scope == wa.scope) { + wa.scope = we.scope = setLocal.value; + } + } + } + + } + } + } + if (list.get(i) instanceof SetLocalAVM2Item) { SetLocalAVM2Item ri = (SetLocalAVM2Item) list.get(i); int setLocalIp = avm2code.adr2pos(ri.getSrc().getAddress()); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/WithAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/WithAVM2Item.java index 5016f0dfb..22be7686e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/WithAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/WithAVM2Item.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.abc.avm2.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; @@ -77,6 +78,16 @@ public class WithAVM2Item extends AVM2Item { return false; } + @Override + public boolean needsNewLine() { + return false; + } + + @Override + public boolean handlesNewLine() { + return true; + } + @Override public GraphTargetItem returnType() { return TypeItem.UNBOUNDED; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java index f29ea1f75..475743f17 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java @@ -2585,7 +2585,10 @@ public class Graph { public static GraphTextWriter graphToString(List tree, GraphTextWriter writer, LocalData localData) throws InterruptedException { for (GraphTargetItem ti : tree) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, localData).newLine(); + ti.toStringSemicoloned(writer, localData); + if (!ti.handlesNewLine()) { + writer.newLine(); + } } } return writer; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphTargetItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphTargetItem.java index 2aba9e2a9..26e95c5df 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphTargetItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphTargetItem.java @@ -433,6 +433,10 @@ public abstract class GraphTargetItem implements Serializable, Cloneable { return false; } + public boolean handlesNewLine() { + return false; + } + public GraphTextWriter toStringNL(GraphTextWriter writer, LocalData localData) throws InterruptedException { writer.startOffset(src, getLineStartItem(), getPos(), srcData); appendTry(writer, localData); diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java index d7541037d..a91795b3a 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java @@ -18,10 +18,8 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT @Test public void testDeclareReg() { - decompileMethod("assembled", "testDeclareReg", "var _loc3_:*;\r\n" - + "with(_loc3_ = other)\r\n" + decompileMethod("assembled", "testDeclareReg", "with(other)\r\n" + "{\r\n" - + "\r\n" + "trace(\"hey\");\r\n" + "}\r\n", false); diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileDecompileTest.java index f8b54fe37..af068835b 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileDecompileTest.java @@ -513,6 +513,28 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi false); } + @Test(dataProvider = "swfNamesProvider") + public void testTryCatchWith(String swfUsed) { + decompileMethod(swfUsed, "testTryCatchWith", "var a:MyTest = new MyTest();\r\n" + + "trace(\"before with\");\r\n" + + "with(a)\r\n" + + "{\r\n" + + "trace(\"before try\");\r\n" + + "try\r\n" + + "{\r\n" + + "trace(\"in try\");\r\n" + + "}\r\n" + + "catch(e:Error)\r\n" + + "{\r\n" + + "attrib = attrib + 1;\r\n" + + "trace(\"in catch\");\r\n" + + "}\r\n" + + "trace(\"after try\");\r\n" + + "}\r\n" + + "trace(\"after\");\r\n", + false); + } + @Test(dataProvider = "swfNamesProvider") public void testTryFinally(String swfUsed) { decompileMethod(swfUsed, "testTryFinally", "trace(\"before try\");\r\n" diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileSwfToolsDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileSwfToolsDecompileTest.java index 9902b6426..81fd56421 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileSwfToolsDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileSwfToolsDecompileTest.java @@ -504,6 +504,32 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript false); } + @Test + public void testTryCatchWith() { + decompileMethod("swftools", "testTryCatchWith", "var _loc1_:* = new MyTest();\r\n" + + "trace(\"before with\");\r\n" + + "var _loc2_:*;\r\n" + + "with(_loc2_ = _loc1_)\r\n" + + "{\r\n" + + "trace(\"before try\");\r\n" + + "try\r\n" + + "{\r\n" + + "trace(\"in try\");\r\n" + + "}\r\n" + + "catch(e:Error)\r\n" + + "{\r\n" + + "with(_loc2_)\r\n" + + "{\r\n" + + "\r\n" + + "attrib = attrib + 1;\r\n" + + "trace(\"in catch\");\r\n" + + "}\r\n" + + "trace(\"after try\");\r\n" + + "}\r\n" + + "trace(\"after\");\r\n", + false); + } + @Test public void testTryFinally() { decompileMethod("swftools", "testTryFinally", "trace(\"before try\");\r\n" diff --git a/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.air.swf b/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.air.swf index b064ff8168b09f19b6c097f7aba742e962aa06b0..24bf677b936b3ae4c3bc0d4230bb176bc7da2490 100644 GIT binary patch literal 5472 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 literal 5151 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 A2mk;8 literal 6964 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 z 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 G{ocCZWlXaG diff --git a/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.flex_apache.swf b/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.flex_apache.swf index 07ed29e985bd58febcdbd56e9bc39dac7ec4a660..d5b97bbb328db6e3453cdcf2b12a9c3e4f2fa477 100644 GIT binary patch literal 7356 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 MeemIb0dsojlDHLU_W%F@ diff --git a/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.swftools.swf b/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.swftools.swf index ea6da3b9561e1cc4ea9c2b451b3a302619060eeb..48a7fc4ea967476ae4890bd0472f6fd8227a9f75 100644 GIT binary patch literal 3112 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 KS@Iu|T*N0#%&1=g diff --git a/libsrc/ffdec_lib/testdata/as3_cross_compile/src/Main.as b/libsrc/ffdec_lib/testdata/as3_cross_compile/src/Main.as index 83afa9c8f..4d2067696 100644 --- a/libsrc/ffdec_lib/testdata/as3_cross_compile/src/Main.as +++ b/libsrc/ffdec_lib/testdata/as3_cross_compile/src/Main.as @@ -28,6 +28,8 @@ package TestTryCatchLoopBreak6; TestTryCatchReturn; TestTryCatchExceptionUsage + TestTryCatchTry; + TestTryCatchWith; TestTryFinally; TestTryFinallyDirectReturnInFinally; TestTryFinallyLoop; @@ -38,8 +40,7 @@ package TestTryFinallyReturnInFinally; TestTryFinallyReturnNested; TestTryFinallyReturnNested2; - TestTryFinallyReturnVoid; - TestTryCatchTry; + TestTryFinallyReturnVoid; public function Main() { diff --git a/libsrc/ffdec_lib/testdata/as3_cross_compile/src/tests/TestTryCatchWith.as b/libsrc/ffdec_lib/testdata/as3_cross_compile/src/tests/TestTryCatchWith.as new file mode 100644 index 000000000..04afa06b4 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_cross_compile/src/tests/TestTryCatchWith.as @@ -0,0 +1,39 @@ +package tests +{ + /** + * ... + * @author JPEXS + */ + public class TestTryCatchWith + { + + public function run() : void + { + var a:MyTest = new MyTest(); + + trace("before with"); + with (a) + { + trace("before try"); + try + { + trace("in try"); + } + catch (e:Error) + { + attrib = attrib + 1; + trace("in catch"); + } + trace("after try"); + } + trace("after"); + } + + } + +} + +class MyTest +{ + public var attrib:int = 5; +} \ No newline at end of file