From 55f43b53902c4d1ece654504b0cc55c607ec6069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 26 Jul 2025 10:39:40 +0200 Subject: [PATCH] =?UTF-8?q?Prefer=20quotes=20syntax=20over=20=C2=A7.=20(te?= =?UTF-8?q?xt=20variables,=20placeobject=20names)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/jsyntaxpane-0.9.5.jar | Bin 609204 -> 609611 bytes libsrc/ffdec_lib/lexers/text.flex | 33 +-- .../flash/IdentifiersDeobfuscation.java | 6 +- .../flash/tags/DefineEditTextTag.java | 7 +- .../flash/tags/PlaceObject2Tag.java | 4 +- .../flash/tags/PlaceObject3Tag.java | 4 +- .../flash/tags/PlaceObject4Tag.java | 4 +- .../decompiler/flash/tags/text/TextLexer.java | 239 ++++++++---------- .../jflex/jsyntaxpane/lexers/swftext.flex | 49 +++- .../flash/gui/GenericTagTreePanel.java | 3 +- .../gui/generictageditors/StringEditor.java | 6 +- 11 files changed, 193 insertions(+), 162 deletions(-) diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar index 5db5a1b5cc69c6dd125ad97520f6def921dbc602..d1549edd4f25f7ab50b3fc425f111ebb1a143b54 100644 GIT binary patch delta 33000 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 G`2PTAGAeQa delta 32575 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 Z1^FffplN|(1A>|`T+}a3Q1D{>{{fUrp`ic( diff --git a/libsrc/ffdec_lib/lexers/text.flex b/libsrc/ffdec_lib/lexers/text.flex index ad655f36f..578ad3cdb 100644 --- a/libsrc/ffdec_lib/lexers/text.flex +++ b/libsrc/ffdec_lib/lexers/text.flex @@ -37,7 +37,7 @@ package com.jpexs.decompiler.flash.tags.text; private StringBuilder string = null; private int repeatNum = 1; - + /** * Create an empty lexer, yyrset will be called later to reset and assign * the reader @@ -64,7 +64,7 @@ StringCharacter = [^\r\n\"\\] OIdentifierCharacter = [^\r\n\u00A7\\] DecIntegerLiteral = (0 | [1-9][0-9]*) [ui]? LineTerminator = \r|\n|\r\n - +PositiveNumberLiteral = 0 | [1-9][0-9]* %state PARAMETER,VALUE,OIDENTIFIER,STRING @@ -171,31 +171,34 @@ LineTerminator = \r|\n|\r\n { \" { yybegin(VALUE); + repeatNum = 1; // length also includes the trailing quote String tos = string.toString(); string = null; return new ParsedSymbol(SymbolType.PARAMETER_VALUE, tos); } - {StringCharacter}+ { string.append(yytext()); } + {StringCharacter} { for(int r=0;r map = swf.getAs3ObfuscatedIdentifiers(); + if (Configuration.useSafeStr.get() && as3) { + + Map map = swf == null ? new LinkedHashMap<>() : swf.getAs3ObfuscatedIdentifiers(); if (map.containsKey(s)) { used.add(s); return map.get(s); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineEditTextTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineEditTextTag.java index b837e9831..e26bd9864 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineEditTextTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineEditTextTag.java @@ -65,6 +65,7 @@ import com.jpexs.decompiler.flash.types.annotations.SWFType; import com.jpexs.decompiler.flash.types.annotations.SWFVersion; import com.jpexs.decompiler.graph.DottedChain; import com.jpexs.helpers.ByteArrayRange; +import com.jpexs.helpers.Helper; import com.jpexs.helpers.SerializableImage; import java.awt.Color; import java.awt.Font; @@ -898,7 +899,8 @@ public class DefineEditTextTag extends TextTag { writer.append("leading ").append(leading).newLine(); } if (!variableName.isEmpty()) { - writer.append("variablename ").append(DottedChain.parseNoSuffix(variableName).toPrintableString(new LinkedHashSet<>(), getSwf(), false)).newLine(); + writer.append("variablename ").append("\"").append(Helper.escapePCodeString(variableName)).append("\"").newLine(); + //.append(DottedChain.parseNoSuffix(variableName).toPrintableString(new LinkedHashSet<>(), getSwf(), false)).newLine(); } writer.append("]"); if (hasText) { @@ -1611,7 +1613,8 @@ public class DefineEditTextTag extends TextTag { public Map getNameProperties() { Map ret = super.getNameProperties(); if (variableName != null && !variableName.isEmpty()) { - ret.put("vn", DottedChain.parseNoSuffix(variableName).toPrintableString(new LinkedHashSet<>(), getSwf(), false)); + ret.put("vn", "\"" + Helper.escapePCodeString(variableName) + "\""); + //DottedChain.parseNoSuffix(variableName).toPrintableString(new LinkedHashSet<>(), getSwf(), false)); } return ret; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/PlaceObject2Tag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/PlaceObject2Tag.java index 3ba1fb5a8..a1ae0fac3 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/PlaceObject2Tag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/PlaceObject2Tag.java @@ -36,6 +36,7 @@ import com.jpexs.decompiler.flash.types.annotations.SWFVersion; import com.jpexs.decompiler.flash.types.filters.FILTER; import com.jpexs.decompiler.graph.DottedChain; import com.jpexs.helpers.ByteArrayRange; +import com.jpexs.helpers.Helper; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedHashSet; @@ -459,7 +460,8 @@ public class PlaceObject2Tag extends PlaceObjectTypeTag implements ASMSourceCont public Map getNameProperties() { Map ret = super.getNameProperties(); if (placeFlagHasName) { - ret.put("nm", DottedChain.parseNoSuffix(name).toPrintableString(new LinkedHashSet<>(), getSwf(), false)); + ret.put("nm", "\"" + Helper.escapePCodeString(name) + "\""); + //ret.put("nm", DottedChain.parseNoSuffix(name).toPrintableString(new LinkedHashSet<>(), getSwf(), false)); } return ret; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/PlaceObject3Tag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/PlaceObject3Tag.java index 1b7b582cf..8abe38947 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/PlaceObject3Tag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/PlaceObject3Tag.java @@ -42,6 +42,7 @@ import com.jpexs.decompiler.flash.types.annotations.SWFVersion; import com.jpexs.decompiler.flash.types.filters.FILTER; import com.jpexs.decompiler.graph.DottedChain; import com.jpexs.helpers.ByteArrayRange; +import com.jpexs.helpers.Helper; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedHashSet; @@ -699,7 +700,8 @@ public class PlaceObject3Tag extends PlaceObjectTypeTag implements ASMSourceCont public Map getNameProperties() { Map ret = super.getNameProperties(); if (placeFlagHasName) { - ret.put("nm", DottedChain.parseNoSuffix(name).toPrintableString(new LinkedHashSet<>(), getSwf(), false)); + ret.put("nm", "\"" + Helper.escapePCodeString(name) + "\""); + //ret.put("nm", DottedChain.parseNoSuffix(name).toPrintableString(new LinkedHashSet<>(), getSwf(), false)); } return ret; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/PlaceObject4Tag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/PlaceObject4Tag.java index 6502ac2f3..975a406c2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/PlaceObject4Tag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/PlaceObject4Tag.java @@ -43,6 +43,7 @@ import com.jpexs.decompiler.flash.types.annotations.SWFVersion; import com.jpexs.decompiler.flash.types.filters.FILTER; import com.jpexs.decompiler.graph.DottedChain; import com.jpexs.helpers.ByteArrayRange; +import com.jpexs.helpers.Helper; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedHashSet; @@ -712,7 +713,8 @@ public class PlaceObject4Tag extends PlaceObjectTypeTag implements ASMSourceCont public Map getNameProperties() { Map ret = super.getNameProperties(); if (placeFlagHasName) { - ret.put("nm", DottedChain.parseNoSuffix(name).toPrintableString(new LinkedHashSet<>(), getSwf(), false)); + ret.put("nm", "\"" + Helper.escapePCodeString(name) + "\""); + //ret.put("nm", DottedChain.parseNoSuffix(name).toPrintableString(new LinkedHashSet<>(), getSwf(), false)); } return ret; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/text/TextLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/text/TextLexer.java index c8b617db0..3fa8024b4 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/text/TextLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/text/TextLexer.java @@ -73,14 +73,13 @@ public final class TextLexer { private static final String ZZ_ACTION_PACKED_0 = "\5\0\2\1\1\2\1\3\1\4\1\5\1\6\1\7"+ "\1\10\1\11\1\12\1\13\1\2\1\14\1\15\1\14"+ - "\1\16\1\2\1\17\1\20\1\21\1\22\1\23\1\24"+ - "\1\25\1\26\1\27\1\30\1\31\1\32\1\20\1\33"+ - "\1\34\1\35\1\36\1\37\1\40\1\41\3\20\1\42"+ - "\1\43\1\44\1\45\1\46\1\47\1\50\1\51\1\52"+ - "\2\42\6\0\1\53\1\54\2\0\1\55\1\0"; + "\1\2\1\16\1\17\1\20\1\21\1\22\1\23\1\24"+ + "\1\25\1\26\1\27\1\30\1\31\1\17\1\32\1\33"+ + "\1\34\1\35\1\36\1\37\1\40\3\17\1\41\1\42"+ + "\1\43\3\41\7\0\1\44\1\45\1\0\1\46"; private static int [] zzUnpackAction() { - int [] result = new int[69]; + int [] result = new int[62]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -107,16 +106,15 @@ public final class TextLexer { private static final String ZZ_ROWMAP_PACKED_0 = "\0\0\0\32\0\64\0\116\0\150\0\202\0\234\0\202"+ "\0\202\0\266\0\202\0\320\0\352\0\u0104\0\202\0\202"+ - "\0\202\0\u011e\0\202\0\202\0\u0138\0\u0152\0\u016c\0\202"+ + "\0\202\0\u011e\0\202\0\202\0\u0138\0\u0152\0\202\0\202"+ "\0\202\0\202\0\202\0\202\0\202\0\202\0\202\0\202"+ - "\0\202\0\202\0\202\0\u0186\0\202\0\202\0\202\0\202"+ - "\0\202\0\202\0\202\0\u01a0\0\u01ba\0\u01d4\0\202\0\202"+ - "\0\202\0\202\0\202\0\202\0\202\0\202\0\202\0\u0186"+ - "\0\u01ee\0\u0208\0\u0222\0\u023c\0\u0256\0\u0270\0\u028a\0\202"+ - "\0\202\0\u01a0\0\u02a4\0\202\0\u0186"; + "\0\202\0\202\0\u016c\0\202\0\202\0\202\0\202\0\202"+ + "\0\202\0\202\0\u0186\0\u01a0\0\u01ba\0\202\0\202\0\202"+ + "\0\u0186\0\u01a0\0\u01d4\0\u01ee\0\u0208\0\u0222\0\u023c\0\u0256"+ + "\0\u0270\0\u028a\0\202\0\202\0\u0186\0\202"; private static int [] zzUnpackRowMap() { - int [] result = new int[69]; + int [] result = new int[62]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -146,36 +144,34 @@ public final class TextLexer { "\1\13\1\14\1\15\1\16\1\15\1\17\1\14\1\20"+ "\1\15\1\16\1\14\1\15\5\16\1\15\1\16\1\15"+ "\1\16\2\15\7\21\1\22\1\21\1\23\1\24\2\21"+ - "\1\25\14\21\7\26\1\27\1\30\1\10\3\26\1\10"+ - "\14\26\32\0\3\31\1\32\3\31\1\33\1\34\1\0"+ - "\3\31\1\0\1\35\1\36\1\37\1\40\1\41\1\42"+ - "\1\43\1\44\1\0\3\31\1\0\2\12\3\0\1\12"+ - "\4\0\2\12\2\0\5\12\1\0\1\12\1\0\1\12"+ - "\6\0\1\14\4\0\1\14\3\0\1\14\14\0\3\15"+ - "\2\0\3\15\3\0\2\15\1\0\15\15\2\16\2\0"+ - "\1\15\1\16\1\15\3\0\2\16\1\0\1\15\5\16"+ - "\1\15\1\16\1\15\1\16\2\15\7\31\1\45\1\31"+ - "\1\0\1\46\2\31\1\0\1\31\1\47\1\50\1\51"+ - "\1\52\1\53\1\31\1\54\1\0\1\55\1\56\1\31"+ - "\11\0\1\23\20\0\7\26\3\0\3\26\1\0\14\26"+ - "\7\57\1\60\1\61\1\0\3\57\1\0\1\57\1\62"+ - "\1\63\1\64\1\65\1\66\1\67\1\70\1\0\1\71"+ - "\2\57\2\0\1\72\2\0\2\72\4\0\1\72\3\0"+ - "\1\72\2\0\1\72\11\0\1\73\2\0\2\73\4\0"+ + "\1\25\23\21\1\26\1\27\1\10\3\21\1\10\14\21"+ + "\32\0\3\30\1\31\3\30\1\32\1\33\1\0\3\30"+ + "\1\0\1\34\1\35\1\36\1\37\1\40\1\41\1\42"+ + "\1\43\1\0\3\30\1\0\2\12\3\0\1\12\4\0"+ + "\2\12\2\0\5\12\1\0\1\12\1\0\1\12\6\0"+ + "\1\14\4\0\1\14\3\0\1\14\14\0\3\15\2\0"+ + "\3\15\3\0\2\15\1\0\15\15\2\16\2\0\1\15"+ + "\1\16\1\15\3\0\2\16\1\0\1\15\5\16\1\15"+ + "\1\16\1\15\1\16\2\15\7\30\1\44\1\30\1\0"+ + "\1\45\2\30\1\0\1\30\1\46\1\47\1\50\1\51"+ + "\1\52\1\30\1\53\1\0\1\54\1\55\1\30\11\0"+ + "\1\23\20\0\7\56\1\44\1\57\1\0\1\45\2\56"+ + "\1\0\1\56\1\46\1\47\1\50\1\51\1\52\1\60"+ + "\1\61\1\0\1\62\1\63\1\56\2\0\1\64\2\0"+ + "\2\64\4\0\1\64\3\0\1\64\2\0\1\64\11\0"+ + "\1\65\2\0\2\65\4\0\1\65\3\0\1\65\2\0"+ + "\1\65\11\0\1\66\2\0\2\66\4\0\1\66\3\0"+ + "\1\66\2\0\1\66\11\0\1\67\10\0\1\70\20\0"+ + "\1\71\10\0\1\72\20\0\1\73\2\0\2\73\4\0"+ "\1\73\3\0\1\73\2\0\1\73\11\0\1\74\2\0"+ "\2\74\4\0\1\74\3\0\1\74\2\0\1\74\11\0"+ - "\1\75\10\0\1\76\20\0\1\77\2\0\2\77\4\0"+ - "\1\77\3\0\1\77\2\0\1\77\11\0\1\100\2\0"+ - "\2\100\4\0\1\100\3\0\1\100\2\0\1\100\11\0"+ - "\1\101\2\0\2\101\4\0\1\101\3\0\1\101\2\0"+ - "\1\101\11\0\1\102\2\0\2\102\4\0\1\102\3\0"+ - "\1\102\2\0\1\102\11\0\1\75\10\0\1\75\1\103"+ - "\12\0\1\103\1\0\1\104\14\0\1\103\12\0\1\103"+ - "\1\0\1\104\2\0\1\105\2\0\2\105\4\0\1\105"+ - "\3\0\1\105\2\0\1\105\40\0\1\104"; + "\1\75\2\0\2\75\4\0\1\75\3\0\1\75\2\0"+ + "\1\75\11\0\1\67\10\0\1\67\1\72\12\0\1\72"+ + "\1\0\1\76\14\0\1\72\12\0\1\72\1\0\1\76"+ + "\2\0\1\71\10\0\1\71\15\0\1\76\31\0\1\76"; private static int [] zzUnpackTrans() { - int [] result = new int[702]; + int [] result = new int[676]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -214,11 +210,11 @@ public final class TextLexer { private static final String ZZ_ATTRIBUTE_PACKED_0 = "\5\0\1\11\1\1\2\11\1\1\1\11\3\1\3\11"+ - "\1\1\2\11\3\1\14\11\1\1\7\11\3\1\11\11"+ - "\2\1\6\0\2\11\2\0\1\11\1\0"; + "\1\1\2\11\2\1\14\11\1\1\7\11\3\1\3\11"+ + "\3\1\7\0\2\11\1\0\1\11"; private static int [] zzUnpackAttribute() { - int [] result = new int[69]; + int [] result = new int[62]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -301,7 +297,7 @@ public final class TextLexer { private StringBuilder string = null; private int repeatNum = 1; - + /** * Create an empty lexer, yyrset will be called later to reset and assign * the reader @@ -689,11 +685,11 @@ public final class TextLexer { case 1: { if (string == null) string = new StringBuilder(); string.append(yytext()); } - case 46: break; + case 39: break; case 2: { if (!parameter) { if (string == null) string = new StringBuilder(); string.append(yytext()); } } - case 47: break; + case 40: break; case 3: { parameter = true; yybegin(PARAMETER); @@ -703,47 +699,47 @@ public final class TextLexer { return new ParsedSymbol(SymbolType.TEXT, ret); } } - case 48: break; + case 41: break; case 4: { yybegin(VALUE); return new ParsedSymbol(SymbolType.PARAMETER_IDENTIFIER, yytext()); } - case 49: break; + case 42: break; case 5: { yybegin(YYINITIAL); parameter = false; } - case 50: break; + case 43: break; case 6: { } - case 51: break; + case 44: break; case 7: { return new ParsedSymbol(SymbolType.PARAMETER_VALUE, yytext()); } - case 52: break; + case 45: break; case 8: { return new ParsedSymbol(SymbolType.PARAMETER_IDENTIFIER, yytext()); } - case 53: break; + case 46: break; case 9: { string = new StringBuilder(); yybegin(STRING); } - case 54: break; + case 47: break; case 10: { string = new StringBuilder(); yybegin(OIDENTIFIER); } - case 55: break; + case 48: break; case 11: { for(int r=0;r { + \" { + yybegin(PARAMETER); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(PARAMETER); } +} + + { + "\u00A7" { + yybegin(PARAMETER); + // length also includes the trailing quote + return token(TokenType.REGEX, tokenStart, tokenLength + 1); + } + + {OIdentifierCharacter}+ { tokenLength += yylength(); } + + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(PARAMETER); } } /* error fallback */ diff --git a/src/com/jpexs/decompiler/flash/gui/GenericTagTreePanel.java b/src/com/jpexs/decompiler/flash/gui/GenericTagTreePanel.java index 16708690a..87e26a75c 100644 --- a/src/com/jpexs/decompiler/flash/gui/GenericTagTreePanel.java +++ b/src/com/jpexs/decompiler/flash/gui/GenericTagTreePanel.java @@ -917,7 +917,8 @@ public class GenericTagTreePanel extends GenericTagPanel { if (di.exportName()) { valStr += " = " + escapeHtml(Helper.escapeExportname(swf, val.toString(), true)); } else { - valStr += " = " + escapeHtml(DottedChain.parseNoSuffix(val.toString()).toPrintableString(new LinkedHashSet<>(), swf, di.as3())); + valStr += " = " + escapeHtml("\"" + Helper.escapePCodeString(val.toString()) +"\""); + //escapeHtml(DottedChain.parseNoSuffix(val.toString()).toPrintableString(new LinkedHashSet<>(), swf, di.as3())); } } else if (val instanceof byte[]) { valStr += " = " + ((byte[]) val).length + " byte"; diff --git a/src/com/jpexs/decompiler/flash/gui/generictageditors/StringEditor.java b/src/com/jpexs/decompiler/flash/gui/generictageditors/StringEditor.java index 58f481571..7f792755c 100644 --- a/src/com/jpexs/decompiler/flash/gui/generictageditors/StringEditor.java +++ b/src/com/jpexs/decompiler/flash/gui/generictageditors/StringEditor.java @@ -96,7 +96,8 @@ public class StringEditor extends JTextArea implements GenericTagEditor { if (di.exportName()) { newValue = Helper.escapeExportname(swf, newValue, false); } else { - newValue = DottedChain.parseNoSuffix(newValue).toPrintableString(new LinkedHashSet<>(), swf, di.as3()); + newValue = Helper.escapePCodeString(newValue); + //DottedChain.parseNoSuffix(newValue).toPrintableString(new LinkedHashSet<>(), swf, di.as3()); } } setText(newValue); @@ -115,7 +116,8 @@ public class StringEditor extends JTextArea implements GenericTagEditor { if (di.exportName()) { newValue = Helper.unescapeExportname(newValue); } else { - newValue = DottedChain.parsePrintable(newValue).toRawString(); + newValue = Helper.unescapePCodeString(newValue); + //DottedChain.parsePrintable(newValue).toRawString(); } }