From 350efe752a235250e094562519d60139239eafa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 29 Nov 2021 09:09:40 +0100 Subject: [PATCH] Fixed AS2 - obfuscated extends, implements --- CHANGELOG.md | 1 + .../action/model/clauses/ClassActionItem.java | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 47ca781cb..15a9ea364 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,7 @@ All notable changes to this project will be documented in this file. - AS1/2 - Infinity, NaN can be used as identifiers, are normal variables - AS2 - obfuscated class attribute names - AS1/2 - newobject deobfuscated name +- AS2 - obfuscated extends, implements ## [14.6.0] - 2021-11-22 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java index 7ee25e987..18c9321c4 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java @@ -137,6 +137,22 @@ public class ClassActionItem extends ActionItem implements Block { } } + private void makePrintObfuscated(GraphTargetItem item) { + if (item == null) { + return; + } + GraphTargetItem it = item; + while (it instanceof GetMemberActionItem) { + GetMemberActionItem m = (GetMemberActionItem) it; + m.printObfuscatedMemberName = true; + it = m.object; + } + if (it instanceof GetVariableActionItem) { + GetVariableActionItem gv = (GetVariableActionItem) it; + gv.printObfuscatedName = true; + } + } + @Override public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { GraphTargetItem clsName = className; @@ -147,6 +163,12 @@ public class ClassActionItem extends ActionItem implements Block { if (clsName instanceof GetVariableActionItem) { ((GetVariableActionItem) clsName).printObfuscatedName = true; } + + makePrintObfuscated(extendsOp); + for (GraphTargetItem im : implementsOp) { + makePrintObfuscated(im); + } + writer.startClass(className.toStringNoQuotes(localData)); writer.append("class "); className.toStringNoQuotes(writer, localData);