From 28650d40fbc08bc70b6f7d1ef3d658fab90d5aec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 1 Feb 2021 19:17:54 +0100 Subject: [PATCH] Fixed: Dot parent operator not detected in some cases --- CHANGELOG.md | 1 + .../flash/abc/avm2/graph/AVM2Graph.java | 157 +++++++++++++----- .../abc/avm2/model/FilteredCheckAVM2Item.java | 10 +- .../ActionScript3ClassicDecompileTest.java | 24 +++ .../testdata/flashdevelop/bin/Main.air.swf | Bin 15859 -> 16119 bytes .../testdata/flashdevelop/bin/Main.flex.swf | Bin 20334 -> 20751 bytes .../testdata/flashdevelop/src/Main.as | 1 + .../flashdevelop/src/tests/TestDotParent.as | 22 +++ 8 files changed, 171 insertions(+), 44 deletions(-) create mode 100644 libsrc/ffdec_lib/testdata/flashdevelop/src/tests/TestDotParent.as diff --git a/CHANGELOG.md b/CHANGELOG.md index d45a9baa9..ad0eba3f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ All notable changes to this project will be documented in this file. - #1206 Switch with multiple default clauses - ASC2 §§push of function calls before returning from a method - Support for ASC2 and swftools try..catch..finally block +- Dot parent operator not detected in some cases ### Changed - AS3 test methods separated to classes 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 6ecefbdc2..ddc63f3d7 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 @@ -43,8 +43,10 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.stack.PushByteIns; import com.jpexs.decompiler.flash.abc.avm2.instructions.types.CoerceAIns; import com.jpexs.decompiler.flash.abc.avm2.instructions.types.ConvertIIns; import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.ConstructAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.FilteredCheckAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.FullMultinameAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.GetLexAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.HasNextAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.InAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.IntegerValueAVM2Item; @@ -59,6 +61,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.SetSlotAVM2Item; 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.clauses.ExceptionAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.clauses.FilterAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.clauses.ForEachInAVM2Item; @@ -79,9 +82,11 @@ import com.jpexs.decompiler.graph.ScopeStack; import com.jpexs.decompiler.graph.TranslateStack; import com.jpexs.decompiler.graph.model.AnyItem; import com.jpexs.decompiler.graph.model.BreakItem; +import com.jpexs.decompiler.graph.model.CommaExpressionItem; import com.jpexs.decompiler.graph.model.ContinueItem; import com.jpexs.decompiler.graph.model.DuplicateItem; import com.jpexs.decompiler.graph.model.ExitItem; +import com.jpexs.decompiler.graph.model.FalseItem; import com.jpexs.decompiler.graph.model.GotoItem; import com.jpexs.decompiler.graph.model.IfItem; import com.jpexs.decompiler.graph.model.LoopItem; @@ -626,7 +631,6 @@ public class AVM2Graph extends Graph { return ret; } - private List checkTry(List currentRet, List output, List foundGotos, Map> partCodes, Map partCodePos, AVM2LocalData localData, GraphPart part, List stopPart, List loops, Set allParts, TranslateStack stack, int staticOperation, String path) throws InterruptedException { if (localData.parsedExceptions == null) { localData.parsedExceptions = new ArrayList<>(); @@ -1210,62 +1214,133 @@ public class AVM2Graph extends Graph { if (hn.obj.getNotCoerced().getThroughRegister().getNotCoerced() instanceof FilteredCheckAVM2Item) { if (w.commands.size() >= 3) { int pos = 0; + Set localRegsToKill = new HashSet<>(); + while (w.commands.get(pos) instanceof SetLocalAVM2Item) { + if (w.commands.get(pos).value instanceof NextValueAVM2Item) { + NextValueAVM2Item nextValueItem = (NextValueAVM2Item) w.commands.get(pos).value; + if (nextValueItem.index instanceof LocalRegAVM2Item) { + localRegsToKill.add(((LocalRegAVM2Item) nextValueItem.index).regIndex); + } + if (nextValueItem.obj instanceof LocalRegAVM2Item) { + localRegsToKill.add(((LocalRegAVM2Item) nextValueItem.obj).regIndex); + } + } pos++; } GraphTargetItem ft = w.commands.get(pos); if (ft instanceof WithAVM2Item) { pos++; - while (w.commands.get(pos) instanceof SetTypeAVM2Item) { + List withCommands = new ArrayList<>(); + while (!(w.commands.get(pos) instanceof WithEndAVM2Item)) { + withCommands.add(w.commands.get(pos)); pos++; } - ft = w.commands.get(pos); - if (ft instanceof IfItem) { - IfItem ift = (IfItem) ft; - if (ift.onTrue.size() > 0) { - ft = ift.onTrue.get(0); - if (ft instanceof SetPropertyAVM2Item) { - SetPropertyAVM2Item spt = (SetPropertyAVM2Item) ft; - if (spt.object instanceof LocalRegAVM2Item) { - int regIndex = ((LocalRegAVM2Item) spt.object).regIndex; - HashMap localRegs = aLocalData.localRegs; - localRegs.put(regIndex, new FilterAVM2Item(null, null, hn.obj.getThroughRegister(), ift.expression)); - Set localRegsToKill = new HashSet<>(); - localRegsToKill.add(regIndex); + GraphTargetItem expr = null; + int getLocalObjectIp = -1; + int regIndex = -1; + HashMap localRegs = aLocalData.localRegs; - if (hn.obj instanceof LocalRegAVM2Item) { - localRegsToKill.add(((LocalRegAVM2Item) hn.obj).regIndex); - } - if (spt.value instanceof LocalRegAVM2Item) { - localRegsToKill.add(((LocalRegAVM2Item) spt.value).regIndex); - } - if (spt.propertyName instanceof FullMultinameAVM2Item) { - if (((FullMultinameAVM2Item) spt.propertyName).name instanceof LocalRegAVM2Item) { - localRegsToKill.add(((LocalRegAVM2Item) ((FullMultinameAVM2Item) spt.propertyName).name).regIndex); + if (!withCommands.isEmpty()) { + if (withCommands.get(withCommands.size() - 1) instanceof IfItem) { + IfItem ift = (IfItem) withCommands.get(withCommands.size() - 1); + if (ift.onTrue.size() > 0) { + ft = ift.onTrue.get(0); + if (ft instanceof SetPropertyAVM2Item) { + SetPropertyAVM2Item spt = (SetPropertyAVM2Item) ft; + if (spt.object instanceof LocalRegAVM2Item) { + getLocalObjectIp = avm2code.adr2pos(spt.object.getSrc().getAddress()); + regIndex = ((LocalRegAVM2Item) spt.object).regIndex; + expr = ift.expression.getNotCoerced(); + if (withCommands.size() > 1) { + withCommands.remove(withCommands.size() - 1); + withCommands.add(expr); + expr = new CommaExpressionItem(null, localData.lineStartInstruction, withCommands); } } - - //TODO: maybe check its single usage - for (int i = output.size() - 2 /*last is loop*/; i >= 0; i--) { - if (localRegsToKill.isEmpty()) { - break; - } - if (output.get(i) instanceof SetLocalAVM2Item) { - SetLocalAVM2Item setLocal = (SetLocalAVM2Item) output.get(i); - if (localRegsToKill.contains(setLocal.regIndex)) { - output.remove(i); - } - } else { - break; - } - } - - return null; } } + } else { + //There is no if - this means there was something that + // can be evaluated on compiletime and compiler removed the whole if + // ASC2 does this + withCommands.add(new FalseItem(null, localData.lineStartInstruction)); + expr = new CommaExpressionItem(null, localData.lineStartInstruction, withCommands); + } + } else { + expr = new FalseItem(null, localData.lineStartInstruction); + } + FilteredCheckAVM2Item filteredCheck = (FilteredCheckAVM2Item) hn.obj.getThroughRegister().getNotCoerced(); + FilterAVM2Item filter = new FilterAVM2Item(null, null, filteredCheck.object, expr); + + if (regIndex == -1) { + for (int i = output.size() - 2 /*last is loop*/; i >= 0; i--) { + if (output.get(i) instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocal = (SetLocalAVM2Item) output.get(i); + if (setLocal.value instanceof ConstructAVM2Item) { + if ((((ConstructAVM2Item) setLocal.value).object instanceof GetLexAVM2Item)) { + GetLexAVM2Item lex = (GetLexAVM2Item) ((ConstructAVM2Item) setLocal.value).object; + if ("XMLList".equals(lex.getRawPropertyName())) { + regIndex = setLocal.regIndex; + } + } + } + } else { + break; + } } } + + localRegsToKill.add(regIndex); + + if (hn.obj instanceof LocalRegAVM2Item) { + localRegsToKill.add(((LocalRegAVM2Item) hn.obj).regIndex); + } + + int setLocalIp = -1; + for (int i = output.size() - 2 /*last is loop*/; i >= 0; i--) { + if (output.get(i) instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocal = (SetLocalAVM2Item) output.get(i); + if (setLocal.regIndex == regIndex) { + setLocalIp = avm2code.adr2pos(setLocal.getSrc().getAddress()); + break; + } + } else { + break; + } + } + Set usages = new HashSet<>(); + if (setLocalIp > -1) { + usages = new HashSet<>(aLocalData.getSetLocalUsages(setLocalIp)); + usages.remove(getLocalObjectIp); + + } + + for (int i = output.size() - 2 /*last is loop*/; i >= 0; i--) { + if (localRegsToKill.isEmpty()) { + break; + } + if (output.get(i) instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocal = (SetLocalAVM2Item) output.get(i); + if (localRegsToKill.contains(setLocal.regIndex)) { + output.remove(i); + } + if (setLocal.regIndex == regIndex) { + setLocal.value = filter; + } + } else { + break; + } + } + + if (usages.isEmpty()) { + output.add(filter); + } else { + localRegs.put(regIndex, filter); + } + return null; + } } } else if (!w.commands.isEmpty()) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/FilteredCheckAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/FilteredCheckAVM2Item.java index 6db286719..83504c230 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/FilteredCheckAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/FilteredCheckAVM2Item.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.helpers.GraphTextWriter; @@ -28,7 +29,7 @@ import com.jpexs.decompiler.graph.model.LocalData; */ public class FilteredCheckAVM2Item extends AVM2Item { - GraphTargetItem object; + public GraphTargetItem object; public FilteredCheckAVM2Item(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem object) { super(instruction, lineStartIns, NOPRECEDENCE); @@ -42,7 +43,10 @@ public class FilteredCheckAVM2Item extends AVM2Item { @Override public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { - return object.toString(writer, localData); + writer.append("§§checkfilter("); + object.toString(writer, localData); + writer.append(")"); + return writer; } @Override diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3ClassicDecompileTest.java index 168a28cee..f2325d06a 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3ClassicDecompileTest.java @@ -232,6 +232,30 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes false); } + @Test + public void testDoWhile3() { + decompileMethod("classic", "testDoWhile3", "do\r\n" + + "{\r\n" + + "this.nextChar();\r\n" + + "}\r\n" + + "while(this.ch != \"\\n\" && this.ch != \"\");\r\n", + false); + } + + @Test + public void testDotParent() { + decompileMethod("classic", "testDotParent", "var d:* = undefined;\r\n" + + "var k:* = undefined;\r\n" + + "var g:* = undefined;\r\n" + + "d = new TestClass1();\r\n" + + "k = null;\r\n" + + "k.(d.attrib++, 0);\r\n" + + "trace(\"between\");\r\n" + + "g = k.(d.attrib++, 0);\r\n" + + "trace(\"end\");\r\n", + false); + } + @Test public void testExpressions() { decompileMethod("classic", "testExpressions", "var arr:Array = null;\r\n" diff --git a/libsrc/ffdec_lib/testdata/flashdevelop/bin/Main.air.swf b/libsrc/ffdec_lib/testdata/flashdevelop/bin/Main.air.swf index 979a2b2cee2f2330c5235e9601b8403638ce7735..cac5031866622f73d778b5d811a212744c0032fc 100644 GIT binary patch literal 16119 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 J{|65HrKLXCG8zB? literal 15859 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 J{{z^<`rncRQoR5G diff --git a/libsrc/ffdec_lib/testdata/flashdevelop/bin/Main.flex.swf b/libsrc/ffdec_lib/testdata/flashdevelop/bin/Main.flex.swf index 2be5ec89b12b73175d488ce96ef19e91f368e666..417265a72265d920a3ac777d69730512016d639c 100644 GIT binary patch literal 20751 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 SVxn(h)iC8%Z2bS;x9Y3TM8VYn literal 20334 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 RqHklBAnjFb{J*LA=Vaj2UE%-$ diff --git a/libsrc/ffdec_lib/testdata/flashdevelop/src/Main.as b/libsrc/ffdec_lib/testdata/flashdevelop/src/Main.as index ed1412865..e036c2b08 100644 --- a/libsrc/ffdec_lib/testdata/flashdevelop/src/Main.as +++ b/libsrc/ffdec_lib/testdata/flashdevelop/src/Main.as @@ -22,6 +22,7 @@ package TestDecl2; TestDeclarations; TestDefaultNotLastGrouped; + TestDotParent; TestDoWhile; TestDoWhile2; TestDoWhile3; diff --git a/libsrc/ffdec_lib/testdata/flashdevelop/src/tests/TestDotParent.as b/libsrc/ffdec_lib/testdata/flashdevelop/src/tests/TestDotParent.as new file mode 100644 index 000000000..8fa10ec48 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/flashdevelop/src/tests/TestDotParent.as @@ -0,0 +1,22 @@ +package tests +{ + + public class TestDotParent + { + public function run():* + { + var d:* = new TestClass1(); + var k:* = null; + + k.(d.attrib++, 0); + trace("between"); + var g:* = k.(d.attrib++, 0); + trace("end"); + } + } +} + +class TestClass1 +{ + public var attrib:int = 5; +} \ No newline at end of file